Under normal conditions, when the protocol owner wants to burn faucet tokens, the function should transfer the specified amount to the owner and then burn exactly that amount.
In RaiseBoxFaucet.sol::burnFaucetTokens, instead of transferring the requested amountToBurn, the entire Faucet Token balance is transferred to the owner. The function then burns only the amountToBurn, leaving the remaining tokens in the owner’s balance.
Likelihood:
The issue occurs each time the owner invokes the RaiseBoxFaucet.sol::burnFaucetTokens function.
Impact:
The protocol will lose its entire Faucet Token balance, making it unable to provide tokens for users to claim, thus making the system non-operational.
This vulnerability also violates a core invariant: the owner should not be able to claim faucet tokens. However, due to this flaw, the owner effectively gains control over the Faucet Token supply by receiving the entire balance.
Add the following test to RaiseBoxFaucet.t.sol to reproduce the issue:
When performing the transfer, use the provided amountToBurn parameter instead of the full balance.
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.