Description:
The RaiseBoxFaucet::burnFaucetTokensfunction is designed to allow the contract owner to burn a specific amount of faucet tokens.
However, before burning, it transfers the entire token balance held by the contract to the owner using:
This means that even if the owner intends to burn only a small portion (e.g., 1,000 tokens), they will receive all tokens held by the contract (e.g., 10,000 tokens),
and only the specified amount will be burned. The remaining tokens stay in the owner's wallet, which violates the principle of least privilege and could lead to misuse or inflation.
Impact:
1.Excess token transfer: Owner receives more tokens than intended.
2.Token supply distortion: Tokens meant to be burned are instead retained.
3.Trust and auditability concerns: Users and auditors may question the integrity of the faucet’s tokenomics.
4.Potential abuse: Owner could repeatedly call this function to drain tokens under the guise of burning.
Proof of Concept :
To verify the issue put this test on the RaiseBoxFaucet.t.sol
Recommended Mitigation:
Replace the full balance transfer with a transfer of only the amount intended to be burned in the RaiseBoxFaucet::burnFaucetTokens function.
Then verify the owner has enough balance and emit a burn event:
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.