BTC $65,071 +0.57%
ETH $1,944.82 +1.69%
SOL $76.13 +1.05%
BNB $574.5 +0.23%
XRP $1.1 -0.52%
DOGE $0.0722 -1.26%
ADA $0.1595 -3.22%
AVAX $6.59 -1.60%
DOT $0.7962 -3.10%
LINK $8.64 +0.62%
⛽ ETH Gas 28 Gwei
Sợ&Tham
30
Blockchain

Một lỗ đen trong bytecode của RWA Protocol sắp IPO: DeFi Summer dạy tôi gan là biết khi nào mai phục

Dương Huyền

Một lỗ đen trong bytecode mà tự tay đào ra.

Tuần trước, trong lúc audit hợp đồng thông minh của Zero One RWA Protocol – một dự án token hoá bất động sản trên Ethereum đang chuẩn bị IPO tại Hong Kong năm 2027 – tôi phát hiện một lỗi reentrancy cổ điển trong hàm withdraw. Một lỗ đen nhỏ, nằm lặng lẽ trong bytecode, có thể khiến attacker rút cạn pool thanh khoản trong một giao dịch duy nhất. Điều đáng nói: dự án đã trải qua hai vòng audit trước đó, từ hai công ty bảo mật có tên tuổi. Cả hai đều bỏ sót.

Một lỗ đen trong bytecode của RWA Protocol sắp IPO: DeFi Summer dạy tôi gan là biết khi nào mai phục

Context: RWA on-chain – câu chuyện kể ba năm chưa có thật

Zero One RWA Protocol (tôi gọi tắt là ZORP) tự định vị là cầu nối giữa bất động sản truyền thống và DeFi. Họ mint NFT đại diện cho quyền sở hữu một phần căn hộ ở Singapore, dùng zk-proofs để xác thực tài sản thế chấp. Whitepaper của họ dày 80 trang, mô tả chi tiết cơ chế khớp lệnh và thanh lý. Nhưng như mọi dự án RWA khác, họ gặp vấn đề cốt lõi: thanh khoản sâu và sự chấp nhận từ tổ chức. Các ngân hàng không cần Ethereum của bạn. Họ có sổ cái riêng. ZORP vẫn sống nhờ vài triệu TVL từ các quỹ đầu tư mạo hiểm, và câu chuyện IPO Hong Kong 2027 là tín hiệu họ cần tiền từ đại chúng.

Core: Phân tích bytecode – trade-off giữa gas efficiency và security

Tôi clone repo của ZORP về máy, chạy Slither và Echidna. Lỗi nằm ở contract RealEstateVault.sol, hàm withdrawRewards(). Cụ thể:

function withdrawRewards(uint256 _amount) external nonReentrant {
    require(balances[msg.sender] >= _amount, "Insufficient balance");
    (bool success, ) = msg.sender.call{value: _amount}("");
    require(success, "Transfer failed");
    balances[msg.sender] -= _amount;
}

Họ dùng nonReentrant từ OpenZeppelin, tưởng an toàn. Nhưng nhìn kỹ: việc gọi call đến msg.sender trước khi cập nhật balance. Nếu msg.sender là một contract, nó có thể gọi lại withdrawRewards() thông qua fallback. Modifier nonReentrant chỉ chặn reentrancy trong cùng một hàm, nhưng attacker có thể gọi một hàm khác (ví dụ emergencyWithdraw()) để tận dụng state chưa được cập nhật. ZORP không có emergencyWithdraw, nhưng tôi phát hiện một hàm claimMultiplier() cũng dùng chung mapping balances. Kết hợp hai lời gọi, attacker có thể rút gấp đôi số tiền.

Một lỗ đen trong bytecode của RWA Protocol sắp IPO: DeFi Summer dạy tôi gan là biết khi nào mai phục

Đây là lỗi trade-off điển hình: team ZORP đã tối ưu gas bằng cách dùng modifier nonReentrant thay vì áp dụng pattern checks-effects-interactions. Họ lý luận rằng nonReentrant là đủ. Nhưng thực tế, trong kiến trúc có nhiều hàm write, cần thiết kế state machine rõ ràng. Tôi viết PoC trong 20 dòng Solidity, chạy trên Remix, và thấy attacker có thể rút 2x reward trong một block. Thiệt hại ước tính: nếu pool có 10,000 ETH, một kẻ khai thác có thể lấy 20,000 ETH trước khi bất kỳ ai kịp phản ứng.

Tôi gửi report cho team ZORP. Họ fix trong 48 giờ, thay bằng pattern checks-effects-interactions, và tăng gas thêm 15% mỗi giao dịch. Một lần nữa, security đánh đổi với hiệu năng. Nhưng câu chuyện không dừng ở đây.

Contrarian: Điểm mù bảo mật – lỗi reentrancy không phải vấn đề lớn nhất

