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.
| Target | Type | Severity |
|---|---|---|
https://github.com/MystenLabs/sui/tree/testnet/crates/sui-node Copy Blockchain/DLT - Sui Network | Protocol | Critical |
https://github.com/MystenLabs/sui/tree/testnet/crates/sui-core Copy Blockchain/DLT - Sui Network | Protocol | Critical |
https://github.com/MystenLabs/sui/tree/testnet/crates/sui-types Copy Blockchain/DLT - Sui Network | Protocol | Critical |
https://github.com/MystenLabs/sui/tree/testnet/external-crates/move Copy Blockchain/DLT - Sui Move | Protocol | Critical |
https://github.com/MystenLabs/sui/tree/main/sui-execution/latest/sui-adapter Copy Blockchain/DLT - Sui Move | Protocol | Critical |
https://github.com/MystenLabs/sui/tree/main/sui-execution/latest/sui-verifier Copy Blockchain/DLT - Sui Move | Protocol | Critical |
https://github.com/MystenLabs/sui/tree/main/crates/sui-framework Copy Blockchain/DLT - Sui Framework | Protocol | Critical |
https://github.com/MystenLabs/sui/tree/main/crates/sui-bridge Copy | Protocol | Critical |
https://github.com/MystenLabs/sui/tree/main/bridge Copy | Protocol | High |
https://github.com/MystenLabs/deepbookv3 Copy | Smart Contract | High |
https://github.com/MystenLabs/seal/tree/main/crates/key-server Copy | Protocol | Critical |
https://github.com/MystenLabs/seal/tree/main/move/seal/sources / Copy | Smart Contract | Critical |
github.com/MystenLabs/sui/tree/bella-ciao Copy | Smart Contract | Critical |
Blockchain/DLT - Sui Network
Blockchain/DLT - Sui Network
Blockchain/DLT - Sui Network
Blockchain/DLT - Sui Move
Blockchain/DLT - Sui Move
Blockchain/DLT - Sui Move
Blockchain/DLT - Sui Framework
| Target | Type | Severity |
|---|---|---|
https://github.com/MystenLabs/sui/tree/testnet/crates/json-rpc Copy Blockchain/DLT - Sui Network | Protocol | Low |
https://github.com/MystenLabs/sui/tree/testnet/crates/json-rpc-types Copy Blockchain/DLT - Sui Network | Protocol | Low |
Blockchain/DLT - Sui Network
Blockchain/DLT - Sui Network
Only the following impacts are accepted. All other impacts are out of scope even if they affect in-scope assets.
| Impact | Severity |
|---|---|
| Exceeding the maximum supply of 10 billion SUI + allowing the attacker to claim the excess funds | Critical |
| Significant Loss of Funds | Critical |
| Violating BFT assumptions, acquiring voting power vastly disproportionate (20x) to stake, or any issue that can meaningfully compromise proof-of-stake governance integrity | Critical |
| Arbitrary, non-Move remote code execution on unmodified validator software | Critical |
| User fund exploits causing permanent locking, loss, or theft of funds greater than $20M | Critical |
| Forging of Native Bridge Messages enabling theft or illegitimate minting of assets greater than $3M with fully working PoC | Critical |
| Governance / Upgrade Bypass of Bridge Contract enabling theft or illegitimate minting of assets | Critical |
| Remote Code Execution on Bridge Nodes | Critical |
| Network unable to confirm new transactions (total shutdown) requiring a hard fork to resolve | Medium |
| Temporary total network shutdown or unintended chain split (duration greater than 10 minutes) | Medium |
| DoS attacks on bridge node that require a protocol upgrade to fix | Medium |
| Bug resulting in unintended and harmful smart contract behavior with no concrete funds at direct risk | Medium |
| Unintended, permanent burning of SUI under the max cap | Medium |
| Shutdown of >= 30% of network processing nodes without brute force, but does not shut down the network | Medium |
| Temporary locking of user funds that are part of the native bridge | Medium |
| Persistent XSS on Bridge Frontend that can lead to loss of user funds | Medium |
| DoS for Bridge Node | Medium |
| Bypass of Bridge limits | Medium |
| Transaction that triggers an invariant violation error code in unmodified validator software | Low |
| Remote call that crashes a Sui fullnode | Low |
| Impact | Severity |
|---|---|
| Vulnerabilities in Circuit Construction that can lead to Loss of funds | Critical |
| Impact | Severity | Payout |
|---|---|---|
| Bugs or attacks resulting in significant loss of funds, | Critical | $10,000 – $100,000 |
| Permanent freezing of funds, or permanent DoS/interruption on the CLOB requiring a protocol upgrade | High | $5000-$20,000 |
| Temporary DoS/interruption on the CLOB, temporary freezing of funds up to 1 epoch, users cannot claim rebates due to DoS | Medium | $1,000 – $5,000 |
| Minor loss of funds (<$100 USD), temporary DoS, inconsistent fee calculations | Low | $200 – $1,000 |
| Other low-severity issues | Informational |
DeepBook Known Exclusion: Limitations to number of orders that can be filled (only fill 100 orders/trade where gas costs increase dramatically) is a known issue and excluded from the bounty.
Seal is a decentralized secrets management (DSM) product. Application developers and users can use Seal to secure sensitive data at rest on decentralized storage. Seal enables identity-based encryption and decryption of sensitive data, with access controlled by on-chain policies on Sui.
| Impact | Severity | Payout |
|---|---|---|
| Retrieving a derived key without satisfying policies (or spoofing identity) | Critical | $50,000 – $100,000 |
| Remote extraction of the master key from key servers | Critical | $50,000 – $100,000 |
| Decryption of an encrypted blob without knowing the associated derived key or symmetric key | Critical | $50,000 – $100,000 |
| On-chain decryption misuse leading to forgery of encrypted decisions | High | $10,000 – $50,000 |
| Extending session key beyond specified TTL | Medium | $5,000 – $10,000 |
| DoS attacks on key servers requiring fix/hard restart (permissioned servers only; open mode/public goods servers are out of scope) | Low | $500 – $2,500 |
| Category ID | Category | Impact Ceiling | Max Payout |
|---|---|---|---|
fund_theft |
Fund Theft / State Corruption | CRITICAL | up to $1,000,000 |
verifier_bypass_theft |
Verifier Bypass (with fund-theft chain) | CRITICAL | up to $1,000,000 |
verifier_bypass_dos |
Verifier Bypass (DoS only) | MEDIUM | $5,000 |
cryptographic_theft |
Cryptographic (with fund access) | CRITICAL | up to $1,000,000 |
consensus_liveness |
Validator/Consensus (liveness only) | MEDIUM | $5,000 |
smart_contract |
Smart Contract logic (DeepBook v3, Seal, etc.) | MEDIUM | $5,000 |
bridge |
Bridge | MEDIUM | $5,000 |
network_dos |
Network/Node DoS | LOW | $1,000 – $5,000 |
| Economically Unfeasible | no material impact; lose money as an attacker. | NONE | $0 |
Key principle: The ceiling is determined by whether the bug can lead to direct fund loss. A verifier bypass that only crashes a node is capped at MEDIUM; the same bypass chained to unauthorized fund transfer is CRITICAL.
Previous audits and known issues can be found at: https://github.com/sui-foundation/security-audits
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.
Sui has included dev documentation and/or instructions to help in reviewing code and exploring for bugs:
https://docs.sui.io/ https://docs.sui.io/build/sui-local-network https://docs.sui.io/build/devnet https://github.com/MystenLabs/sui/blob/main/SECURITY.md
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.
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:
These are targets, not guarantees. Complex reports (consensus bugs, verifier bypasses) may require additional time for thorough reproduction.
Experimental features are not guaranteed to be deployed to the Sui mainnet. These features are often in early stages of development and may undergo significant changes or even be discontinued. We are eager for whitehats to focus on code that already is live in mainnet, or will be soon.
Experimental features are those specifically mentioned in this exclusion list, as well as any features labeled as experimental in the source code, not in testnet or related documentation. This tag serves to notify researchers that the feature is subject to special rules under the bug bounty program.
All payouts for vulnerabilities identified within the experimental feature will be ineligible for a bug bounty.
Composite Score = Impact_Type x Privilege_Required x Attack_Complexity x Scope
| ID | Level | Base Score | Description |
|---|---|---|---|
I4 |
Fund Theft | 10.0 | Unauthorized transfer of user funds |
I3 |
State Corruption | 8.0 | Supply violation, permanent corruption |
I2 |
Liveness | 5.0 | Chain halt, consensus stall |
I1 |
Degradation | 2.0 | Single-node DoS, resource exhaustion |
I0 |
Griefing | 0.0 | No material impact |
| ID | Level | Multiplier | Description |
|---|---|---|---|
P0 |
None | 1.0 | Unauthenticated / any user |
P1 |
Network participant | 0.9 | Holds SUI, can submit transactions |
P2 |
Staker / candidate | 0.6 | Significant stake required |
P3 |
Byzantine validator | 0.3 | Violates trust assumption |
P4 |
Admin / Quorum 51%+ | 0.1 | Already compromised |
| ID | Level | Multiplier | Description |
|---|---|---|---|
C0 |
Trivial | 1.0 | Single transaction |
C1 |
Low | 0.9 | Few transactions, straightforward |
C2 |
Medium | 0.7 | Multi-step, timing-sensitive |
C3 |
High | 0.5 | Race conditions, cross-epoch coordination |
C4 |
Impractical | 0.2 | Economically irrational |
| ID | Level | Multiplier | Description |
|---|---|---|---|
S2 |
Network-wide | 1.0 | All validators / all users affected |
S1 |
Multi-node | 0.7 | Subset of validators or users |
S0 |
Single-node | 0.4 | One validator / one node |
| Tier | Score Range |
|---|---|
| CRITICAL | 8.0 – 10.0 |
| HIGH | 5.0 – 7.9 |
| MEDIUM | 3.0 – 4.9 |
| LOW | 1.0 – 2.9 |
| INFORMATIONAL | 0.0 – 0.9 |
| Scenario | I | P | C | S | Score | Tier |
|---|---|---|---|---|---|---|
| Fund theft, no auth, trivial, network-wide | 10 | 1.0 | 1.0 | 1.0 | 10.0 | CRITICAL |
| Consensus halt, Byzantine validator, medium, network | 5 | 0.3 | 0.7 | 1.0 | 1.05 | LOW |
| Single-node OOM, no auth, trivial, single-node | 2 | 1.0 | 1.0 | 0.4 | 0.80 | INFORMATIONAL |
| Verifier bypass + theft, participant, low, network | 10 | 0.9 | 0.9 | 1.0 | 8.10 | CRITICAL |
| Bridge authority DoS, no auth, low, single-node | 2 | 1.0 | 0.9 | 0.4 | 0.72 | INFORMATIONAL |
| zkLogin cache bypass + fund theft, none, medium, network | 10 | 1.0 | 0.7 | 1.0 | 7.00 | HIGH |
| DeepBook rounding, participant, trivial, network | 2 | 0.9 | 1.0 | 1.0 | 1.80 | LOW |
| Tier | Score Range | Payout Range | Primary Qualifier |
|---|---|---|---|
| Critical | 8.0 – 10.0 | $50,000 – $1,000,000 | MUST involve direct fund loss |
| High | 5.0 – 7.9 | $5,000 – $50,000 | Fund risk or severe liveness impact |
| Medium | 3.0 – 4.9 | $2,000 – $10,000 | Significant liveness impact, no fund loss |
| Low | 1.0 – 2.9 | $500 – $2,500 | Node-level issues, minor logic bugs |
| Informational | 0.0 – 0.9 | $0 – $500 | Design gaps, theoretical |
| Tier | Payout |
|---|---|
| Critical | $10,000 – $100,000 |
| High | $5000-$20,000 |
| Medium | $1,000 – $5,000 |
| Low | $200 – $1,000 |
| Tier | Payout |
|---|---|
| Critical | $50,000 – $100,000 |
| High | $10,000 – $50,000 |
| Medium | $5,000 – $10,000 |
| Low | $500 – $2,500 |
Regardless of composite score, DoS bugs are subject to these ceilings:
| DoS Sub-type | Maximum Payout |
|---|---|
| Pre-auth network-wide DoS | $10,000 |
| Post-auth network-wide DoS | $5,000 |
| Single-validator DoS | $3,000 |
| Byzantine-validator-required DoS | $1,000 – $3,000 |
| OOM / resource exhaustion | $1,000 – $5,000 |
| Restart-recoverable DoS | 0.5x modifier on above |
These override the composite score when applicable:
| Category | Max Payout | Rationale |
|---|---|---|
| Any DoS (no fund loss) | $10,000 | Program policy |
| DoS requiring Byzantine validator | $3,000 | Trust assumption violated |
| Smart contract precision / rounding | $2,000 | Standard DeFi math |
| Bridge authority DoS | $3,000 | Committee redundancy |
| Griefing | $0 | Program policy |
| Intentional design features | $0 | NOT_APPLICABLE |
| Already-fixed (public PR before report) | $0 – $500 | Token payout only |
Note: For chain vulnerabilities (multiple linked bugs), only the vulnerability with the highest severity is paid.
These rules are applied during triage.
| Rule | Trigger | Action |
|---|---|---|
D1 |
“Could theoretically” without execution evidence | -1 to -2 tiers |
D2 |
Requires 51%+ quorum / admin access | Cap at INFORMATIONAL |
D3 |
Requires Byzantine validator | Cap at MEDIUM, $3K max |
D4 |
Infrastructure mitigation already exists | -1 tier |
D5 |
Targets deprecated code path | Cap at INFORMATIONAL |
D6 |
Economically irrational attack | -1 to -2 tiers |
D7 |
Fix PR predates report submission | Cap at INFORMATIONAL, $0-$500 |
D8 |
Testnet-only impact | Out of scope, $0 |
D9 |
Requires phishing / social engineering | Cap at LOW |
D10 |
DeFi integer precision / rounding | Cap at INFORMATIONAL |
D11 |
Reports intentional design as vulnerability | $0, NOT_APPLICABLE |
D12 |
Epoch-scoped impact (resets at epoch boundary) | -1 tier |
D13 |
Admin / localhost-only attack surface | Cap at INFORMATIONAL |
D14 |
DoS of any kind (no fund loss) | Cap at MEDIUM, $10K max |
The following receive $0 and may be closed without further triage:
The following impact types are excluded regardless of asset:
Smart Contract / Blockchain:
Web / Frontend:
These patterns recur frequently and are rejected on sight:
| ID | Pattern | Why It’s a False Positive |
|---|---|---|
FP-1 |
Bridge governance replay (missing nonce verification) | On-chain bridge.move:execute_system_message enforces sequential nonces per message type. Off-chain verifier TODO is optimization only. |
FP-2 |
DeepBook flash loan governance manipulation | process_proposal() reads actual account.active_stake() from on-chain state. 1-epoch staking lock prevents flash loans from affecting active stake. |
FP-3 |
Bridge mature message rate limiter bypass | Intentional design — 48-hour bypass is documented feature to unstick delayed transactions. Requires compromised committee keys. |
FP-4 |
Token supply u64 overflow (DEEP) | DEEP total supply is 10B tokens, far below u64::MAX (~18.4 quintillion). Must verify total_supply x scale_factor < u64::MAX. |
FP-5 |
MVR alias repoint attack | MVR names on mainnet are immutable once set. Repointing is testnet-only. |
FP-6 |
Bridge cross-chain nonce collision | BridgeCommittee is bound to specific chain_id at initialization. Chain compatibility check runs before any message processing. |
FP-7 |
DeepBook v2 vulnerabilities | Deprecated. Only DeepBook v3 is in scope. |
FP-8 |
Admin interface unauthenticated access | Admin endpoints are localhost-only. Local access already implies access to validator private keys. |
FP-9 |
DeepBook flash loan repayment bypass | Move hot potato (linear type) enforces repayment at compile time. FlashLoan has no drop ability. No runtime bypass possible. |
FP-10 |
DEEP oracle manipulation via TOB spoofing | Oracle uses 100-point rolling average (1 point/minute). Sustained manipulation requires emptying market maker book for 100+ minutes. Economically irrational. |
FP-11 |
Bridge governance threshold “too low” | Bridge governance requires 50%+ validator stake (full network compromise), not 34%. 34% is the BFT bound, not the governance bound. |
FP-12 |
Seal MVR alias repoint (key-server cache poisoning) | Same as FP-5. MVR aliases on mainnet are immutable. Cache poisoning via alias repoint is testnet-only. |
High-quality submissions may receive payout bonuses at the triage team’s discretion. Factors that positively influence payout include:
| Evidence | Effect |
|---|---|
| Transaction digests from local network | Quality bonus |
| Balance before/after for fund theft claims | Required for CRITICAL |
| Validator logs for DoS claims | Required for DoS |
| Fix patch provided | Quality bonus |
Use this template when submitting via HackenProof. Reports that follow this structure are triaged faster and receive more accurate severity assessments.
## Title
<!-- One-line summary: [Component] — [Root Cause] — [Impact] -->
<!-- Example: "sui-execution — DepthFormula::add() no-op on unit-variant enums — validator SIGABRT" -->
## Vulnerability Category
<!-- Pick ONE from: fund_theft, verifier_bypass_theft, verifier_bypass_dos,
cryptographic_theft, consensus_liveness, smart_contract, bridge,
network_dos, griefing -->
## Affected Component
<!-- Repository name + file path(s) + line number(s) -->
<!-- Example:
- Repository: MystenLabs/sui
- File: crates/sui-execution/src/verifier.rs
- Lines: 142-158
-->
## Affected Version
<!-- Git commit hash or release tag. "latest" is not accepted. -->
<!-- Example: commit abc1234 or release v1.57.3 -->
## Root Cause
<!-- 2-3 sentences explaining the code-level root cause.
Reference specific function names, types, and logic errors.
Do NOT just describe symptoms — explain WHY the bug exists. -->
## Impact
<!-- What can an attacker achieve? Be specific:
- For fund theft: whose funds, how much, what conditions
- For DoS: what crashes, how long, recoverable?
- For logic bugs: what invariant is violated, what state is corrupted
Do NOT use "could theoretically" — describe concrete impact. -->
## Attack Prerequisites
<!-- What does the attacker need?
- Authentication level (none / SUI holder / staker / validator / admin)
- Network conditions (single tx / multi-step / timing-sensitive)
- Economic cost of attack
-->
## Reproduction Steps
<!-- Numbered steps. Each step = one command or action.
Must be reproducible on a local network from a clean state. -->
1.Clone repository at commit `<hash>`
2....
3....
## Proof of Concept
<!-- Inline the COMPLETE, compilable PoC code below.
Do NOT link to external gists or repos — inline everything.
Accepted formats: Move test module, Rust test, shell script. -->
// or ```rust or ```bash
// COMPLETE compilable PoC here
## Execution Output
<!-- Paste actual stdout/stderr from running the PoC.
For fund theft: include balance before + after.
For DoS: include crash log or resource measurements.
For network bugs: include transaction digests. -->
## Suggested Fix (Optional)
<!-- Diff or description of how to fix the root cause. -->
[Component] — [Root Cause] — [Impact]. A good title lets
the triage team classify the report before reading the body.The following are known issues that have already been identified and addressed. Reports for these receive $0.
In our staking contract, we keep track of exchange rates between pool tokens and SUI tokens. When a user withdraws their stake, we calculate rewards based on the difference in exchange rates. Rounding may happen due to integer division. In the extreme case where a user is unstaking 1 MIST, zero pool tokens may be burnt, causing the pool token to effectively depreciate. If an attacker has many 1 MIST stakes, they can withdraw them one by one, causing the exchange rate to drop and other stakers to “lose” rewards. However, the attacker themselves gains nothing — the rewards remain as dust in the pool.
Mitigation: Minimum staking amount of 1 SUI (10^9 MIST) enforced via PR #9961.
Each on-chain object is associated with a storage rebate. Epoch change transactions are system transactions without a sender, so any excessive storage rebate generated is kept in the 0x5 object. The first person touching 0x5 in each epoch could obtain those excessive rebates (e.g., via a failed staking request).
Status: Under investigation for even distribution of excessive rebates.
Limitation to number of orders that can be filled (only fill 100 orders per trade, where gas costs increase dramatically with respect to a normal order) is a known design constraint and excluded from the bounty.