The governance system enforces a proposer threshold (100k veToken) only at proposal creation, but fails to validate this requirement during critical actions like voting and execution. This enables proposers to reduce their stake after proposal creation while maintaining proposal validity.
Both vote and execute functions need threshold validation:
Attack path:
Proposer creates proposal with 100k veToken
Proposal passes voting
Proposer reduces stake to 10k veToken
No one calls cancel()
Proposal executes despite proposer losing legitimacy
Proposals remain valid despite the proposer losing the stake
Manual review
Add threshold validation to both functions:
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.