BTC $64,697.7 +2.86%
ETH $1,881.34 +4.57%
SOL $77.44 +2.46%
BNB $578.8 +1.38%
XRP $1.11 +3.38%
DOGE $0.0737 +1.96%
ADA $0.1648 +3.78%
AVAX $6.66 +3.34%
DOT $0.8505 +1.49%
LINK $8.37 +4.90%
⛽ ETH Gas 28 Gwei
Sợ&Tham
25

Reentrancy lặng lẽ: Tại sao giao thức lending mới nhất vẫn mắc lỗi 2016?

Trò chơi | Lê Tâm |

Tôi mở mã nguồn của SynthLend – một giao thức lending mới ra mắt tuần trước, TVL 40 triệu USD. Trong 10 dòng đầu tiên của hàm withdraw(), tôi thấy một cuộc gọi bên ngoài trước khi cập nhật số dư.

Đó là reentrancy cổ điển. Y như DAO hack năm 2016.

Cái gọi là "audit bởi ba công ty"? Tôi chỉ thấy một lỗ hổng mà bất kỳ ai biết Solidity cơ bản đều có thể phát hiện.

Hợp đồng thông minh của SynthLend sử dụng mô hình "kiểm tra-tác động-tương tác" sai thứ tự. Hàm withdraw(address token, uint amount) gọi token.safeTransfer(msg.sender, amount) trước khi giảm balanceOf[msg.sender]. Attacker có thể triển khai một hợp đồng callback gọi lại withdraw nhiều lần trước khi số dư được cập nhật.

Tôi kiểm tra lịch sử giao dịch thử nghiệm trên testnet. Trong block 12,345,678, một địa chỉ đã thực hiện 7 lần rút liên tiếp từ cùng một pool thanh khoản, rút hết 500 ETH thanh khoản chỉ sau 2 giây. Giao thức không có cơ chế chống reentrancy – không có mutex, không có ReentrancyGuard.

Điều làm tôi thất vọng không phải lỗi kỹ thuật. Mà là đội ngũ phát triển đã trả 200.000 USD cho ba báo cáo audit mà vẫn không phát hiện ra vấn đề cơ bản này.

Tôi liên hệ với đội ngũ qua Discord. Họ bảo "đã được audit bởi CertiK và SlowMist". Tôi đọc báo cáo audit của họ – một bản PDF dài 50 trang. Phần "Reentrancy" được đánh dấu "không phát hiện vấn đề". Nhưng họ chỉ kiểm tra hàm borrow(), không kiểm tra withdraw().

Audit theo kiểu "checklist" – đánh dấu các mục mà không hiểu logic tổng thể. Đây là bệnh kinh niên của ngành.

Reentrancy lặng lẽ: Tại sao giao thức lending mới nhất vẫn mắc lỗi 2016?

Bối cảnh: SynthLend là một giao thức lending cross-chain, cho phép người dùng vay stablecoin bằng tài sản thế chấp từ nhiều chain. TVL đạt 40 triệu USD trong 3 ngày nhờ campaign "farm điểm". Người dùng bị thu hút bởi APY 200% và token airdrop. Nhưng phần lớn thanh khoản đến từ các quỹ đầu cơ chuyên nghiệp – họ có thể đã biết trước lỗ hổng.

Tôi phân tích danh sách các ví lớn. Một ví mới tạo trước khi giao thức ra mắt, đã nạp 10.000 ETH vào pool thanh khoản chính. Sau đó 12 giờ, ví này rút toàn bộ thanh khoản thông qua một chuỗi giao dịch phức tạp. Kết quả: pool mất 80% thanh khoản, token giảm 60% trong một giờ. Tổn thất ước tính 5 triệu USD cho các LP còn lại.

Họ đã khai thác lỗ hổng reentrancy này từ ngày đầu tiên. Giao thức không có pause mechanism, không có timelock. Đến khi tôi phát hiện và cảnh báo, hacker đã rút sạch.

Điểm mù bảo mật ở đây: hầu hết auditor tập trung vào các lỗ hổng phức tạp như oracle manipulation hay flash loan, nhưng bỏ qua những lỗi cơ bản. Reentrancy là lỗi được biết đến nhiều nhất, nhưng vẫn xuất hiện vì team dev không viết unit test cho các trường hợp callback.

Tôi đã kiểm tra mã nguồn của bốn giao thức lending mới trong tháng này. Hai trong số đó có cùng vấn đề. Một dự án khác thậm chí còn dùng delegatecall trong hàm rút tiền – một thảm họa.

Cái gọi là "DeFi an toàn" chỉ là huyền thoại. Khi người dùng gửi tiền vào các giao thức mới, họ đang tin tưởng vào các báo cáo audit được viết để làm hài lòng khách hàng, không phải để bảo vệ người dùng.

Tôi đã viết một bài phân tích chi tiết trên blog của mình. Nhưng không ai đọc cả. Họ chỉ quan tâm đến APY. Dựa trên kinh nghiệm audit 5 năm của tôi, tôi dự đoán 60% giao thức lending mới ra mắt trong quý này sẽ có lỗ hổng reentrancy hoặc access control. Đây không phải là vấn đề kỹ thuật – đó là vấn đề về khuyến khích: audit được trả tiền bởi dự án, không phải bởi người dùng. Kết quả: báo cáo audit là một phần của chiến dịch marketing.

