USDC decimals are not accounted in ZENO.redeem()
, which allows to steal all USDC from ZENO
.
Per docs and code, USDC
will be used to buy ZENO
tokens. In auctiion users will pay scaled amount of USDC
using dynamic price calculation due to low decimals (6). But USDC
decimals are not accounted in ZENO.redeem()
, and convertion rate is always 1:1, which is wrong, because ZENO
has default 18 decimals.
For example, price of 1 ZENO
at the moment when user called Auction.buy()
was 1 USDC
. User bought 100 ZENO
(100e18). Now user can withdraw 100 USDC
(100e6) only for 0.0...001 ZENO
(100e6).
User can steal all USDC
from Zeno contract by redeeming ZENO
.
Manual review.
Use convertion rate when redeeming ZENO
and scale USDC
amount to 18 decimals.
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.