Ocean Protocol unlocks the value of data.
Data owners and consumers use the Ocean Market app to publish, discover, and consume data in a secure, privacy-preserving fashion. OCEAN holders lock tokens to earn rewards and curate data assets.
Developers use Ocean libraries to build their own data wallets, data marketplaces, and more.
Ocean datatokens wrap data services as industry-standard ERC721 NFTs and ERC20 tokens. This enables data wallets, data exchanges, and data co-ops by leveraging crypto wallets, exchanges, and other decentralized finance (DeFi) tools.
For more information about Ocean Protocol, please visit https://oceanprotocol.com/.
This bug bounty program is focused on their smart contracts and is focused on preventing:
- Direct theft of any user funds, whether at-rest or in-motion, other than unclaimed yield
- Permanent freezing of funds
- Unauthorized protocol changes
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 smart contracts, and blockchains/DLTs, focusing on the impact of the vulnerability reported.
All bug reports must come with a PoC with an end-effect impacting an asset-in-scope in order to be considered for a reward. Explanations and statements are not accepted as PoC and code is required.
The program establishes a maximum reward of USD 100,000, but no more than 100% of the economic damage caused within a four-week timeframe for reporting smart contract vulnerabilities. The team will consider the amount of funds affected and the impact on public relations and branding when determining the final reward. However, all valid reports of critical smart contract bugs are guaranteed a minimum reward of USD 30,000.
For this specific bounty program, the Ocean Protocol Foundation is allowing testing on their public testnets.
All known issues/PRs in the GitHub repositories of Ocean Protocol and the security audit report are considered out of scope.
In order to qualify for a reward through this Program, it is required that you have no current or prior affiliation as a vendor, contractor, or subcontractor with the Ocean Protocol Foundation.
The Ocean Protocol Foundation does not require KYC to be done for this program. However, bug bounty hunters submitting a report and wanting a reward will have to provide an invoice submitted via the Request invoicing platform. The invoice needs to include the details below:
- Email address
- Invoice date
- Description of bug bounty
- Granted amount (OCEAN)
- Payment details - crypto-wallet address
Payouts are handled by the Ocean Protocol Foundation team directly and are denominated in USD. However, payouts are done in OCEAN.
- Up to USD $100,000
- Up to USD $30,000
- Up to USD $5,000
Assets in scope
- Smart Contract - ERC721FactoryType
- https://github.com/oceanprotocol/contracts/blob/main/contracts/communityFee/OPFCommunityFeeCollector.solTargetSmart Contract - OPFCommunityFeeCollectorType
- Smart Contract - IDispenserType
- Smart Contract - IERC1271Type
- Smart Contract - IERC20Type
- Smart Contract - IERC20TemplateType
- Smart Contract - IERC721TemplateType
- Smart Contract - IERC725XType
- Smart Contract - IERC725YType
- Smart Contract - IFactoryRouterType
- TargetSmart Contract - IFixedRateExchangeType
- Smart Contract - IV3ERC20Type
- Smart Contract - IV3FactoryType
- Smart Contract - BFactoryType
- Smart Contract - DispenserType
- https://github.com/oceanprotocol/contracts/blob/main/contracts/pools/fixedRate/FixedRateExchange.solTargetSmart Contract - FixedRateExchangeType
- Smart Contract - FactoryRouterType
- Smart Contract - ERC20TemplateType
- https://github.com/oceanprotocol/contracts/blob/main/contracts/templates/ERC20TemplateEnterprise.solTargetSmart Contract - ERC20TemplateEnterpriseType
- Smart Contract - ERC721TemplateType
- Smart Contract - DeployerType
- Smart Contract - ERC20RolesType
- Smart Contract - ERC721RolesAddressType
- Smart Contract - OwnableType
- Smart Contract - SafeERC20Type
- Smart Contract - UtilsLibType
- Smart Contract - AddressType
- Smart Contract - ContextType
- Smart Contract - ERC165Type
- Smart Contract - ERC721Type
- Smart Contract - EnumerableMapType
- Smart Contract - EnumerableSetType
- Smart Contract - IERC165Type
- Smart Contract - IERC721Type
- TargetSmart Contract - IERC721EnumerableType
- TargetSmart Contract - IERC721MetadataType
- TargetSmart Contract - IERC721ReceiverType
- Smart Contract - StringsType
- Smart Contract - ERC725OceanType
- Smart Contract - Main DataFarming RewardsType
- Smart Contract - DataFarming StrategyType
All smart contracts of Ocean Protocol can be found at https://github.com/oceanprotocol/contracts/tree/v4main. 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.
- Direct theft of any user funds, whether at-rest or in-motion, other than unclaimed yieldCriticalImpact
- Permanent freezing of fundsCriticalImpact
- Unauthorized protocol changesCriticalImpact
- Temporary freezing of fundsHighImpact
- Unauthorized access to Ocean-published datasetsHighImpact
- A bug that could cause incorrect payouts of fee amountsHighImpact
- A bug that could prevent or delay a fee collector’s ability to process or retrieve paymentsHighImpact
- An economic attack outside the bounds of natural network activity that could result in >USD 10 000 of being lost that isn’t a known MEV attack.HighImpact
- A bug that could result in private information being stolen. This includes private keys, and information in Ocean-created data assets that was meant to remain private.HighImpact
- Smart contract unable to operate due to lack of token fundsMediumImpact
- Theft of gas, or unbounded gas consumptionMediumImpact
- Griefing (e.g. no profit motive for an attacker, but damage to users or protocol)MediumImpact
- A role in data NFT or datatoken getting rights that was outside of its design intentMediumImpact
- A bug that could cause the service functionality / utility to be degraded but not disabledMediumImpact
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)
- All known issues/PRs in the GitHub repositories of Ocean Protocol and the security audit report are considered out of scope.
- Issues reported on other branch than main
- Public deployments of the above repos. Deployments can be used as helpers, but penetration tests or similar are out of scope. Purpose of the bounty is to test the code in the repo.
Smart Contracts and Blockchain
- Natural network activity (e.g. swapping datatokens or adding liquidity to datatoken pools) whose involved mechanisms could result in unprofitable actions for the particular stakeholder (e.g. slippage, impermanent loss)
- Attacks related to multisig governance of addresses that control protocol changes
- Frontrunning, backrunning, sandwich attacks, and related known MEV attacks
- 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
- Centralization risks
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
- 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