Assbiz
BTC $79,363.7 +2.26%
ETH $2,483 +0.70%
SOL $99.63 +5.35%
BNB $700.2 +0.10%
XRP $1.48 +0.61%
DOGE $0.0908 +0.18%
ADA $0.2197 +0.78%
AVAX $7.53 +1.10%
DOT $0.8970 -0.12%
LINK $11.59 +0.32%
⛽ ETH Gas 28 Gwei
Sợ&Tham
74

Reentrancy chưa chết: Khi thị trường tăng vỗ tay cho kẻ liều lĩnh, auditor nhìn vào rút tiền

Lý Phúc
Văn hóa

Thị trường tăng giá năm nay mang lại một cảm giác an toàn giả tạo. Dòng tiền đổ vào các giao thức DeFi như thác lũ. TVL tăng vọt. Nhà đầu tư mới không đọc mã nguồn. Họ đọc tweet. Họ nhìn vào biểu đồ. Và họ gửi tiền vào những hợp đồng thông minh chưa từng được kiểm toán kỹ lưỡng.

Tôi nhớ lại tháng đầu tiên của đợt tăng giá này. Một giao thức cho vay với hơn 80 triệu USD thanh khoản bị rút sạch trong một giao dịch duy nhất. Tôi mở trình duyệt block explorer, đọc lại hàm withdraw. Không có nonReentrant. Thứ tự cập nhật số dư nằm sau lệnh chuyển token. Reentrancy. Vẫn là Reentrancy.

Điều đáng sợ không phải kẻ tấn công. Điều đáng sợ là lý do đội ngũ phát triển gỡ bỏ guard: họ muốn tiết kiệm gas. Họ nghĩ rằng một hàm chuyển token đơn giản thì không cần lớp bảo vệ. Họ nghĩ rằng những bài học từ năm 2016 chỉ còn trong sách giáo khoa.

Họ đã nhầm.

Bối cảnh: Thị trường tăng, kỷ luật giảm

Thị trường tăng không tạo ra lỗ hổng. Nó chỉ phơi bày những lỗ hổng đã có sẵn từ trước. Trong thị trường giá giảm, các dự án sống sót đều rất thận trọng. Họ kiểm tra code nhiều lần. Họ viết test. Họ thuê auditor. Họ sửa từng dòng một. Nhưng khi giá tăng, áp lực ra mắt trở nên dữ dội. Đối thủ cạnh tranh ra mắt trước. Nhà đầu tư hối thúc. Cộng đồng chờ đợi.

Và rồi điều gì xảy ra? Kiểm toán bị rút ngắn từ ba vòng xuống còn một vòng. Test coverage bị cắt giảm để kịp tiến độ. Các kỹ sư giỏi nhất bị phân tán vào việc tối ưu gas thay vì phân tích luồng logic.

Ở đây, tôi muốn nói rõ: lỗi không nằm ở một cá nhân. Lỗi nằm ở cấu trúc khuyến khích. Khi token tăng 10 lần trong một tháng, ai quan tâm một hàm withdraw có đặt nonReentrant hay không? Ai kiểm tra oracle cập nhật bao lâu một lần? Ai đặt câu hỏi về quyền admin?

Không ai cả.

Core: Những vết nứt lặp lại qua từng năm

1. Reentrancy vẫn là món khai vị quen thuộc cho bất kỳ kẻ tấn công nào

Reentrancy là lỗi cổ điển nhất trong hợp đồng thông minh. Cơ chế rất đơn giản: hợp đồng A gọi hợp đồng B, và B gọi lại A trước khi A cập nhật trạng thái. Kết quả là A có thể bị rút tiền nhiều lần trước khi số dư nội bộ được ghi nhận.

Có một tranh luận kỹ thuật mà tôi muốn làm rõ. Nhiều lập trình viên nói rằng họ không cần guard vì họ dùng transfer thay vì call. Quan điểm này đã lỗi thời từ năm 2019. Kể từ khi EIP-1884 thay đổi chi phí gas của SLOAD, transfer không còn đáng tin cậy. Hơn nữa, một số token ERC-20 kỳ lạ có thể thực hiện callback. Nếu bạn chấp nhận token tùy chỉnh, bạn phải chấp nhận khả năng bị tấn công reentrancy.

Năm 2021, khi tôi được mời kiểm tra một sàn giao dịch NFT mới, tôi phát hiện hàm withdraw không theo mẫu checks-effects-interactions. Tôi viết một Proof-of-Concept chứng minh kẻ tấn công có thể rút hết 10 ETH trong pool chỉ bằng một hợp đồng độc hại. Đội dev sửa lỗi trong vòng 24 giờ. Nhưng câu hỏi đặt ra: họ có sửa được tư duy không?

Reentrancy không chỉ là kỹ thuật. Nó phản ánh một triết lý phát triển. Triết lý ấy nói rằng an toàn không phải là ưu tiên hàng đầu. Tối ưu gas mới là ưu tiên hàng đầu. Coverage mới là ưu tiên. Tính năng mới mới là ưu tiên.

