Sui.

Bài viết

Chia sẻ kiến thức của bạn.

Benjamin XDV.
Jun 30, 2025
Hỏi đáp Chuyên Gia

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
Chia sẻ
Bình luận
.

Câu trả lời

2
Evgeniy CRYPTOCOIN.
Jun 30 2025, 18:08

Trả lời

1. 5 cạm bẫy bảo mật hàng đầu trong Sui Move

Kiểm soát truy cập không đúng

Rủi ro: Bất kỳ ai cũng có thể gọi được các chức năng cần bị hạn chế.

Ví dụ:

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

Khắc phục:

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

Thông tin chi tiết chính: Sử dụng các mẫu khả năng (AdminCap, OwnerCap) để thực hiện các hoạt động nhạy cảm.

Số học tràn trộng/dòng chảy dưới

Rủi ro: toán học u64 xoay quanh một cách âm thầm (ví dụ: số dư chuyển sang 0 → 2 ^ 64-1).

Ví dụ:

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

Khắc phục:

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

Mẹo chuyên nghiệp: Luôn sử dụng:

toán học: :checked_* (thêm/sub/mul/div)

balance: :join () /split () cho tiền xu.

Điều kiện cuộc đua đối tượng chia sẻ

Rủi ro: Các sửa đổi đồng thời đối với các đối tượng được chia sẻ (ví dụ: nhóm AMM) dẫn đến trạng thái bị hỏng.

Ví dụ:

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

Khắc phục:

Sử dụng & mut độc quyền nếu có thể.

Đối với các đối tượng được chia sẻ, thiết kế các hoạt động idempotent (ví dụ: yêu cầu các bản phân tích TXN dưới dạng nonces).

Lợi thế của Sui: Hệ thống kiểu Move ngăn chặn sự tái nhập (không giống như Solidity), nhưng các đối tượng được chia sẻ vẫn có thể chạy đua.

Frontrunning và MEV

Rủi ro: Các thợ đào sắp xếp lại TXT để trích xuất giá trị (ví dụ: tấn công sandwich).

Ví dụ:

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

Khắc phục:

Yêu cầu tham số min_:


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

Sử dụng kiểm tra thời hạn:

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>).

Ví dụ:

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!  

Khắc phục:

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

2. Vectơ tấn công cụ thể của Sui

Giả mạo đối tượng Rủi ro: Các đối tượng giả được tiêm qua các cuộc gọi RPC độc hại. Phòng thủ:

Luôn xác minh quyền sở hữu đối tượng (có trường khóa và chủ sở hữu).

Sử dụng danh sách trắng ID đối tượng cho các hoạt động quan trọng.

Không cướp trường động Rủi ro: Kẻ tấn công thêm trường động độc hại vào đối tượng của bạn. Phòng thủ:

Đánh dấu các đối tượng với cửa hàng chỉ nếu cần thiết.

Sử dụng gói riêng cho dữ liệu nhạy cảm.

5
Câu trả lời hay nhất
Bình luận
.
0xduckmove.
Jun 30 2025, 18:52

Có bài viết về các phương pháp an ninh tốt nhất cho việc xây dựng trên Sui. Thật tuyệt vời khi kiểm tra https://blog.sui.io/security-best-practices/

0
Bình luận
.

Bạn có biết câu trả lời không?

Hãy đăng nhập và chia sẻ nó.