19 April 2023
Live since
Yes
KYC required
$500,000
Maximum bounty
01 May 2023
Last updated

Program Overview

Sui is a smart contract platform maintained by a permissionless set of validators that play a role similar to validators or miners in other blockchain systems.

Sui offers scalability and unprecedented low-latency for simple use cases. Sui makes most transactions processable in parallel. This better utilizes processing resources and offers the option to increase throughput by adding more resources. Sui forgoes consensus to instead use simpler and lower-latency primitives for simple use cases, such as payment transactions and assets transfer. This is unprecedented in the blockchain world and enables a number of new latency-sensitive distributed applications ranging from gaming to retail payment at physical points of sale.

For more information about Sui, please visit https://sui.io/

For Whitehats: It is highly recommended that you review the details of this program in full. Although many Bug Bounty programs have standard terms and conditions, each also has their own unique details that are critical to your success.

Prior to submitting a report please review the Immunefi Bug Report Template and Best Practices.

Rewards by Threat Level

Please review how rewards are distributed based on the Immunefi Vulnerability Severity Classification System V2.3. This is a simplified 5-level scale system with separate scales for Smart Contracts and Websites/Apps.

For “Loss of Funds” impact, Sui is looking for the following:

  • Unauthorized creation, copying, transfer or destruction of objects via bypass of or exploit of bugs in the Move or Sui bytecode verifier
  • Address Collision – creating two distinct authentication schemes that hash to the same SUI address in a manner that lead to significant loss of funds
  • Object ID collision—creating two distinct objects with the same ID in a manner that leads to significant loss of funds.
  • Unauthorized use of an owned object as a transaction input, resulting in significant loss of funds due to the inability to verify ownership and permission to transfer
  • Dynamically loading an object that is not directly or transitively owned by the transaction sender, in a manner that leads to significant loss of funds
  • Unauthorized upgrade of a Move package, in a manner that leads to significant loss of funds
  • Stealing staking rewards that belong to another user, or claiming more than a user’s share of staking rewards, not including rounding errors that result in a minor, financially insignificant discrepancy

For “Violating BFT assumptions, acquiring voting power vastly disproportionate to stake, or any other issue that can meaningfully compromise the integrity of the blockchain’s proof of stake governance” impact, it does not include the following:

  • Voting power that is redistributed because one or more other validators already has max voting power
  • Rounding errors that result in minor voting power discrepancies

Valid bug reports related to Blockchain/DLT safety will be eligible for the maximum bounty reward of $500,000 USD. Valid bug reports that are DoS/liveness related will be eligible for the minimum critical bounty reward amount of $100,000 USD

Payouts and Payout Requirements:

Payouts are handled by the Sui team directly and are denominated in USD. However, payouts are done in USDC via Coinlist in accordance with the requirements listed under "KYC Requirements" below. Sui commits to honoring payouts according to the terms set out in this program at the time of report submission, and to treat this program as the agreement and source of truth concerning bug reports and responsible disclosures.

For the purposes of determining report validity, this is a Primacy of Impact program.

Learn more about report validity best practices here: Best Practice - Primacy of Impact vs Primacy of Rules.

KYC Requirements

Sui does have a Know Your Customer (KYC) requirement for bug bounty payouts. KYC will be handled through Coinlist.

KYC Info Required:

  • Resident Street Address
  • Date of Birth
  • SSN if US Resident
  • Government Issued ID Card (Passport, Driver’s License, Identity Card)

KYC information is only required on confirmation of the validity of a bug report.

Audit Discoveries and Known Issues

Bug reports covering previously-discovered bugs are not eligible for any reward through the bug bounty program. If a bug report covers a known issue, it may be rejected together with proof of the issue being known before escalation of the bug report via Immunefi.

