The emergencyRevoke()
function in RAACReleaseOrchestrator
has a critical vulnerability where beneficiaries can front-run the revocation to claim tokens:
The vulnerability exists because:
The emergencyRevoke()
function doesn't pause the contract or lock the beneficiary's ability to call release()
There's a window between:
When the revoke transaction is seen in the mempool
When it's actually executed on-chain
A beneficiary can exploit this in the following way:
Emergency revocation mechanism being partially or fully circumvented
Manual Review
Consider implementing a two-step revocation
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.