Optimism

Submit a Bug
14 January 2022
Live since
Yes
KYC required
$2,000,042
Maximum bounty
08 April 2024
Last updated

Program Overview

Optimism is a project dedicated to scaling Ethereum's technology and expanding its ability to coordinate people from across the world to build effective decentralized economies and governance systems.

The OP Stack is the modular, decentralized software stack that powers Optimism, forms the backbone of blockchains like OP Mainnet and Base, and is maintained by the Optimism Collective .

The first release of the OP Stack codebase is called Bedrock. The Bedrock release primarily consists of the core software required to run L2 blockchains and was originally designed to power an upgrade to the OP Mainnet network. Bedrock improves on its predecessor by reducing transaction fees using optimized batch compression and Ethereum as a data availability layer; shortening delays of including L1 transactions in rollups by handling L1 re-orgs more gracefully; enabling modular proof systems through code re-use; and improving node performance by removing technical debt.

To read more about Optimism, please visit https://www.optimism.io/. To learn about the OP Stack, please visit https://stack.optimism.io/.

This bounty program is focused on preventing:

  • theft of assets held in their smart contracts;
  • theft, freezing or other loss of funds due to vulnerabilities in the smart contracts’ or the critical blockchain client services (op-node and op-geth).

Fault Proof Alpha Program overview

For information about the fault proof alpha bounty program, see the overview in the Optimism Monorepo.

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.

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.

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.

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.

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.

Known issues:

Blockchain / DLT:

When running in non-archive mode, op-geth has difficulty executing deep reorgs. We are working on a fix.

Smart Contracts:

  • 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.
  • The fact that their contracts are upgradable via a multisig.
  • The fact that fault proofs are not yet running.
  • A bug in 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.
  • There is an edge case in which ETH deposited to the OptimismPortal by a contract can be irrecoverably stranded:
    • When a deposit transaction fails to execute, the sender’s account balance is still credited with the mint value. However, if the deposit’s L1 sender is a contract, the tx.origin on L2 will be aliased, and this aliased address will receive the minted on L2. In general the contract on L1 will not be able to recover these funds. We have documented this risk and encourage users to take advantage of our CrossDomainMessenger contracts which provide additional safety measures.
  • Sending cross-chain messages with very large amounts of data, or very specific amounts of gas can open up griefing attacks causing the sender’s funds to be stuck and requiring an upgrade to release them.
  • Deposit transactions can be griefed at a cost to the attacker, by filling up the MAX_RESOURCE_LIMIT. This issue is mitigated by PR 5064, which does not completely resolve the issue but does increase the cost of a sustained griefing attack. A more complete fix will require architectural changes.
  • There are various ‘foot guns’ in the bridge which may arise from misconfiguration of a token. To minimize complexity our bridge design does not try to prevent all forms of developer and user error. Examples of such foot guns include:
    • Having both (or neither of) the local and remote tokens be OptimismMintable.
    • Tokens which dynamically alter the amount of a token held by an account, such as fee-on-transfer and rebasing tokens.

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

Blockchain/DLT

Critical
Level
Up to USD $2,000,042
Payout
High
Level
USD $50,000
Payout
Medium
Level
USD $15,000
Payout

Smart Contract

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

Assets in scope

Whenever the asset is a smart contract proxy, its implementation is also 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.

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.

Blockchain/DLT

  • Direct loss of funds
    Critical
    Impact
  • Network not being able to confirm new transactions (Total network shutdown)
    High
    Impact
  • Transient consensus failures
    High
    Impact
  • Freezing of funds (fix requires L2 hardfork)
    High
    Impact
  • Denial of Service attacks targeting distinct users
    Medium
    Impact
  • Memory pool information leaks allowing for MEV searchers to read the list of pending transactions
    Medium
    Impact

Smart Contract

  • Loss of user funds by direct theft, other than unclaimed yield
    Critical
    Impact
  • Permanent freezing of funds
    Critical
    Impact
  • Protocol Insolvency
    Critical
    Impact
  • Temporary freezing of funds (e.g. recoverable via an upgrade)
    High
    Impact
  • Issues in Fault Proof Alpha https://github.com/ethereum-optimism/optimism/tree/develop/docs/fault-proof-alpha/immunefi.md
    Low
    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