Two critical vulnerabilities exists in the BoostController's delegation function:
Delegated boosts remain active after the underlying veToken lock expires
Receivers can continue using expired delegations to obtain boosts
Both vulnerabilities stem from insufficient validation in the delegateBoost() function and related delegation checks.
The function fails to calculate the remaining time of a particular boost after being delegated.
1. Lock Expiry Not Validated: https://github.com/Cyfrin/2025-02-raac/blob/89ccb062e2b175374d40d824263a4c0b601bcb7f/contracts/core/governance/boost/BoostController.sol#L212
Only validates current veToken balance
Doesn't check delegator's lock expiry
No link between delegation expiry and lock expiry
No ongoing validation of lock status
. 2. Expired Delegation Usage:
Proof of code:
Add this code to your test file and run it:
Delegations continue after lock expiry
Undermines the entire veToken locking mechanism
Allows unauthorized boost allocation
Could lead to infinite delegation periods
Exploitation Path:
Receivers maintain boost power indefinitely
Exploitation Path:
My POC shows the complete exploitation path:
Initial setup with valid lock and delegation
Time manipulation to demonstrate expiry
Proof that delegation remains active
Proof that receiver can still use the expired delegation
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.