Once the MATURITY_DATE has been reached, users could redeem their ZENO tokens in exchange for USDC that they initially deposited through Auction::buy. However, the redeem function uses the amount of burnt ZENO token as an amount of USDC to transfer back to the user.
Since ZENO is a 18-decimal token and USDC is a 6-decimal token, the user can redeem ZENO and get an extremely large amount of USDC - much more that they initially deposited.
Here is the ZENO::redeem function:
https://github.com/Cyfrin/2025-02-raac/blob/89ccb062e2b175374d40d824263a4c0b601bcb7f/contracts/zeno/ZENO.sol#L46
We can see that the amount of burnt ZENO is also the amount to transfer USDC back to the user.
The user receives 18-decimal amount in terms of 6-decimal token.
A user could receive an extremely large amount of USDC.
Configure a pricing mechanism for redeeming ZENO. The decimals of the amount for sending USDC should correspond to the decimals of the USDC token.
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.