The burnFaucetTokens() function allows the contract owner to claim all faucet tokens by transferring the entire balance to owner and burn only amount that can be less than faucet balance
The owner should not be able to claim faucet tokens
The burnFaucetTokens() function first transfers the entire faucet token balance to the owner, then burns only the specified amountToBurn from the owner's balance. This means the owner receives balanceOf(faucet) - amountToBurn tokens.
Line: 132
High
Owner can bypass faucet limitations and claim all tokens.
Faucet can be drained in a single transaction.
Remaining ETH in the contract become locked.
High
Exploitable in one transaction by the owner.
No external contract or special conditions required.
Owner calls burnFaucetTokens(0).
Faucet transfers all tokens to the owner.
Zero tokens are burned.
Owner receives the entire faucet balance.
OwnerCanClaimTokenViaBurnFunction.t.sol: https://github.com/Luu-Duc-Toan/2025-10-raisebox-faucet/blob/master/test/OwnerCanClaimTokenViaBurnFunction.t.sol
Results:
Replace the transfer-and-burn logic with a direct burn from the faucet's balance:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
View preliminary resultsAppeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.