Previous audits and known issues can be found at:

  • In our staking contract, we have the concept of pool tokens and keep track of exchange rates between pool tokens and SUI tokens of all epochs, which increase as more rewards are added to the staking pools. When a user withdraws their stake, we retrieve from that record both the exchange rate at staking time and the current exchange rate (at withdrawing time), and calculate the rewards to be paid out based on the difference in exchange rates. While doing this calculation, we do conversions both ways: pool tokens -> SUI and SUI -> pool tokens. Rounding may happen along the way due to integer division. The exchange rate between the two tokens should stay roughly the same since we will be burning a proportional amount of pool tokens as SUI is withdrawn. However, in the extreme case where a user is unstaking 1 MIST, this rounding error may cause ZERO pool tokens to be burnt, causing the pool token to effectively depreciate. If an attacker has a lot of 1 MIST stakes, they can withdraw them one by one, causing the pool token exchange rate to drop and other takers to “lose” their staking rewards. I put quotation marks around “lose” because the attacker themselves won’t get any of that rewards so this attacker doesn’t actually make economic sense. Rather the rewards stay in the rewards pool and will become dust. This issue is mitigated by enforcing a minimum staking amount of 1 SUI or 10^9 MIST in this PR: https://github.com/MystenLabs/sui/pull/9961 Related Impact-in-Scope: Critical - Any other issue leading to theft or loss of valuable objects, with severity depending on the consequences of the issue and the preconditions for exploiting it.
  • Excessive storage rebate on 0x5 object right after epoch change: Each on-chain object is associated with a storage rebate, which would be refunded to the owner if it ever gets deleted. Epoch change transactions are special in that they are system transactions without a sender, hence any excessive storage rebate generated in that transaction is kept in the 0x5 object. This means that the first person touching the 0x5 object in each epoch may be able to obtain those excessive rebate by simply touching this object (e.g. a failed staking request). We will look into a way to evenly distribute those excessive rebates such that is does not lead to any undesired behaviors.

Blockchain/DLT

Critical
Level
USD $100,000 - $500,000
Payout
PoC Required
High
Level
USD $50,000
Payout
PoC Required
Medium
Level
USD $10,000
Payout
PoC Required
Low
Level
USD $5,000
Payout
PoC Required

Assets in scope

Impacts only apply to assets in active use by the project like contracts on mainnet or web/app assets used in production. Any impact that applies to assets not in active use, like test or mock files, are out-of-scope of the bug bounty program unless explicitly mentioned as in-scope.

Blockchain/DLT

  • Blockchain/DLT - PoC, Blockchain/DLT bug reports are to include a runnable Proof of Concept (PoC) in order to prove impact.
  • PoC is required for the testnet or mainnet branch in the Sui repo (not on the main or devnet branch)
  • For more information on PoCs please visit: Proof of Concept (PoC) Guidelines and Rules

Whitehats are highly encouraged to review any potential subdomains and what specific port(s) are in scope. Even though the domain may be the same, different ports may point to different assets.

Dev Environment and Documentation

Sui has included dev documentation and/or instructions to help in reviewing code and exploring for bugs:

Impacts to other assets

Hackers are encouraged to submit issues outside of the outlined Impacts and Assets in Scope.

If whitehats can demonstrate a critical impact on code in production for an asset not in scope, Sui encourages you to submit your bug report using the “primacy of impact exception” asset.

Impacts in Scope

(For Blockchain/DLTR and Smart Contracts Only) This program is considered to be governed by Primacy of Impact. For more information on what this means visit: Best Practice - Primacy of Impact vs Primacy of Rules.

Impacts are based on the Immunefi Vulnerability Severity Classification System V2.3.

