57929 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
Recommendation
Proof of Concept
Previous57723 sc medium signature replay front run and timing control issuesNext57284 sc medium updating minimum staking period griefs previously unlocked users
Was this helpful?