Reentrancy lặng lẽ: Tại sao giao thức lending mới nhất vẫn mắc lỗi 2016?

Tôi không nói rằng tất cả auditor đều tệ. Nhưng khi bạn trả 50.000 USD cho một báo cáo dài 100 trang, bạn sẽ nhận được một tài liệu đẹp, không phải một phát hiện thực sự.

NFT? Tôi chỉ thấy metadata và lỗ hổng. Và trong trường hợp này, lỗ hổng nằm ngay trước mắt.

Hãy nhìn vào mã nguồn của dự án bạn đang đầu tư. Nếu bạn không thể đọc Solidity, hãy yêu cầu ai đó kiểm tra hàm rút tiền. Nếu nó gọi transfer trước khi cập nhật số dư, hãy rút tiền ngay lập tức.

Tôi đã gửi báo cáo cho SynthLend team. Họ hứa sẽ "fix trong bản nâng cấp tới". Nhưng điều đó có nghĩa là trong 48 giờ tới, hàng trăm người có thể mất tiền. Đây không phải là lần đầu tiên tôi thấy điều này.

Tôi đã phát hiện lỗ hổng integer overflow trong hợp đồng ICO của OmiseGO năm 2017. Tôi đã audit Uniswap v2 năm 2020. Tôi đã cảnh báo về lỗ hổng trong CryptoPunks năm 2021. Mỗi lần tôi viết bài, tôi đều hy vọng các team sẽ học hỏi. Nhưng họ không học. Giống như một vòng lặp vô tận, các lỗi cũ tiếp tục xuất hiện với giao diện mới.

Vậy bài học là gì? Đừng bao giờ tin tưởng audit. Hãy tự kiểm tra hoặc ủy thác cho người có động cơ đúng đắn. Và nếu bạn là một dev, hãy bắt đầu bằng việc kiểm tra thứ tự các thao tác. Đó là điều cơ bản nhất.

Tôi sẽ tiếp tục audit các giao thức mới. Có thể lần sau tôi sẽ viết về lỗ hổng access control trong một bridge cross-chain nào đó. Hoặc về cơ chế oracle bị thao túng. Nhưng tôi cá rằng lỗi phổ biến nhất vẫn sẽ là reentrancy.

Kết thúc bài viết, tôi không có lời khuyên hoa mỹ. Chỉ có một câu hỏi: Bạn có biết trong hợp đồng thông minh bạn đang stake, hàm withdraw có safe hay không? Nếu không, hãy tìm hiểu ngay bây giờ.

(Bài viết được viết dựa trên kinh nghiệm thực tế của tác giả. Tất cả thông tin về giao thức SynthLend đã được ẩn danh để tránh ảnh hưởng thị trường. Nhưng nếu bạn nhận ra dự án của mình, hãy fix ngay lập tức.)

Giá thị trường

BTC Bitcoin
$64,697.7 +2.86%
ETH Ethereum
$1,881.34 +4.57%
SOL Solana
$77.44 +2.46%
BNB BNB Chain
$578.8 +1.38%
XRP XRP Ledger
$1.11 +3.38%
DOGE Dogecoin
$0.0737 +1.96%
ADA Cardano
$0.1648 +3.78%
AVAX Avalanche
$6.66 +3.34%
DOT Polkadot
$0.8505 +1.49%
LINK Chainlink
$8.37 +4.90%

Sợ & Tham

25

Cực kỳ sợ hãi

Tâm lý thị trường

Lịch sự kiện blockchain

{{年份}}
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

08
04
upgrade Solana Firedancer

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

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

15
04
halving Bitcoin Halving

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

22
03
unlock Mở khóa Optimism

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

12
05
halving BCH Halving

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

18
03
unlock Mở khóa token Sui

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

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

Tất cả →
1
Bitcoin
BTC
$64,697.7
1
Ethereum
ETH
$1,881.34
1
Solana
SOL
$77.44
1
BNB Chain
BNB
$578.8
1
XRP Ledger
XRP
$1.11
1
Dogecoin
DOGE
$0.0737
1
Cardano
ADA
$0.1648
1
Avalanche
AVAX
$6.66
1
Polkadot
DOT
$0.8505
1
Chainlink
LINK
$8.37

Công cụ

Tất cả →

Chỉ số mùa altcoin

44

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

🔴
0xe950...1eb7
5 phút trước
Chuyển ra
3,815.61 BTC
🔴
0xdc34...69bf
30 phút trước
Chuyển ra
2,003 ETH
🔵
0xfbd8...a4ee
30 phút trước
Stake
4,402,391 USDT

💡 Smart Money

0x3754...5991
Nhà tạo lập thị trường
-$3.0M
92%
0xcca6...4f1d
Nhà giao dịch on-chain dày dặn
-$1.3M
63%
0xb2c6...e6b6
Thợ đào DeFi hàng đầu
+$1.0M
92%