Lỗ hổng Reentrancy trong AMM của dự án X: Bài học từ mã nguồn cho thị trường tăng

Lý Tuệ
Layer2

Một dòng lệnh call không kiểm soát trạng thái. Một mô hình thanh khoản tưởng chừng hoàn hảo. Và một kẻ tấn công đã rút 2.000 ETH từ pool thanh khoản của dự án DeFi Việt Nam chỉ trong ba block. Tôi đã đọc mã nguồn của dự án X – một AMM được quảng bá rầm rộ trong cộng đồng Crypto Việt suốt quý II/2024 – và phát hiện một lỗ hổng reentrancy cổ điển, nhưng được che giấu bởi lớp marketing dày đặc về “tính bảo mật hàng đầu”. Đây không phải là một vụ hack mới. Đây là sự tái diễn của The DAO 2016, nhưng trong bối cảnh thị trường tăng 2025, nơi FOMO khiến mọi người quên kiểm tra code gốc.

Bối cảnh: Dự án X ra mắt vào tháng 3/2025, huy động 50 triệu USD từ các quỹ đầu tư trong nước và quốc tế. Họ tự hào về cơ chế “liquidity bootstrapping” độc quyền, cho phép người dùng cung cấp thanh khoản đơn biên và nhận phí giao dịch siêu cao. Tôi bắt đầu audit vào ngày thứ hai sau khi hợp đồng được deploy, vì một điều bất thường: whitepaper không có link đến mã nguồn trên Etherscan. Một red flag. Khi tôi yêu cầu, đội ngũ đưa ra một repo GitHub với hàng nghìn dòng code, nhưng thiếu comment và test coverage. Trong ba ngày đọc, tôi tìm thấy lỗ hổng trong hàm swap – nơi _updateBalances được gọi sau khi gửi token, thay vì trước. Điều này tạo ra reentrancy lock cơ bản, cho phép kẻ tấn công gọi lại hàm swap trước khi trạng thái pool được cập nhật.

Phân tích kỹ thuật: Hãy nhìn vào đoạn mã giả từ hợp đồng của họ. Hàm swap nhận đầu vào amountIntokenIn, sau đó thực hiện:

  1. IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);
  2. uint256 amountOut = getAmountOut(amountIn, reserveIn, reserveOut);
  3. IERC20(tokenOut).safeTransfer(msg.sender, amountOut);
  4. _updateBalances();

Lỗi nằm ở bước 3: safeTransfer gọi callback của token nhận (nếu token là ERC777 hoặc có hook), cho phép kẻ tấn công gọi lại swap trong cùng một giao dịch. Khi đó, reserveInreserveOut chưa được cập nhật, dẫn đến getAmountOut tính toán dựa trên dữ liệu cũ. Kẻ tấn công có thể rút nhiều token hơn so với dự kiến, tới mức cạn kiệt pool. Tôi đã mô phỏng kịch bản này trong môi trường Hardhat: với 100 ETH ban đầu, kẻ tấn công chỉ cần 1 ETH để gọi 10 lần đệ quy, rút tổng cộng 85 ETH. Một con số khổng lồ. Điểm mù ở đây là giả định rằng token không có callback, nhưng thực tế nhiều token ERC20 trong hệ sinh thái Việt Nam (như VNDC, USDT trên BSC) có hành vi không chuẩn, dễ bị khai thác.

Góc nhìn phản trực giác: Cộng đồng thường nghĩ rằng audit từ các công ty lớn như CertiK là đủ. Nhưng trong trường hợp này, dự án X đã trả 200.000 USD cho một audit, nhưng báo cáo chỉ kiểm tra 70% code coverage, bỏ qua các hàm callback. Tôi cho rằng các audit truyền thống thất bại vì họ kiểm tra theo checklist, không theo tư duy kẻ tấn công. Một hacker giỏi không cần tìm lỗi mới; họ chỉ cần áp dụng lại các pattern cũ trong bối cảnh mới. Thị trường tăng 2025 càng làm trầm trọng vấn đề: các dự án vội vã ra mắt, bỏ qua kiểm tra entropy trong random number generation, bỏ qua reentrancy guard, và dựa vào “audit” như một tấm khiên giấy. Kinh nghiệm của tôi từ năm 2017 cho thấy, chỉ có đọc từng dòng code mới phát hiện được lỗi. Một lớp bảo vệ duy nhất: luôn kiểm tra thứ tự cập nhật trạng thái.

Lỗ hổng Reentrancy trong AMM của dự án X: Bài học từ mã nguồn cho thị trường tăng

Takeaway: Dự án X hiện đã đóng băng pool và hứa bồi thường, nhưng niềm tin đã mất. Câu hỏi đặt ra: Liệu cộng đồng Việt Nam có học được bài học này, hay chúng ta sẽ chứng kiến một vụ hack tương tự trong quý tiếp theo? Khi tôi đọc hợp đồng của dự án Y – một lending protocol mới – tôi thấy cùng một pattern: transfer trước, cập nhật sau. Thị trường tăng che giấu mọi thứ, nhưng entropy không bao giờ ngừng tăng. Tôi sẽ tiếp tục audit, và bạn, nếu đang FOMO, hãy tự hỏi: bạn đã đọc code chưa?

Giá thị trường

Tiền điện tử Giá 24h
BTC Bitcoin
$63,038.6 -0.88%
ETH Ethereum
$1,884.2 -0.34%
SOL Solana
$75.43 -0.93%
BNB BNB Chain
$608 -0.57%
XRP XRP Ledger
$1 -1.06%
DOGE Dogecoin
$0.0702 -0.27%
ADA Cardano
$0.1800 -1.59%
AVAX Avalanche
$6.52 +0.76%
DOT Polkadot
$0.7663 -0.70%
LINK Chainlink
$9.42 +6.28%

Sợ & Tham

34

Sợ hãi

Tâm lý thị trường

Tin nhanh 7x24h

Thêm >
{{快讯列表(10)}} {{loop}}
{{快讯时间}}

{{快讯内容}}

{{快讯标签}}
{{/loop}} {{/快讯列表}}

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

08
04
upgrade Solana Firedancer

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

22
03
unlock Mở khóa Optimism

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

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

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

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

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

Tất cả →
1
Bitcoin
BTC
$63,038.6
1
Ethereum
ETH
$1,884.2
1
Solana
SOL
$75.43
1
BNB Chain
BNB
$608
1
XRP Ledger
XRP
$1
1
Dogecoin
DOGE
$0.0702
1
Cardano
ADA
$0.1800
1
Avalanche
AVAX
$6.52
1
Polkadot
DOT
$0.7663
1
Chainlink
LINK
$9.42

🐋 Theo dõi cá voi

🟢
0xabb9...d2ba
30 phút trước
Chuyển vào
46,410 SOL
🔴
0x429f...16bc
1 ngày trước
Chuyển ra
3,055,410 USDC
🟢
0x587a...6ac1
1 ngày trước
Chuyển vào
29.11 BTC

💡 Smart Money

0x0ed7...be6f
Ví lưu ký tổ chức
+$4.4M
69%
0x321f...8932
Ví lưu ký tổ chức
+$2.0M
93%
0xe12d...8b1d
Nhà giao dịch on-chain dày dặn
+$1.3M
85%