The Governance::cancel function in the governance contract contains a flawed logic check that allows anyone to cancel a proposal if the proposer’s voting power drops below the required threshold. This introduces a governance manipulation risk, where attackers can forcefully cancel legitimate proposals by temporarily reducing the proposer’s voting power (e.g., through delegation, unstaking, or flash loans). Such an exploit can be used to block governance decisions, prevent security upgrades, or disrupt fund allocations.
💥 Issue: If the proposer's voting power is manipulated below proposalThreshold, anyone can cancel the proposal even if the proposer still wants it to continue.
📌 What Happened?
The Beanstalk protocol, a DeFi stablecoin project, allowed governance votes based on token holdings.
Attackers took out a $1 billion flash loan, giving them temporary majority voting power.
They passed a proposal that transferred $182 million from the treasury to their own wallet.
💥 Relation to Your Exploit:
In your case, an attacker could use a flash loan to temporarily boost their voting power, remove delegations from the proposer, and cancel a critical proposal before repaying the loan.
📌 What Happened?
MakerDAO’s governance system allows users to delegate voting power.
There have been multiple documented attempts to bribe large delegates into shifting their votes at crucial moments.
Some proposals were deliberately blocked by suddenly shifting votes before they could pass.
💥 Relation to Your Exploit:
Attackers in your case could bribe delegates to remove delegation from the proposer, causing their voting power to drop below the threshold, allowing a proposal to be canceled.
📌 What Happened?
A malicious governance proposal was submitted to upgrade the Compound protocol with a backdoor.
The proposal would have passed, but voting power was manipulated at the last minute by large whales moving funds.
The attack failed, but it highlighted how voting power shifts can be used to influence governance decisions.
💥 Relation to Your Exploit:
Attackers in your case could strategically move voting power away from the proposer, ensuring that the proposal gets canceled before execution.
Modify the cancel() function to require explicit proposer approval:
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.