57938 sc medium produce function doesn t check if creator is the caller allowing frontrunning attacks
Description
// Signature validation - checks if signature is valid for the message
let message = ProduceHash {
name_hash: metadata_name_hash,
symbol_hash: metadata_symbol_hash,
contract_uri_hash: contract_uri_hash,
royalty_fraction: info.royalty_fraction,
creator_address: info.creator_address, // ← Signed creator_address
};
let hash = message.get_message_hash(signerAddress);
let is_valid_signature_felt = signer.is_valid_signature(hash, info.signature);
assert(
is_valid_signature_felt == starknet::VALIDATED || is_valid_signature_felt == 1,
super::Errors::VALIDATION_ERROR,
);
// NFT deployment uses CALLER, not creator_address
let mut nft_constructor_calldata: Array<felt252> = array![];
nft_constructor_calldata.append_serde(get_caller_address()); // ← Uses CALLER!
// ...
self.nft_info.write(
(metadata_name_hash, metadata_symbol_hash),
NftInfo {
creator: get_caller_address(), // ← Stored as CALLER!
// ...
},
);Impact
Attack Path
1
2
3
4
5
Recommendation
Proof of Concept
Previous57733 sc high swapexact s slippge is not works as expectedNext57348 sc insight incorrectly returned values and emitted data on staking emergency functionality
Was this helpful?