Optimism

Submit a Bug
14 January 2022
Live since
Yes
KYC required
$2,000,042
Maximum bounty

Program Overview

Optimism is a Layer 2 Optimistic Rollup network designed to utilize the strong security guarantees of Ethereum while reducing its cost and latency. Optimism is EVM equivalent, making the transition from L1 to L2 as seamless as possible. This means one-click deployments and full compatibility with most of the tooling Ethereum developers are accustomed to. It also means that with very few exceptions, existing Solidity smart contracts can run on Optimism exactly how they run on Ethereum.

For more information about Optimism, please visit https://www.optimism.io/.

This bug bounty program is focused on their smart contracts and on preventing:

  • Theft of assets held in their Bridge and Messenger smart contracts.
  • Theft, freezing or other loss of funds due to vulnerabilities in their fork of Geth.

Rewards by Threat Level

Rewards are distributed according to the impact of the vulnerability based on the Immunefi Vulnerability Severity Classification System. This is a simplified 5-level scale, with separate scales for websites/apps and smart contracts/blockchains, encompassing everything from consequence of exploitation to privilege required to likelihood of a successful exploit.

All smart contract bug reports must come with a PoC in order to be considered for a reward.

For KYC, OptimismPBC will request an invoice, with your name and address in order to payout the reward.

Any freezing of funds that is recoverable via an upgrade would be considered as High severity.

Critical vulnerabilities are further capped at 10% of economic damage, with the main consideration being the funds affected in addition to PR and brand considerations, at the discretion of the team.

However, there is a minimum of USD 75 000 for Critical bug reports.

Note: that there appears to be an obvious bug which would allow an attacker to withdraw a fake ERC20 token from L2 in exchange for a real ERC20 (such as WBTC) token on L1. There is no check in the L2StandardBridge, however the withdrawal is prevented from finalizing by a check in the L1StandardBridge. Naturally if you do find a way to circumvent our protections, then we would reward you.

For testing any exploits involving cross-domain transactions, we recommend working with our dockerized services and modifying our integration tests

The following known issues are considered to be out of scope of this bug bounty program:

  • The fact that their contracts are upgradable via a multisig.
  • The fact that fault proofs (FKA fraud proofs) are not yet running.
  • A bug in Lib_MerkleTrie.sol which will prevent withdrawals from succeeding in some cases. There is a workaround for this, by modifying the proof to add an extra element.
  • A bug in Lib_ResolvedDelegateProxy.sol which could result in a storage slot key collision overwriting the address of the implementation. This bug is dependent on the layout of the implementation contract, and Optimism is not affected.
  • The user cannot commit to a L1 gas price, the OVM_GasPriceOracle is owned by a key controlled by Optimism and is responsible for setting the L1 gas price.

Payouts are handled by the Optimism team directly and are denominated in USD. All payouts are done in USDC.

Smart Contract

Critical
Level
Up to USD $2,000,042
Payout
PoC Required
High
Level
USD $50,000
Payout
PoC Required

Assets in scope

All smart contracts of Optimism can be found at https://github.com/ethereum-optimism/optimism. However, only those in the Assets in Scope table are considered as in-scope of the bug bounty program.

Blockchain (Geth)

The relevant code for Optimism’s fork of Geth can be found here:

https://github.com/ethereum-optimism/optimism/tree/master/l2geth

Impacts in scope

Only the following impacts are accepted within this bug bounty program. All other impacts are not considered as in-scope, even if they affect something in the assets in scope table.

Smart Contract

  • Loss of user funds by permanent freezing or direct theft
    Critical
    Impact
  • Temporary freezing of funds for significantly longer than is enforced by the withdrawal delay
    High
    Impact

Out of Scope & Rules

The following vulnerabilities are excluded from the rewards for this bug bounty program:

  • Attacks that the reporter has already exploited themselves, leading to damage
  • Attacks requiring access to leaked keys/credentials
  • Attacks requiring access to privileged addresses (governance, strategist)

Smart Contracts and Blockchain

  • Incorrect data supplied by third party oracles
    • Not to exclude oracle manipulation/flash loan attacks
  • Basic economic governance attacks (e.g. 51% attack)
  • Vulnerabilities in the implementation of ‘custom token bridges’ which are written by third parties for bridging tokens to their network
  • Lack of liquidity
  • Best practice critiques
  • Sybil attacks
  • Centralization risks

Since Optimism uses a fork of Geth, issues which are responsibly disclosed to upstream cannot be "replayed" against Optimism’s bug bounty program if the vulnerability has already been made public. If the vulnerability is disclosed to Optimism at the same time as upstream Geth, the vulnerability is eligible for the bug bounty program.

The following known issues are considered to be out of scope of this bug bounty program:

The following activities are prohibited by this bug bounty program:

  • Any testing with mainnet or public testnet contracts; all testing should be done on private testnets
  • Any testing with pricing oracles or third party smart contracts
  • Attempting phishing or other social engineering attacks against our employees and/or customers
  • Any testing with third party systems and applications (e.g. browser extensions) as well as websites (e.g. SSO providers, advertising networks)
  • Any denial of service attacks
  • Automated testing of services that generates significant amounts of traffic
  • Public disclosure of an unpatched vulnerability in an embargoed bounty