Sui.

Beitrag

Teile dein Wissen.

Benjamin XDV.
Jun 30, 2025
Experten Q&A

What Are Common Security Pitfalls in Sui Move Development?

I’m auditing a Sui Move smart contract and want to avoid critical vulnerabilities. From reviewing past exploits, I’ve seen: access control issues, arithmetic overflows, reentrancy risks, frontrunning, improper object ownership

Questions:

What are the most critical Sui Move vulnerabilities to watch for?

How does Move’s ownership model prevent/differ from traditional reentrancy?

Are there Sui-specific attack vectors (e.g., object spoofing)?

  • Sui
  • Architecture
5
2
Teilen
Kommentare
.

Antworten

2
Evgeniy CRYPTOCOIN.
Jun 30 2025, 18:08

Antwort

1. Die 5 wichtigsten Sicherheitslücken bei Sui Move

Unsachgemäße Zugangskontrolle

Risiko: Funktionen, die eingeschränkt werden sollten, können von jedem aufgerufen werden.

Beispiel:

move
public fun admin_withdraw(signer: &signer) { // No check!  
    withdraw_coins(signer, ...);  
}  

Korrigieren:

move
public fun admin_withdraw(signer: &signer, admin_cap: &AdminCap) {  
    assert!(address_of(signer) == admin_cap.admin, EUnauthorized);  
}  

Wichtiger Einblick: Verwenden Sie Capability Patterns (AdminCap, OwnerCap), um sensible Operationen einzudämmen.

Arithmetische Überläufe/Unterläufe

Risiko: Die u64-Mathematik läuft im Hintergrund ab (z. B. bei Salden, die auf 0 → 2^64-1 gehen).

Beispiel:

move
let total = user_balance + deposit_amount; // Overflow possible  

Korrigieren:

move
use sui::math;  
let total = math::checked_add(user_balance, deposit_amount)?;  

Profi-Tipp: Verwenden Sie immer:

math: :checked_* (add/sub/mul/div)

balance: :join () /split () für Münzen.

Rennbedingungen für gemeinsam genutzte Objekte

Risiko: Gleichzeitige Änderungen an gemeinsam genutzten Objekten (z. B. AMM-Pools) führen zu einem beschädigten Zustand.

Beispiel:

move
// Two TXNs read pool.reserves simultaneously → bad swap rates  

Korrigieren:

Verwenden Sie nach Möglichkeit ausschließlich &mut.

Entwerfen Sie für gemeinsam genutzte Objekte idempotente Operationen (z. B. erfordern Sie TXN-Digests als Nonces).

Vorteile von Sui: Das Typsystem von Move verhindert Wiedereintritte (im Gegensatz zu Solidity), aber gemeinsam genutzte Objekte können trotzdem gegeneinander antreten.

Frontrunning und MEV

Risiko: Miner ordnen TXNs neu an, um Werte zu extrahieren (z. B. Sandwich-Angriffe).

Beispiel:

move
// AMM swap with no slippage check:  
let dy = reserve_y * dx / reserve_x; // Miner can manipulate `reserve_x/y`  

Korrigieren:

Erforderliche Parameter min_received:


move
assert!(dy >= min_dy, EInsufficientOutput);  

Verwenden Sie Fristenschecks:

move
assert!(tx_context::epoch(ctx) <= deadline, EExpired);  
Phantom Type Confusion
Risk: Using the wrong type parameter (e.g., mixing Coin<USD> and Coin<USDC>).

Beispiel:

move
public fun merge_coins<C>(a: Coin<C>, b: Coin<C>) { ... }  
// Can be called with `Coin<USD>` and `Coin<USDC>` if `C` isn’t constrained!  

Korrigieren:

move
constraint C: store + drop; // Restrict valid types  

2. Sui-spezifische Angriffsvektoren

Objekt-Spoofing Risiko: Gefälschte Objekte, die über böswillige RPC-Aufrufe injiziert werden. Verteidigung:

Überprüfen Sie immer, ob Sie das Objekt besitzen (hat einen Schlüssel und ein Eigentümerfeld).

Verwenden Sie Positivlisten für Objekt-IDs für kritische Operationen.

Dynamisches Feld-Hijacking Risiko: Der Angreifer fügt Ihrem Objekt schädliche dynamische Felder hinzu. Verteidigung:

Objekte nur bei Bedarf mit Speicher markieren.

Verwenden Sie private Wrapper für sensible Daten.

5
Beste Antwort
Kommentare
.
0xduckmove.
Jun 30 2025, 18:52

Es gibt Artikel über bewährte Sicherheitsmethoden für Building on Sui. Es ist großartig, das zu überprüfen https://blog.sui.io/security-best-practices/

0
Kommentare
.

Weißt du die Antwort?

Bitte melde dich an und teile sie.