The ZENO
contract's constructor accepts a _maturityDate
parameter without validating if it's set to a future timestamp. Since this value is immutable and used to determine token redeemability, setting it to a past timestamp or zero would permanently prevent users from redeeming their tokens.
In the constructor:
The isRedeemable()
function uses this timestamp to determine if tokens can be redeemed:
If MATURITY_DATE
is set to 0 or a past timestamp during deployment:
isRedeemable()
will always return false
All redeem attempts will revert due to the BondNotRedeemable()
check
Users' tokens will be permanently locked in the contract
it can result in permanent loss of user funds
No way to modify the maturity date after deployment due to immutability
Affects all users who mint tokens in the affected contract instance
Manual
Add validation in the constructor to ensure the maturity date is set to a future timestamp
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.