The Graph
Submit a BugProgram Overview
The Graph is an indexing protocol for querying networks like Ethereum and IPFS. It is a decentralized network comprised of multiple stakeholders incentivized to build and offer an efficient and reliable open data marketplace, through GraphQL-based APIs.
The Graph learns what and how to index Blockchain data based on subgraph descriptions, known as the subgraph manifest. The subgraph description defines the smart contracts of interest for a subgraph, the events in those contracts to pay attention to, and how to map data to data that The Graph will index and store in its decentralized network, to be served by Indexers. Indexers are network participants responsible for running their own infrastructure capable of indexing subgraphs and subsequently serve such data.
The network is fully permissionless, meaning that every stakeholder can design, implement and deploy subgraphs, with Indexers choosing which subgraphs to index based on a number of factors such as Curators’ interest (signaling high-quality ones which may result in high query volume). Delegators are another key network participant in this open data economy, who delegate their stake towards Indexers, receiving, in turn, a portion of both network rewards and fees from subsequently served queries. Like Delegators, Curators also receive a portion of the query fees, when staking their own GRT in a subgraph’s bounding curve (signaling).
For more information about The Graph, please visit their website at https://thegraph.com/.
The bug bounty program, managed and funded by The Graph Foundation, is focused on the prevention of negative impacts to the whole ecosystem, such as:
- Loss of User Funds
- Exposure of private information (keys, PII)
- Determinism bugs that could lead to incorrect or inconsistent query results by Indexers in the network
- Vulnerabilities in the Indexer software (eg. Graph Node, Indexer CLI) that could result in the Indexer being slashed or not running effectively
- Vulnerabilities that could degrade the indexing or querying service
- Bugs that could facilitate Sybil attacks
Bug bounty hunters submit bug reports at their own risk of being rejected as a known issue.
Rewards by Threat Level
Rewards are distributed according to the impact of the vulnerability based on the Immunefi Vulnerability Severity Classification System V2.2. This is a simplified 5-level scale, with separate scales for websites/apps and smart contracts/blockchains, encompassing everything from the consequence of exploitation to privilege required to the likelihood of a successful exploit.
Rewards for critical vulnerabilities are capped at 10% of economic damage, primarily focusing on the possible loss of funds for Indexers, Delegators, and Curators at Smart Contract level only, but also taking into consideration other aspects such as branding and PR, at the discretion of The Graph Foundation.
Final reward amounts for High, Medium, and Low, for web/app assets will be decided by The Graph Foundation based on factors such as economic impact, likelihood of being exploited, and thoroughness of the bug report. Though this bug bounty program takes into consideration the severity classification system, the primary baseline before further consideration is the Impacts in Scope table, though that itself isn’t the final determinant. The Graph Foundation may also reward more than the maximum published amount at its discretion.
In order to qualify for a reward, bug bounty hunters will need to provide KYC through https://register.thegraph.com and share the following information:
- E-mail address;
- Name;
- Wallet address the GRT should be sent to. This address must correspond the same listed in the report. Additionally, all bug reports must come with log components, reproduction, and data about vulnerabilities to support learnings and bug fixes. This can be satisfied by providing relevant screenshots, docs, code, and steps to reproduce the issue.
Payouts are handled by The Graph Foundation and are denominated in USD. All payouts are done in GRT, following the GRT price at transaction time.
Blockchain/DLT
- Critical
- Level
- Up to USD $2,500,000
- Payout
- High
- Level
- Up to USD $200,000
- Payout
- Medium
- Level
- Up to USD $20,000
- Payout
- Low
- Level
- Up to USD $5,000
- Payout
Smart Contract
- Critical
- Level
- Up to USD $2,500,000
- Payout
- High
- Level
- Up to USD $200,000
- Payout
- Medium
- Level
- Up to USD $20,000
- Payout
- Low
- Level
- Up to USD $5,000
- Payout
Websites and Applications
- Critical
- Level
- Up to USD $50,000
- Payout
- High
- Level
- Up to USD $20,000
- Payout
- Medium
- Level
- Up to USD $5,000
- Payout
- Low
- Level
- Up to USD $5,000
- Payout
Assets in scope
- Blockchain/DLT - Graph Node (Indexer Software Stack)Type
- Blockchain/DLT - Agora (Indexer Software Stack)Type
- Blockchain/DLT - Indexer (Indexer Software Stack)Type
- Blockchain/DLT - Indexer Allocation OptimizerType
- Smart Contract - controllerType
- Smart Contract - graphTokenType
- Smart Contract - epochManagerType
- Smart Contract - disputeManagerType
- Smart Contract - stakingType
- Smart Contract - curationType
- Smart Contract - rewardsManagerType
- Smart Contract - serviceRegistryType
- Smart Contract - GNSType
- Smart Contract - GraphTokenLockManager (Token Distribution https://github.com/graphprotocol/token-distribution)Type
- Smart Contract - GraphTokenLockWallet (Token Distribution https://github.com/graphprotocol/token-distribution)Type
- Websites and Applications - ExplorerType
- Websites and Applications - StudioType
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
- A bug that could cause incorrect payouts of query fees or indexing rewardsCriticalImpact
- An economic attack that could result in Indexers, Curators or Delegators losing a significant amount of funds or being exploitedCriticalImpact
- A bug that could cause network participants to be impersonated and unwanted actions being taken (eg. funds being transferred)CriticalImpact
- A bug that could cause significant (>$1M) funds being lost (not including slashing)CriticalImpact
- A bug in the default Indexer software that could result in private information being stolenHighImpact
- A bug that could cause network disruption at Indexer and Gateway level, taking at least 50% of both Gateways and Indexer nodes downHighImpact
- A bug that could lead to non-deterministic syncing of subgraph data (graph node only)HighImpact
- A bug that could halt or delay an Indexer’s ability to process a query or receive paymentsMediumImpact
- A bug in the default Indexer software that could result in a “halt" or an impact on livenessMediumImpact
- A griefing attack on the services provided or network participantsMediumImpact
- A bug whereby an attacker does not pay sufficient GRT fees for the load they exert on the networkLowImpact
- A vulnerability that could cause inaccurate query data to be servedLowImpact
- A vulnerability that could cause two or more Indexers to provide different results for the same query when the approved code is runLowImpact
- A bug that could cause the service functionality, throughput, or utility to be degraded but not disabledLowImpact
Smart Contract
- A bug that could cause significant (>$1M) funds being lost (not including slashing)CriticalImpact
- Private information being stolenHighImpact
- A bug in a smart contract that could result in a “halt" or an impact on livenessMediumImpact
Websites and Applications
- A bug that could cause significant (>$1M) funds being lost (not including slashing)CriticalImpact
- Halt application functionality for majority of usersCriticalImpact
- A bug that could allow impersonating other users, leading to negative impact to network participants through loss of fundsHighImpact
- A bug that could cause the service (Studio or The Graph’s decentralized network) functionality, throughput, or utility to be degraded but not disabled for other network participantsMediumImpact
- A bug that allows remote code execution resulting in private information being stolenMediumImpact
Out of Scope & Rules
There are several known potential exploits on Ethereum and The Graph infrastructure. Bounty hunters will not be rewarded for reporting these:
- Frontrunning, including backrunning and sandwich attacks
- Known issues previously reported in security audits are out of scope. All protocol audits can be found here: https://www.notion.so/thegraphfoundation/External-Protocol-Audits-95b73b22af3341b6933d74465f5f7059
- Specifically related to OpenZeppelin’s “The Graph Protocol Audit” (August 31, 2020), C01 and C02 have already been addressed by the core dev team. More on C02 can be found here: https://forum.thegraph.com/t/openzeppelin-protocol-audit-prysm-groups-c02-economic-attack-resolution-summary/3280?u=pedro
- Natural network activity like curation whose involved mechanisms could result in unprofitable actions for the particular stakeholder
Additionally, all of the following vulnerabilities and bug report types are not considered as in-scope in this bug bounty program:
- Attacks that the reporter has already exploited themselves, leading to damage
- Attacks that rely on social engineering
- Attacks requiring access to leaked keys/credentials
- Incorrect data supplied by third party oracles
- Not to exclude oracle manipulation/flash loan attacks
- Basic economic governance attacks (e.g. 51% attack)
- Lack of liquidity
- Best practice critiques
- Sybil attacks
Rules and Requirements All bounty hunters must abide by rules when reporting bugs to be eligible for rewards. We appreciate your cooperation.
Report Responsibly
Report vulnerabilities to The Graph first by submitting a bug report on Immunefi, to mitigate attacks and in the best interest of the network’s safety. Give reasonable time for The Graph to fix the bug before sharing publicly.
Don't Exploit Reported Bugs
Do not exploit bugs in the code to gain an advantage or conduct malicious activity in the network. No hacking or social engineering of other network users.
Don’t Violate Privacy
Do not violate the privacy of network users, other bounty hunters, or The Graph.
Don’t Attack or Defraud The Graph
Do not attack The Graph team, operations, or technology (eg. DDOS attack, spam, social engineering) or defraud The Graph team or network users.
Please also note reporting requirements:
- Bugs will only be rewarded once for successful reporting and confirmation of fix to the first person to report the bug.
- Vulnerabilities must be reproducible by The Graph team (please include all relevant links, docs, and code)
- Single vulnerabilities can be submitted per form, multiple submissions for the same vulnerability will not be counted
- Bounty hunters can submit multiple bug reports
- Public disclosure of the vulnerability prior to resolution may cancel a pending reward. We reserve the right to disqualify individuals from the program for disrespectful or disruptive behavior.
- The Graph and affiliates will not negotiate in response to duress or threats (e.g., we will not negotiate the payout amount under threat of withholding the vulnerability or threat of releasing the vulnerability or any exposed data to the public).