Vulnerability Disclosure: MMEV-exposed Proposals

On December 11 of this year Robert Forster (twitter) reported a governance attack vector recently made possible through multi-block MEV.

Essentially, it’s possible for an Ethereum validator to propose two blocks in a row. Because of this, it’s possible for the validator to:

In block 1:

  1. buy all of the POOL liquidity,
  2. Delegate POOL to themselves
  3. create a proposal

in block 2:

  1. vote yes on the proposal
  2. dump the POOL

The validator would only need to pay the exchange fees.

In this event, the validator would be able to create a proposal that transfers the entire treasury to themselves.

Compound and Uniswap have mitigated the issue by increasing the voting delay; thereby preventing the MMEV exploiter from voting on their proposal.

Our governance system, being a fork of the original Uniswap governor, is still susceptible to this attack.

However, we have two important lines of defense:

  1. We have a tremendous amount of active votes. We’d eliminate any malicious proposals no problem.
  2. Even if a malicious proposal sneaks by, we can cancel proposals whose proposers no longer hold POOL tokens. This is a kind of hidden feature; if someone creates a proposal they must have the delegated POOL tokens until the proposal is executed. Otherwise anyone may cancel the proposal.

Additionally, POOL liquidity on DEXs is quite thin and does not represent a threat. However, if that changes we’ll need to re-evaluate!

Many thanks to Robert Forster and his team at Ease! They have been paid a bounty of $2000 USDC Etherscan.

2 Likes

Additionally, POOL liquidity on DEXs is quite thin and does not represent a threat. However, if that changes we’ll need to re-evaluate!

I don’t see a good reason to leave something that we know could be an issue in the future in that stage, I would prefer to fix it first in case I forgot about it.

Can we just increase the voting delay too? :slight_smile:

Thanks Robert Forster & Ease

1 Like

Unfortunately, the voting delay is hard-coded, meaning it cannot be changed. This is why we would need to deploy a new Governor contract.

This is why I’m highlighting the issue; to promote awareness so that if someone wants to they can step up. I don’t have the bandwidth for this right now, but someone else may.

2 Likes