Reentrancy vẫn là cánh cửa mà ai cũng quên khóa. Chỉ khác là cánh cửa bây giờ được sơn đẹp hơn.

2. Oracle gãy, DEX mất trí nhớ

Năm 2020, khi còn là sinh viên, tôi đã kiểm toán một sàn AMM trên testnet với phần thưởng 0,5 ETH. Hợp đồng dùng một oracle lấy giá từ một nguồn duy nhất, cập nhật mỗi 30 phút. Tôi chạy mô phỏng với một giao dịch lớn. Kết quả: chênh lệch giá 2%. Đối với một sàn giao dịch có thanh khoản mỏng, đó là một thảm họa. Kẻ tấn công có thể mua với giá cũ và bán với giá mới chỉ trong một khối.

Oracle gãy, DEX mất trí nhớ. Khi giá oracle không khớp với giá thực tế, sàn giao dịch trở thành máy in tiền cho kẻ tấn công. Họ không cần hack gì cả. Họ chỉ cần đọc giá, so sánh với thị trường, và thực hiện giao dịch chênh lệch.

Bài học từ năm 2020 vẫn còn nguyên giá trị. Trong thị trường tăng, biến động giá thường xuyên hơn. Thanh khoản thường phân tán hơn. Các oracle cũ càng dễ bị khai thác. Tôi nhắc lại một lần nữa: TWAP từ Uniswap không phải là giải pháp vạn năng. TWAP chỉ an toàn khi thanh khoản của pool đủ sâu. Nếu pool mỏng, TWAP có thể bị thao túng trong một khối duy nhất. Nếu bạn dùng Chainlink, phải kiểm tra độ trễ và threshold deviation. Đừng tin tưởng vào bất kỳ oracle nào mà không tự mình xác minh.

3. Phân tích so sánh: sự khác biệt giữa dự án an toàn và dự án rủi ro

Khi tôi tiếp nhận một hợp đồng mới, tôi thường đặt hai sơ đồ kiến trúc cạnh nhau: một từ giao thức đã bị hack, một từ giao thức đang hoạt động ổn định. Sự khác biệt không nằm ở độ phức tạp. Sự khác biệt nằm ở cách họ xử lý ba điểm sau:

Một: quản lý trạng thái. Hợp đồng an toàn luôn cập nhật trạng thái trước khi gọi bên ngoài. Hợp đồng rủi ro làm ngược lại.

Hai: kiểm soát truy cập. Hợp đồng an toàn giới hạn quyền admin trong một phạm vi rất nhỏ. Hợp đồng rủi ro có một địa chỉ có thể rút toàn bộ quỹ.

Ba: khả năng dừng khẩn cấp. Hợp đồng an toàn có circuit breaker. Hợp đồng rủi ro không có.

Tôi từng kiểm toán một fork của Uniswap V3 tích hợp LayerZero vào năm 2024. Bằng kỹ thuật formal verification trên Certora, tôi phát hiện 12 lỗi. Trong đó có 3 lỗi nghiêm trọng liên quan đến slippage không nhất quán giữa các chuỗi. Nếu không dùng formal verification, các lỗi này rất khó phát hiện bằng phương pháp đọc mã thông thường. Trải nghiệm đó dạy tôi một bài học: trong thị trường tăng, các fork được triển khai với tốc độ chóng mặt. Nhưng khi bạn fork một giao thức an toàn, bạn không tự động kế thừa sự an toàn. Bạn chỉ kế thừa mã nguồn. Mỗi dòng thay đổi đều có thể tạo ra một lỗ hổng mới.

4. Vấn đề tập trung hóa: câu chuyện không bao giờ được nhắc đến

Khi một dự án quảng cáo “phi tập trung”, tôi thường mở hợp đồng của họ và tìm kiếm những hàm có dấu hiệu onlyOwner, onlyAdmin, hoặc authorized. Kết quả thường gây bất ngờ.

Reentrancy chưa chết: Khi thị trường tăng vỗ tay cho kẻ liều lĩnh, auditor nhìn vào rút tiền

Có những giao thức mượn danh nghĩa DAO nhưng thực tế chỉ có 3 ví multisig nắm quyền rút tiền. Có những giao thức nói về “không thể bị kiểm duyệt” nhưng vẫn có một địa chỉ có thể đóng băng token.

Đây không phải là một vấn đề đạo đức. Đây là một vấn đề kỹ thuật. Nếu một nhóm 3 người có thể rút toàn bộ tiền của người dùng, thì vốn hóa thị trường của dự án không phản ánh đúng rủi ro. Nhà đầu tư nên định giá rủi ro đó. Nhưng họ không biết. Bởi vì họ không đọc mã.

Quan điểm trái chiều: Kẻ thù lớn nhất không phải hacker

Chúng ta thường nghĩ rằng rủi ro lớn nhất trong thị trường tăng đến từ hacker. Không. Hacker chỉ tận dụng những gì có sẵn. Kẻ thù lớn nhất là thiết kế kinh tế vụng về.