Ai cũng tập trung vào lỗi reentrancy, nhưng tôi cho rằng điểm mù thực sự của ZORP nằm ở oracle giá bất động sản. Họ dùng Chainlink để lấy giá NFT từ thị trường thứ cấp (OpenSea). Vấn đề: thị trường NFT rất mỏng, thanh khoản thấp. Một attacker chỉ cần 5 ETH để pump floor price trên OpenSea, sau đó mint NFT mới với giá cao, rồi dùng nó làm tài sản thế chấp để vay stablecoin. Khi price về lại, khoản vay trở thành nợ xấu, protocol mất tiền. Lỗi reentrancy là một vết xước; oracle manipulation mới là lỗ đen thực sự. ZORP không có cơ chế TWAP (Time-Weighted Average Price), chỉ dùng spot price từ một nguồn duy nhất. Đây là bài học DeFi Summer 2020 dạy tôi: gan là biết khi nào mai phục. Các dự án RWA thường tập trung vào token hoá tài sản thật, nhưng quên rằng on-chain vẫn là môi trường hoang dã. Một oracle bị thao túng có thể gây thiệt hại gấp trăm lần reentrancy.

Takeaway: IPO Hong Kong 2027 – liệu có kịp vá lỗi?

ZORP đã sửa lỗi reentrancy, nhưng vấn đề oracle vẫn chưa được giải quyết. Họ lên kế hoạch dùng Chainlink TWAP trong bản nâng cấp Q4 2025, nhưng lộ trình này dựa trên giả định thị trường NFT thanh khoản hơn. Nếu không, đến năm 2027, khi họ nộp hồ sơ lên HKEX, auditor sẽ đào ra vấn đề này. Sàn NFT tự build, sập thì cũng đứng được một mình. Nhưng RWA protocol mà sập thì kéo theo cả hệ thống tài sản thật. Câu hỏi cho độc giả: bạn có dám gửi tiết kiệm vào một dự án mà oracle chỉ dùng spot price không?

Giá thị trường

BTC Bitcoin
$65,071 +0.57%
ETH Ethereum
$1,944.82 +1.69%
SOL Solana
$76.13 +1.05%
BNB BNB Chain
$574.5 +0.23%
XRP XRP Ledger
$1.1 -0.52%
DOGE Dogecoin
$0.0722 -1.26%
ADA Cardano
$0.1595 -3.22%
AVAX Avalanche
$6.59 -1.60%
DOT Polkadot
$0.7962 -3.10%
LINK Chainlink
$8.64 +0.62%

Sợ & Tham

30

Sợ hãi

Tâm lý thị trường

Lịch sự kiện blockchain

{{年份}}
18
03
unlock Mở khóa token Sui

Phần đội ngũ và nhà đầu tư sớm được giải phóng

10
05
upgrade Nâng cấp Ethereum Pectra

Tăng giới hạn validator và trừu tượng hóa tài khoản

08
04
upgrade Solana Firedancer

Trình xác thực độc lập ra mắt trên mainnet

12
05
halving BCH Halving

Sự kiện giảm một nửa phần thưởng khối

15
04
halving Bitcoin Halving

Phần thưởng khối giảm xuống 3,125 BTC

30
04
upgrade Nâng cấp Celestia Mainnet

Cải thiện hiệu quả lấy mẫu tính khả dụng dữ liệu

28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

22
03
unlock Mở khóa Optimism

Lượng cung lưu hành tăng khoảng 2%

Vốn hóa thị trường

Tất cả →
# Tiền điện tử Giá
1
Bitcoin BTC
$65,071
1
Ethereum ETH
$1,944.82
1
Solana SOL
$76.13
1
BNB Chain BNB
$574.5
1
XRP Ledger XRP
$1.1
1
Dogecoin DOGE
$0.0722
1
Cardano ADA
$0.1595
1
Avalanche AVAX
$6.59
1
Polkadot DOT
$0.7962
1
Chainlink LINK
$8.64

Công cụ

Tất cả →

Chỉ số mùa altcoin

43

Mùa Bitcoin

Sự thống trị BTC Mùa altcoin

Theo dõi phí Gas

Ethereum 28 Gwei
BNB Chain 3 Gwei
Polygon 42 Gwei
Arbitrum 0.5 Gwei
Optimism 0.3 Gwei

🐋 Theo dõi cá voi

🟢
0x6061...af43
30 phút trước
Chuyển vào
3,040.56 BTC
🟢
0x5feb...fae9
30 phút trước
Chuyển vào
321,784 USDC
🔴
0xa919...720c
2 phút trước
Chuyển ra
10,077 BNB

💡 Smart Money

0x3df6...74b8
Bot chênh lệch giá
+$0.2M
81%
0x9e8e...529b
Thợ đào DeFi hàng đầu
+$1.6M
92%
0x0dfd...3392
Nhà tạo lập thị trường
+$2.7M
60%