At Immunefi, we classify bugs on a simplified 5-level scale:

  • Critical
  • High
  • Medium
  • Low
  • None

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

  • Exceeding the maximum supply of 10 billion SUI + allowing the attacker to claim the excess funds
    Critical
    Impact
  • Loss of Funds
    Critical
    Impact
  • Violating BFT assumptions, acquiring voting power vastly disproportionate to stake, or any other issue that can meaningfully compromise the integrity of the blockchain’s proof of stake governance.
    Critical
    Impact
  • Network not being able to confirm new transactions (total network shutdown) requiring a hard fork to resolve
    Critical
    Impact
  • Arbitrary, non-Move remote code execution on unmodified validator software
    Critical
    Impact
  • Temporary total network shutdown or unintended chain split (duration greater than 10 minutes)
    High
    Impact
  • A bug that results in unintended and harmful smart contract behavior with no concrete funds at direct risk
    Medium
    Impact
  • Unintended, permanent burning of SUI under the max cap
    Medium
    Impact
  • Shutdown of greater than or equal to 30% of network processing nodes without brute force actions, but does not shut down the network
    Medium
    Impact
  • Send a transaction that triggers an invariant violation error code in unmodified validator software
    Low
    Impact
  • A remote call that crashes a Sui fullnode
    Low
    Impact

Out of Scope & Rules

The following vulnerabilities are excluded from the rewards for this bug bounty program:

  • Impacts requiring attacks that the reporter has already exploited themselves, leading to damage
  • Impacts caused by attacks requiring access to leaked keys/credentials
  • Impacts caused by attacks requiring access to privileged addresses (governance, strategist) except in such cases where the contracts are intended to have no privileged access to functions that make the attack possible
  • Mentions of secrets, access tokens, API keys, private keys, etc. in Github will be considered out of scope without proof that they are in-use in production

Best practice recommendations:

  • Feature requests
  • Smart Contracts/Blockchain DLT
  • Incorrect data supplied by third party oracles
    • Not to exclude oracle manipulation/flash loan attacks
  • Impacts requiring basic economic and governance attacks (e.g. 51% attack)
  • Lack of liquidity impacts
  • Impacts from Sybil attacks
  • Impacts involving centralization risks

Websites and Apps

  • Theoretical impacts without any proof or demonstration
  • Impacts involving attacks requiring physical access to the victim device
  • Impacts involving attacks requiring access to the local network of the victim
  • Reflected plain text injection (e.g. url parameters, path, etc.)
    • This does not exclude reflected HTML injection with or without JavaScript
    • This does not exclude persistent plain text injection
  • Any impacts involving self-XSS
  • Captcha bypass using OCR without impact demonstration
  • CSRF with no state modifying security impact (e.g. logout CSRF)
  • Impacts related to missing HTTP Security Headers (such as X-FRAME-OPTIONS) or cookie security flags (such as “httponly”) without demonstration of impact
  • Server-side non-confidential information disclosure, such as IPs, server names, and most stack traces
  • Impacts causing only the enumeration or confirmation of the existence of users or tenants
  • Impacts caused by vulnerabilities requiring un-prompted, in-app user actions that are not part of the normal app workflows
  • Lack of SSL/TLS best practices
  • Impacts that only require DDoS
  • UX and UI impacts that do not materially disrupt use of the platform
  • Impacts primarily caused by browser/plugin defects
  • Leakage of non sensitive API keys (e.g. Etherscan, Infura, Alchemy, etc.)
  • Any vulnerability exploit requiring browser bugs for exploitation (e.g. CSP bypass
  • SPF/DMARC misconfigured records
  • Missing HTTP Headers without demonstrated impact
  • Automated scanner reports without demonstrated impact
  • UI/UX best practice recommendations
  • Non-future-proof NFT rendering

Prohibited Activities:

The following activities are prohibited by this bug bounty program. Violation of these rules can result in a temporary suspension or permanent ban from the Immunefi platform at the sole discretion of the Immunefi team, which may also result in: 1) the forfeiture and loss of access to all bug submissions, and 2) zero payout.

Please note that Immunefi has no tolerance for spam/low-quality/incomplete bug reports, “beg bounty” behavior, and misrepresentation of assets and severity. Immunefi exists to protect the global crypto community, not facilitate grift.

Prohibited:

  • Any testing with mainnet or public testnet deployed code; 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
  • Any other actions prohibited by the Immunefi Rules. These rules are subject to change at any time.