Terra Luna là một ví dụ kinh điển. Sau khi hệ thống sụp đổ vào tháng 5 năm 2022, tôi dành hai tuần phân tích mã nguồn của Anchor Protocol. Tôi không tìm thấy một lỗi reentrancy nào. Tôi không tìm thấy một lỗi oracle nào cả. Nhưng tôi tìm thấy một lỗi lớn hơn nhiều: thiếu cơ chế khóa thanh khoản trong hợp đồng oracle.

Trong một thị trường hoảng loạn, khi giá UST bắt đầu trượt khỏi peg, hợp đồng oracle cho phép mint và burn không giới hạn. Không có circuit breaker. Không có giới hạn rate. Không có cơ chế dừng khẩn cấp. Kết quả: vòng xoáy tử thần trong 48 giờ.

Một auditor kiểm tra theo phương pháp thông thường sẽ nói rằng hợp đồng Terra hoạt động theo đúng spec. Và họ không sai. Vấn đề nằm ở spec. Spec không tính đến kịch bản mà người dùng mất niềm tin. Trong thị trường tăng, niềm tin luôn cao. Vì vậy, spec thường được xây dựng dựa trên giả định người dùng có lý trí. Nhưng trong thị trường giảm, người dùng không có lý trí. Họ chỉ có nỗi sợ.

Đây là điểm mù lớn nhất của ngành công nghiệp này: chúng ta kiểm tra mã dựa trên giả định thị trường bình thường. Nhưng thị trường không bao giờ bình thường.

Takeaway: Chu kỳ tăng là nơi những sai lầm trở nên đắt đỏ nhất

Chúng ta đang ở trong một chu kỳ tăng. Tiền đang chảy vào. Những dự án mới đang xuất hiện mỗi ngày. Và mỗi ngày, tôi đọc mã nguồn và thấy những lỗi cũ đang lặp lại:

Reentrancy vẫn còn trong các hợp đồng cho vay. Oracle vẫn được đọc từ một nguồn duy nhất. Admin key vẫn nằm trong tay ba người. Không ai thèm kiểm tra formal verification.

Thị trường tăng vỗ tay cho những kẻ liều lĩnh. Nhưng auditor chỉ nhìn vào dòng tiền rút ngược.

Câu hỏi tôi đặt ra cho bạn đọc: Bạn có thực sự biết giao thức bạn đang gửi tiền có reentrancy guard hay không? Bạn có biết oracle của nó lấy giá từ đâu? Bạn có biết ai có quyền rút tiền? Nếu câu trả lời là không, thì bạn không phải là nhà đầu tư. Bạn chỉ là người cho vay miễn phí cho một nhóm lập trình viên vô danh.

Tôi không nói rằng tất cả các dự án đều lừa đảo. Tôi chỉ đang nói rằng thị trường tăng không sửa chữa lỗ hổng. Nó chỉ làm cho chúng trở nên đắt đỏ hơn. Khi cơn mưa tiền tạnh, những người không chuẩn bị sẽ ướt.

Đã đến lúc ngừng hỏi “đồng coin nào sẽ tăng?" và bắt đầu hỏi "hợp đồng này có an toàn không?". Vì những gì không biết sẽ đến, thường để lại hóa đơn rất lớn.

Giá thị trường

BTC Bitcoin
$79,363.7 +2.26%
ETH Ethereum
$2,483 +0.70%
SOL Solana
$99.63 +5.35%
BNB BNB Chain
$700.2 +0.10%
XRP XRP Ledger
$1.48 +0.61%
DOGE Dogecoin
$0.0908 +0.18%
ADA Cardano
$0.2197 +0.78%
AVAX Avalanche
$7.53 +1.10%
DOT Polkadot
$0.8970 -0.12%
LINK Chainlink
$11.59 +0.32%

Sợ & Tham

74

Tham lam

Tâm lý thị trường

Lịch sự kiện blockchain

{{年份}}
12
05
halving BCH Halving

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

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

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%

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

18
03
unlock Mở khóa token Sui

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

28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

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

Tất cả →
# Tiền điện tử Giá
1
Bitcoin BTC
$79,363.7
1
Ethereum ETH
$2,483
1
Solana SOL
$99.63
1
BNB Chain BNB
$700.2
1
XRP Ledger XRP
$1.48
1
Dogecoin DOGE
$0.0908
1
Cardano ADA
$0.2197
1
Avalanche AVAX
$7.53
1
Polkadot DOT
$0.8970
1
Chainlink LINK
$11.59

Công cụ

Tất cả →

Chỉ số mùa altcoin

40

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

🟢
0x7dee...b905
1 ngày trước
Chuyển vào
1,784.81 BTC
🔵
0x48f2...2172
5 phút trước
Stake
4,542,225 USDC
🟢
0xe459...c11a
30 phút trước
Chuyển vào
26,751 SOL

💡 Smart Money

0xe462...45bf
Nhà đầu tư sớm
+$1.5M
66%
0x72ec...c56c
Ví lưu ký tổ chức
+$3.0M
75%
0x9c43...d992
Thợ đào DeFi hàng đầu
+$1.0M
68%