Description The s_zkSyncUSDC
address in the Deploy.s.sol
script is set to an invalid address 0x1D17CbCf0D6d143135be902365d2e5E2a16538d4
. This address is not the valid USDC token address, and as such, the contract will not be able to transfer the tokens to the users (as the underlying "token" contract will not have any transfer
functionality), leading to a DoS attack. The valid address is the one passed to the IERC20
contract in the Deploy.s.sol
script - 0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4
Impact As the MerkleAirDrop
will have an invalid IERC20
token which has no token-like functionality, the contract will not be able to transfer the tokens to the users, rendering the protocol useless.
Proof of Concept The DoS attack is shown in the MerkleAirdropTest::test_deploy_script_uses_invalid_erc20_address
test. For the sake of the test, the IERC20
token contract in the Deploy.s.sol
script was changed to use a mock contract which has no ERC20 token capabilites - NotERC20Token
.
Tools used Manual review
Recommended Mitigation Use the correct USDC token address in the Deploy.s.sol
script.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.