Flow is a decentralized platform that anyone can access, everyone can trust, and no-one can censor or block. Flow is the future.
We appreciate and encourage the security researcher community to report potential vulnerabilities in our assets. Flow was built from the ground up with security in mind; our code, infrastructure, and development methodology help us keep our users safe.
| Target | Type | Severity |
|---|---|---|
https://github.com/onflow/flow-go Copy | Protocol | Critical |
https://github.com/onflow/crypto Copy | Protocol | Critical |
https://github.com/onflow/cadence Copy | Protocol | Critical |
https://github.com/onflow/atree Copy | Protocol | Critical |
https://github.com/onflow/ccf Copy | Protocol | Critical |
https://github.com/onflow/flow-core-contracts Copy | Smart Contract | Critical |
https://github.com/onflow/flow-evm-bridge Copy | Smart Contract | Critical |
Reports which follow the General and Target-specific Reporting Requirements in the Program Rules section are much more likely to be prioritized for review.
Reports that do not follow the reporting requirements might not receive a response.
This program accepts only Critical severity reports.
Severity: Critical Reward: **$100,000 USD.
A report qualifies as Critical if it demonstrates one or more of the following:
Note: Reward level depends on value at risk. The maximum reward is the lesser of $100,000 or the on-chain value at risk.
Flow Protocol
Flow ecosystem is working on progressively decentralizing the network by hardening the protocol level security and introducing permissionless nodes. For this reason, Flow still relies on protocol-compliant nodes and bounties are limited to permissionless node types. Only attacks originating from unstaked Access and observer nodes will qualify.
Protocol-level vulnerabilities which are only exploitable through the control of Collection, Consensus, Execution or Verification nodes are excluded.
To qualify for a Flow protocol reward, the vulnerability reproducer should use an unmodified version of flow-emulator on Flow localnet. If modifying the source code of any Flow component is necessary to reproduce the vulnerability, please describe each modification and why the vulnerability cannot be reproduced without modifying Flow components.
Security reports should not evaluate Atree as a standalone component, because Atree relies on some limits and security guarantees provided by other components in Flow (such as onflow/cadence and onflow/flow-go). Before submitting a report, please try to reproduce the vulnerability using a Cadence script running on an unmodified flow-emulator.
Reports are in scope only if they demonstrate a vulnerability in:
https://github.com/onflow/flow-evm-bridgeUFix64 and uint256 (decimals, rounding, truncation) that results in loss of escrowed funds.Out-of-scope
The following reports are not considered valid for Flow EVM Bridge:
totalSupply,flow-evm-bridge contracts, and instead reimplement similar logic in a separate local project.flow-evm-bridge contracts and do not demonstrate impact on bridge users will be treated as out of scope for this target.If you conduct your security research and vulnerability disclosure in accordance with the rules outlined in this policy, we will consider your research to be authorized. We will not initiate legal action against you, and we waive any claims under the Computer Fraud and Abuse Act (CFAA) or similar international anti-hacking laws.
Step 1: Start the emulator or localnet environment.
Step 2: Create and set up the victim account. Note: The victim account must deploy only intentionally correct contracts. Reports where the vulnerability exists solely due to a bug or mistake in the victim's own smart contract are not valid. The reproducer must demonstrate a flaw in the Flow protocol or Cadence runtime, not in user-deployed code.
Step 3: Record the state before the exploit - e.g. victim account's initial state (ideally by running a script created for this specific purpose). Include the full output in the report.
Step 4: Create and set up the attacker account.
Step 5: Execute the exploit. The exploit transaction must be signed exclusively by the attacker's account. Co-signing by the victim or any other privileged account invalidates the report.
Step 6: Demonstrate the vulnerability - e.g. victim’s account state change. Run the same state-checking script from Step 3 and include the full output in the report.
To be eligible for a monetary reward under this program, you must meet the following requirements:
The major recent Flow network upgrades include Crescendo and Forte upgrades. Those upgrades introduce major performance upgrades, full EVM equivalence and on-chain automation. Here are the key areas that underwent significant changes, and potential bugs that could arise.
Discover Cadence source code and Flow node software source code.
Cadence language
Cadence contract update mechanism
Cadence & EVM runtime environment Privilege elevation/bypassing sandbox protections for file system access controls, services/processes, and restricted memory access. For example:
Privilege elevation/escalation/unauthorized access
Scheduled Transactions
Onchain data