Flow is a decentralized platform that anyone can access, everyone can trust, and no-one can censor or block. Flow is the future.
In Scope
Target | Type | Severity | Reward |
---|---|---|---|
https://github.com/onflow/flow-go/tree/b06c18e6c33e6d6ebb346fe67889df7168a5f1a4 |
Smart Contract | Critical | Bounty |
https://github.com/onflow/crypto/tree/66aafb1becda2147a6afb48ee3176d9d2247eb3a |
Smart Contract | Critical | Bounty |
https://github.com/onflow/cadence/tree/60e6c727c55b5e90a5377a9453003d2859a45b1e |
Smart Contract | Critical | Bounty |
https://github.com/onflow/atree/tree/65ef01bba1413e270c80343ab7e27041e177456e |
Smart Contract | Critical | Bounty |
https://github.com/onflow/ccf/tree/03f3868aa96a2135ba238b5fc9067c56b55e396d |
Smart Contract | Critical | Bounty |
https://github.com/onflow/flow-core-contracts/tree/81b89f94c10988d4194fddbff137ac6798adc57b |
Smart Contract | Critical | Bounty |
https://github.com/onflow/flow-evm-bridge/tree/b32c787631c9c84c548b2e414d87b49fa32b12d8 |
Smart Contract | Critical | Bounty |
The following defines the rewards for Flow protocol and cadence:
Severity: Critical
Reward: $100,000 USD
Criteria:
- Emergency remediation
- Public announcement
- Hard-forking of a smart contract
Severity: High
Reward: $50,000 USD
Criteria:
- Immediate analysis and action is necessary
- Public disclosure in most cases
- Exploitation would significantly affect the Flow ecosystem
- Eventual fix of smart contract
Severity: Medium
Reward: $10,000 USD
Criteria:
- Remediation required, but impact is not significant
Severity: Low
Reward: $1000 USD
Criteria:
- Low risk issues like misconfigurations with no proven path to exploit
To qualify for a reward, the vulnerability must fall within our Assets In Scope, comply with our Responsible Disclosure Guidelines, and meet the following criteria:
- Previously unknown - When reported, we must not have already known of the issue, either by internal discovery or other report.
- Material impact - Demonstrable vulnerability where, if exploited, the vulnerability would materially affect the confidentiality, integrity, or availability of our assets.
- Requires action - The vulnerability requires some mitigation.
- Your participation is not prohibited by applicable law.
OUT OF SCOPE VULNERABILITIES (Smart Contracts)
- Theoretical vulnerabilities without any proof or demonstration
- Old compiler version
- The compiler version is not locked
- Vulnerabilities in imported contracts
- Code style guide violations
- Redundant code
- Gas optimizations
- Best practice issues
- Vulnerabilities that can be exploited through front-run attacks only
- Avoid using web application scanners for automatic vulnerability searching which generates massive traffic
- Make every effort not to damage or restrict the availability of products, services, or infrastructure
- Avoid compromising any personal data, interruption, or degradation of any service
- Don’t access or modify other user data, localize all tests to your accounts
- Perform testing only within the scope
- Don’t exploit any DoS/DDoS vulnerabilities, social engineering attacks, or spam
- Don’t spam forms or account creation flows using automated scanners
- In case you find chain vulnerabilities we’ll pay only for vulnerability with the highest severity.
- Don’t break any law and stay in the defined scope
- Any details of found vulnerabilities must not be communicated to anyone who is not a HackenProof Team or an authorized employee of this Company without appropriate permission
Flow was built from the ground up with security in mind. Our code, infrastructure, and development methodology help us keep our users safe.
We appreciate and encourage the security researcher community to report potential vulnerabilities in our assets.If you identify a vulnerability, please notify us using the following guidelines.
Things To Do:
- Make every effort to avoid unauthorized access, use, downloading, destruction, or disclosure of personal or confidential information.
- Avoid actions which could impact user experience, disrupt production systems, change, or destroy data during security testing.
- Use our provided communication channels to report vulnerability information to us.
- Keep information about any vulnerability you discover confidential between us for a reasonable time that will allow us to review and resolve the vulnerability or until we have notified you that the vulnerability has been resolved.
- Only test assets covered by the “Assets In Scope” section.
Things Not To Do:
- Do not include Sensitive Data in your reports. See the “Sensitive Data” section for further information.
- Do not perform any attack that may cause denial-of-service to the network, hosts, applications, or services on any port or protocol.
- Do not use automated scanners to crawl us or hammer endpoints.
- Do not attempt non-technical attacks such as social engineering, phishing, or physical attacks against our employees, users, or infrastructure.
- Do not perform physical testing such as office and data-center access (e.g., open doors, tailgating, card reader attacks, or physically destructive testing).
- Do not test assets explicitly listed in the “Assets Out of Scope” section.
We are happy to thank everyone who submits valid reports which help us improve the security. However, only those that meet the following eligibility requirements may receive a monetary reward:
- You must be the first reporter of a vulnerability.
- The vulnerability must be a qualifying vulnerability
- Any vulnerability found must be reported no later than 24 hours after discovery and exclusively through hackenproof.com
- You must send a clear textual description of the report along with steps to reproduce the issue, include attachments such as screenshots or proof of concept code as necessary.
- You must not be a former or current employee of us or one of its contractor.
- ONLY USE the EMAIL under which you registered your HackenProof account (in case of violation, no bounty can be awarded)
- Provide detailed but to-the point reproduction steps
Flow Protocol Exclusions:
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 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.
Web Application Exclusions:
The following web application vulnerabilities are excluded from this program:
- Clickjacking on pages with no sensitive actions.
- Cross-Site Request Forgery (CSRF) on unauthenticated forms or forms with no sensitive actions.
- Attacks requiring MITM or physical access to a user's device.
- Use of a known-vulnerable library without evidence of exploitability.
- Missing best practices in SSL/TLS configuration.
- Any activity that could lead to the disruption of our service or denial-of-service attack (DoS).
- Content spoofing and text injection issues without showing an attack vector/without being able to modify HTML/CSS.
- Rate limiting or brute force issues on non-authentication endpoints.
- Missing best practices in Content Security Policy (CSP).
- Missing HttpOnly or Secure flags on cookies.
- Missing email best practices (Invalid, or incomplete SPF/DKIM/DMARC records, etc.)
- Vulnerabilities only affecting users of outdated or unpatched browsers (i.e., less than two stable versions behind the latest released stable version).
- Software version disclosure, banner identification issues, or descriptive error messages or headers (e.g., stack traces, application, or server errors).
- Issues that require unlikely user interaction.
- Social engineering of Flow staff or contractors.
- Tabnabbing.
The Crescendo upgrade introduces major performance upgrades and full EVM equivalence. 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.
1. Cadence language
- New and updated functionality
- Circumvention of resource semantics, such as unauthorized construction, duplication, or use-after-destruction.
- Type confusion, such as using functionality designed for a certain type (parameter) with a value of another type.
2. Cadence contract update mechanism
3. Cadence & EVM runtime environment
Privilege elevation/bypassing sandbox protections for file system access controls, services/processes, and restricted memory access.
For example:
- Gaining control of the machine hosting the Cadence & EVM runtime environment (e.g., the node’s private keys) via adversarial transactions and/or smart contracts.
- Accessing private keys of a node hosting the Cadence & EVM runtime.
- Gaining access to the Random Number Generator's internal state, leading to reliable prediction of future outcomes of on-chain randomness (see Flow’s VRF for more details ).
4. Privilege elevation/escalation/unauthorized access
- Withdrawing from a FT vault without proper access.
- Hijacking another user's account.
- Accessing private data belonging to other users.
- Gaining inappropriate access to sensitive and/or private information, such as a contract accessing private fields of another contract.
- Making unauthorized changes to the application or its data.
- Bypassing business logic rules around account changes.
- Bypassing authorization and authentication mechanisms.
5. EVM gateaway
- Bugs or vulnerabilities in exposed API endpoints.
6. Onchain data
- Data corruption or loss.
- Unreachable data due to data migration or transaction/script execution.