The ZENO
contract contains a critical vulnerability in its redeem
and redeemAll
functions where token redemption calculations fail to account for decimal scaling between ZENO
(18 decimals) and USDC
(6 decimals). This mismatch leads to the contract attempting to transfer 1e12 times more USDC
than intended, causing all redemptions to fail due to insufficient USDC
balance.
In both redeem
and redeemAll
functions, ZENO
tokens are burned and USDC
is transferred without accounting for decimal differences:
When a user attempts to redeem 1 ZENO token:
Input amount = 1e18 (1 ZENO in base units)
Contract burns 1e18 ZENO (correct)
Contract attempts to transfer 1e18 USDC (should be 1e6)
Transfer fails as contract has insufficient USDC
Complete denial of service for token redemptions as the USDC transfer will always fail
All redemption functionality is blocked, preventing users from claiming their USDC
Manual Review
Fix the decimal scaling in both functions:
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.