Governance vulnerabilities in disclosed bug bounty reports

When voting power is cheap to rent and execution is fast to reach, governance is an attack surface with admin privileges attached.

Reports indexed
102
Total paid
$350k
Critical
0
Largest payout
$350k

Governance systems concentrate every privileged action behind one process, which makes flaws in that process equivalent to a compromise of the whole protocol. The findings split between acquiring voting power that should not be acquirable and executing a proposal that should not be executable.

On the acquisition side: voting weight counted at the current block instead of a snapshot, delegation that can be recycled within a transaction, and tokens that remain votable while deposited elsewhere. On the execution side: timelocks that can be bypassed through a queued call, proposal payloads that differ between the vote and the execution, and quorum computed against a supply the proposer can change.

Severity in this class is usually rated on what the successful proposal could reach, which is why so many of these reports are graded critical even where the exploit path is long.

What reviewers look for

  • Voting power read at the current block rather than from a snapshot
  • Delegation transferable within a single transaction
  • Timelock bypasses through queued or nested calls
  • Quorum measured against a supply the attacker can inflate
  • Proposal payloads mutable between voting and execution

Curated highlights

The largest disclosed payouts in this group, with our own summary of each. Every report links back to the original disclosure.

highGovernance attackEVM-Solidity$350k

Governance proposal executes arbitrary call via delegatecall module

A severe vulnerability in the governance timelock contract enabled proposal execution using DELEGATECALL without restricting the target address to a verified allowlist. Because the delegatecall target contract operated within the context of the timelock's storage without layout restrictions, a malicious proposal could overwrite key storage slots. An attacker leveraging flash loans or governance weight could pass a proposal that delegated to a custom contract, overwriting the timelock admin address in slot 0 to hijack governance authority and drain treasury funds.

DAO Treasurycode4renaJun 19, 2023Open
mediumGovernance attackEVM-Solidity$0

Yield Basis: The incorrect initialize of `specific_emissions_per_gauge` in `GaugeController::add_gauge()`

Yield Basis's GaugeController initializes a newly added gauge's per-gauge emission baseline from the controller's global specific_emissions value, which can be stale if the prior gauge checkpoint predates the addition. Because _checkpoint_gauge() skips the per-gauge bookkeeping when called in the same block as add_gauge() (the block.timestamp > t guard fails), the new gauge's baseline never advances past the older timestamp. On the next checkpoint the gauge is credited emission-weighted value for the entire stale window, letting it capture excess YB emissions it did not earn. The judge ruled this a medium-severity accounting flaw, and the fix is to initialize the new gauge with the current, updated specific_emissions.

Yield BasissherlockSep 8, 2025Open
mediumGovernance attackEVM-Solidity$0

Reserve: The default Governor Anastasius is unable to call `resetStakes`

In Reserve Protocol, executing a proposal through the default Governor Anastasius contract to call `resetStakes` permanently reverts. During execution, `resetStakes` increments the protocol's internal staking `era` variable. However, the governance contract checks that the proposal started in the current era *after* executing the call payload rather than before. As a result, the state change induced by `resetStakes` causes the trailing era validation check to fail, preventing governance from ever executing stake resets.

Reservecode4renaOct 3, 2024Open
mediumGovernance attackEVM-Solidity$0

Reserve: Dutch auctions can fail to settle if any other collateral in the basket behaves unexpectedly

In Reserve Protocol's BackingManager, settlement of Dutch auctions attempts to chain directly into collateral rebalancing using a Solidity try-catch block. The implementation assumes that receiving empty error data inside the catch block exclusively signals an out-of-gas condition. However, external operations during rebalancing—such as interactions with upgradeable collateral tokens or calls to empty contract addresses—can also revert with empty error bytes. As a result, unexpected reverts from collateral assets cause auction settlements to fail entirely, preventing trades from clearing at fair market value.

Reservecode4renaOct 3, 2024Open
highGovernance attackEVM-Solidity$0

BendDAO: Bad debt is never handled which places insolvency risks on BendDAO

BendDAO's current lending architecture lacks a formal mechanism for managing bad debt, creating significant solvency risk during market crashes. When the value of collateral falls below the borrowed debt, the protocol's liquidation logic fails to clear the outstanding balance, either because it cannot handle remaining debt after collateral exhaustion or because the liquidation is not economically profitable. This failure effectively traps liquidity within the protocol, preventing depositors from withdrawing their funds and resulting in an indefinite denial of service during insolvency events.

BendDAOcode4renaSep 3, 2024Open
mediumGovernance attackEVM-Solidity$0

BendDAO: `YieldEthStakingLido` lacks a limit on the max stake amount, which may result in the unstake exceeding `MAX_STETH_WITHDRAWAL_AMOUNT`, resulting in the token not being retrieved

The YieldEthStakingLido contract contains a logic flaw that prevents users from unstaking funds if their staked stETH balance exceeds Lido's 1,000 stETH limit per withdrawal request. Because the contract attempts to process the entire withdrawal amount in a single batch, any position exceeding this limit will cause the transaction to revert. This leads to a denial of service where user funds become locked within the YieldEthStakingLido contract with no mechanism to recover them.

BendDAOcode4renaSep 3, 2024Open

All reports in this group

Chains where this class shows up

Related vulnerability category pages