initialize
functions can be frontrun
#185
Labels
1 (Low Risk)
Assets are not at risk. State handling, function incorrect as to spec, issues with comments
bug
Something isn't working
Handle
cmichel
Vulnerability details
The
initialize
function that initializes important contract state can be called by anyone.See:
MintableERC20.initialize
PolygonERC20Wrapper.initialize
Impact
The attacker can initialize the contract before the legitimate deployer, hoping that the victim continues to use the same contract.
In the best case for the victim, they notice it and have to redeploy their contract costing gas.
Recommended Mitigation Steps
Use the constructor to initialize non-proxied contracts.
For initializing proxy contracts deploy contracts using a factory contract that immediately calls
initialize
after deployment or make sure to call it immediately after deployment and verify the transaction succeeded.The text was updated successfully, but these errors were encountered: