ETHEREUM Bounty Program

The Ethereum Bounty Program provides bounties for bugs. We call on our community and all bug bounty hunters to help identify bugs in the protocols and clients. Earn rewards for finding a vulnerability and get a place on our leaderboard. See Rules & Rewards section for details.

* No longer eligible for bounties, since October 2016. Martin now works for the Ethereum Foundation and, among other things, manages the bug bounty program.

News & Updates

2018-02-12: Barry Whitehat has been added to the leaderboard, for a discrepancy in how Geth vs Parity treated ‘future’ blocks. The discrepancy could potentially cause a mining minority be at a disadvantage. This has been fixed by aligning how Geth and Parity treats such blocks.

2018-01-16: See the blog for a security announcement concerning the Mist Browser. The Mist browser is not considered production software, and we will not pay full rewards for upstream bugs.

2017-12-13: Yoonho Kim, of team Hithereum, has scored another 5000 points; again for an RCE in Mist/Electron. Also, Peter Stöckli submitted a Mist-vulnerability which granted him 5000 points. Congratulations both! A very important reminder: the Mist browser is not secure for browsing the internet. Marcin Noga of Cisco/Talos security also submitted some issues to cpp-ethereum, which gained him 500 points.

2017-11-28: Juno Im, has scored another 5000 points; again for an RCE in Mist/Electron.

2017-10-09: Yoonho Kim, of team Hithereum, has scored 15000 points for a 0-day vulnerability (remote command execution) in Mist/Electron, which was subsequently patched upstream and made into the last Mist-release. Juno Im has been awarded another 500 points for a Geth access control issue.

2017-09-19: In order to get some extra eyes on the Byzantium implementations, we’ve temporarily increased the rewards: Between now and the Byzantium mainnet hardfork, we will double the ratio of points-to-USD for any vulnerabilities affecting cross-client consensus or Geth denial-of-service. A ‘High’ can thus yield up to $30K USD, and ‘Critical’ up to $50K USD. All Byzantium functionality is considered in-scope, as if it was already enabled on the mainnet.

2017-09-14: Harry Roberts has been awarded 5000 points for discovering a bug in how Solidity implemented ecrecover. See release notes for v0.4.14 for further details.

2017-05-31: Whit Jackson has been awarded 2000 points for hex-encoding ambiguities in EthereumJS, Christoph Jentzsch has been awarded 2000 points for the solidity optimizer bug, and ‘Tintin’ was awarded another 2000 points for a bug in a third-party component for CPP-ethereum.

2017-05-02: Yaron Velner has been awarded 1000 points for an ENS-submission, where by ENS second price could be manipulated via replay, forcing winners to pay the full amount offered.

2015-09-02: With Martin (@mhswende) finding another consensus protocol bug in the Python client, he’s now climbed ahead of nickler and we have a new leader on the leaderboard! We’ve also clarified reference to the Python client and it’s scope within the bounty program (see link below in the references).

2015-07-30: As we are launching Frontier, we will continue the bounty program throughout and at least until Homestead. One extension, and one change: From now on, core CPP libraries will be in scope as well. The genesis block inscription reward is altered to an entry in the namereg. Happy hunting!

2015-06-11: As the Ethereum clients are becoming more stable and secure, we’re happy to announce Proof-of-Work (Ethash) and the Go P2P implementation are now also in scope and eligibile for rewards. The develop branch is the target.

2015-03-19: The bounty program will remain running for at least the duration of the upcoming Ethereum frontier release. Please see the Ethereum blog for more information about Frontier!

2015-02-27: These scripts by Jonas Nick can be helpful to build the Ethereum Go client and test it. Please see the bash scripts for build commands and the python script for a simple example of calling the JSON-RPC API. Please note the currently known issues

2015-02-27: Another major vulnerability found by Jonas Nick. Awarded with 5 BTC, this exploit triggers a bug in the Ethereum VM to create ether out of thin air.

2015-01-30: Friendly reminder: Ethereum websites are out of scope for the bounty program and not eligible for rewards. With that said, we are thankful for submissions relating to webpage security and will work to fix these issues.

RULES & REWARDS

Please have a look at the bullets below before starting your hunt!

Issues that have already been submitted by another user or are already known to the Ethereum team are not eligible for bounty rewards.

Public disclosure of a vulnerability makes it ineligible for a bounty.

You can start or fork a private chain for bug hunting. Please respect the Ethereum main and test networks and refrain from attacking them.

Ethereum’s core development team, employees and all other people paid by the Ethereum project, directly or indirectly, are not eligible for rewards.

Anyone who works with the codebase as a professional Ethereum developer is not eligible for rewards.

Ethereum websites or Ethereum Foundation infrastructure in general, are NOT part of the bounty program.

Ethereum bounty program considers a number of variables in determining rewards. Determinations of eligibility, score and all terms related to an award are at the sole and final discretion of the Ethereum Foundation bug bounty panel.

The value of rewards paid out will vary depending on Severity. The severity is calculated according to the OWASP risk rating model based on Impact and Likelihood :

Reward sizes are guided by the rules below, but are in the end, determined at the sole discretion of the Ethereum Foundation bug bounty panel.

Critical: up to 25 000 points

High: up to 15 000 points

Medium: up to 10 000 points

Low: up to 2 000 points

Note: up to 500 points

1 point currently corresponds to 1 USD (payable in ETH or BTC), something which may change without prior notice.

OBS! Between 2017-09-19 and Byzantium hard-fork on Mainnet, each point corresponds to 2 USD for issues related to cross-client consensus or geth DoS vulnerabilities.

Beyond monetary rewards, every bounty is also eligible for listing on our leaderboard with points accumulating over the course of the program.

In addition to Severity, other variables are also considered when the Ethereum Foundation bug bounty panel decides the score, including (but not limited to):

Quality of reproducibility. Please include test code, scripts and detailed instructions. The easier it is for us to reproduce and verify the vulnerability, the higher the reward. Please see the wiki and repos to learn more about our test suite in the official documentation.

Quality of fix, if included. Higher rewards are paid for submissions with clear description of how to fix the issue.

Important Legal Information

The bug bounty program is an experimental and discretionary rewards program for our active Ethereum community to encourage and reward those who are helping to improve the platform. It is not a competition. You should know that we can cancel the program at any time, and awards are at the sole discretion of Ethereum Foundation bug bounty panel. In addition, we are not able to issue awards to individuals who are on sanctions lists or who are in countries on sanctions lists (e.g. North Korea, Iran, etc). You are responsible for all taxes. All awards are subject to applicable law. Finally, your testing must not violate any law or compromise any data that is not yours.

OPEN BOUNTIES

Our bug bounty program spans end-to-end: from soundness of protocols (such as the blockchain consensus model, the wire and p2p protocols, proof of work, etc) and protocol/implementation compliance to network security and consensus integrity. Classical client security as well as security of cryptographic primitives are also part of the program. Details on the scope follow:

Protocol security

The idea for Ethereum was initially published in the White Paper. This concept has been realized in a few protocols and algorithms up for scrutiny:

The blockchain consensus protocol, state engine and virtual machine as well as encodings and Merkle Patricia trees as specified in the Yellow Paper

Help identify flaws such as ones found in the yellow paper, relating to:

Conceptual security issues in the formal specification of the Ethereum protocol.

Misaligned / unintended economic incentives and game theoretic flaws.

Security weaknesses / attacks on the PoW algorithm.

A concrete example could be a contract that consumes very little gas but leads to a lot of computational effort effectively opening the door for DoS attacks.

Implementation security

Client protocol implementation security

Assuming that the protocols and algorithms are flawless, does a client implementation conform to the formal protocol specification? Issues could include:

Validations of blocks, transactions and messages

Ethereum Virtual Machine code execution

Transaction execution

Contract creation

Message calls

Calculation and enforcement of gas and fees

An example of a potential issue in this category is Bitcoin’s “zero-day” flaw, which required a hard-fork.

Network security

This category focuses on generalized attacks on the whole network or a subset of it:

51% and other X% attacks.

Finney attacks.

Sybil attacks.

Replay attacks.

Transaction / messages malleability.

(global) DoS.

Here is an example from bitcoin of a global network based DoS scenario.

References

FAQ

So, what should a good vulnerability submission look like?

Here is an example of a real issue which was previously present in the Go client:

Description: Remote Denial-of-service using non-validated blocks

Attack scenario: An attacker can send blocks that may require a high amount of computation (the maximum gasLimit) but has no proof-of-work. If the attacker sends blocks continuously, the attacker may force the victim node to 100% CPU utilization.

Reproduction: Send a block to a Go node that contains many txs but no valid PoW.

Details: Blocks are validated in the method Process(Block, dontReact). This method performs expensive CPU-intensive tasks, such as executing transactions (sm.ApplyDiff) and afterward it verifies the proof-of-work (sm.ValidateBlock()). This allows an attacker to send blocks that may require a high amount of computation (the maximum gasLimit) but has no proof-of-work. If the attacker sends blocks continuously, the attacker may force the victim node to 100% CPU utilization.

Fix: Invert the order of the checks.

So, the bug bounty program is time limited?

No end date is currently set. See the “News & Updates” section above, and the Ethereum blog for the latest news.

How are bounties paid out?

Rewards are paid out in ETH or BTC after the submission has been validated, usually a few days later. Local laws require us to ask for proof of your identity. In addition, we will need your ETH/BTC address.

Can I donate my reward to charity?

Yes. We can donate your reward to an established charitable organization of your choice.

I reported an issue / vulnerability but have not received a response!

We aim to respond to submissions as fast as possible. Feel free to email us if you have not received a response within a day or two.

I want to be anonymous / I do not want my name or nick on the leader board.

Submitting anonymously or with a pseudonym is OK, but will make you ineligible for BTC rewards. To be eligible for BTC rewards, we require your real name and a proof of your identity. Donating your bounty to a charity doesn’t require your identity.

Please let us know if you do not want your name/nick displayed on the leader board.

What are the points in the leaderboard?

Every found vulnerability / issue is assigned a score. Bounty hunters are ranked on our leaderboard by total points.