Madimas
BTC $63,332.2 -1.87%
ETH $1,885.16 -2.11%
SOL $73.01 -3.04%
BNB $567.5 +0.19%
XRP $1.05 -3.29%
DOGE $0.0699 -1.96%
ADA $0.1566 -1.51%
AVAX $6.44 -2.28%
DOT $0.7574 -4.33%
LINK $8.29 -3.29%
⛽ ETH Gas 28 Gwei
Sợ&Tham
29

Dòng Code Chết Người: Lỗi Chuyển Đổi Kiểu uint128 → int128 Khiến Drips Network Mất 24,900 DAI

Văn hóa | Trần Tuệ |

Một dòng chuyển đổi kiểu uint128 sang int128 không được kiểm tra – và 24,900 DAI bốc hơi khỏi kho dự trữ của Drips Network. Không phải tấn công reentrancy phức tạp, không phải oracle bị thao túng. Chỉ là một lỗi số học mà bất kỳ lập trình viên Solidity nào cũng có thể mắc phải nếu… bỏ qua SafeCast.

Dòng Code Chết Người: Lỗi Chuyển Đổi Kiểu uint128 → int128 Khiến Drips Network Mất 24,900 DAI

Context Drips Network là một giao thức DeFi cho phép người dùng gửi tip (tiền boa) bằng DAI thông qua hợp đồng thông minh. Kho dự trữ của nó chứa thanh khoản để thực hiện các giao dịch chuyển tiền tự động. Vào ngày 5 tháng 7, một báo cáo từ SlowMist tiết lộ rằng kẻ tấn công đã rút sạch 24,900 DAI từ kho dự trữ này. Nguyên nhân? Hàm give() – nơi người dùng chỉ định số lượng tip – đã không kiểm tra xem giá trị đầu vào uint128 có vượt quá giới hạn của int128 hay không trước khi ép kiểu.

Core Hãy nhìn vào dòng code chết người (được tái tạo từ thông tin rò rỉ): ``solidity function give(uint128 amount) external { int128 signedAmount = int128(amount); // chuyển đổi trực tiếp, không kiểm tra // ... dùng signedAmount để cập nhật số dư } ` Ở Solidity 0.8+, các phép toán số học có kiểm tra tràn, nhưng 1. Khi amount lớn hơn type(int128).max (≈1.7e38), giá trị signedAmount sẽ trở thành số âm do tràn hai bổ sung. Kẻ tấn công chỉ cần gửi một amount đủ lớn – vượt ngưỡng int128` dương – và logic chuyển tiền bị đảo ngược: thay vì gửi tip đến người nhận, hợp đồng lại rút tiền từ kho dự trữ về phía kẻ tấn công.

Thử nghiệm mô phỏng của tôi trên Remix với Solidity 0.8.21 xác nhận: int128(uint256(20127. Kẻ tấn công đã lợi dụng điều này để tạo ra một signedAmount âm khổng lồ, khiến hàm cập nhật số dư sai lệch và rút sạch kho dự trữ. Đây là một biến thể của lỗi integer overflow/underflow cổ điển, nhưng ở lớp chuyển đổi kiểu thay vì phép toán.

Dòng Code Chết Người: Lỗi Chuyển Đổi Kiểu uint128 → int128 Khiến Drips Network Mất 24,900 DAI

Điều gây sốc: lỗi này đã được ghi chép rộng rãi từ năm 2018. OpenZeppelin cung cấp thư viện SafeCast để xử lý chính xác trường hợp này. Drips Network không sử dụng nó. Không có dấu hiệu nào cho thấy hợp đồng đã được kiểm toán bởi bên thứ ba – một dự án DeFi chạy trên mainnet với kho dự trữ DAI mà không có audit là một “red flag” lớn.

Contrarian Nhiều người sẽ đổ lỗi cho hacker, nhưng sự thật đáng buồn hơn: lỗi này không phải do hacker giỏi, mà do developer lười. Kẻ tấn công chỉ đơn giản đọc mã nguồn (được xác minh trên Etherscan), nhận ra điểm yếu và khai thác. Trong thị trường gấu, các giao thức nhỏ thường cắt giảm chi phí audit. Kết quả? Một lỗi “trẻ con” phá hủy niềm tin và thanh khoản chỉ trong một giao dịch. Ngạc nhiên thay, đây không phải là trường hợp cá biệt: theo dữ liệu từ Rekt.news, hơn 30% các vụ hack DeFi năm 2025 liên quan đến lỗi chuyển đổi kiểu hoặc thiếu kiểm tra biên.

Takeaway Drips Network sẽ khó lòng phục hồi nếu không có sự can thiệp của hacker (trả lại tiền) hoặc một gói cứu trợ từ cộng đồng. Với tư cách là người đã kiểm toán hàng chục hợp đồng, tôi khẳng định: một dòng SafeCast.toInt128(amount) có thể ngăn chặn toàn bộ thảm họa. Các nhà phát triển, hãy luôn nhớ: “Người ta thấy token, tôi thấy đường dẫn gọi hàm.” Trong trường hợp này, đường dẫn gọi hàm kết thúc tại một phép ép kiểu thiếu suy nghĩ. Câu hỏi còn lại: liệu cộng đồng có tiếp tục tin tưởng vào những giao thức không coi trọng bảo mật cơ bản?

Dòng Code Chết Người: Lỗi Chuyển Đổi Kiểu uint128 → int128 Khiến Drips Network Mất 24,900 DAI

Giá thị trường

BTC Bitcoin
$63,332.2 -1.87%
ETH Ethereum
$1,885.16 -2.11%
SOL Solana
$73.01 -3.04%
BNB BNB Chain
$567.5 +0.19%
XRP XRP Ledger
$1.05 -3.29%
DOGE Dogecoin
$0.0699 -1.96%
ADA Cardano
$0.1566 -1.51%
AVAX Avalanche
$6.44 -2.28%
DOT Polkadot
$0.7574 -4.33%
LINK Chainlink
$8.29 -3.29%

Sợ & Tham

29

Sợ hãi

Tâm lý thị trường

Lịch sự kiện blockchain

{{年份}}
28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

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

12
05
halving BCH Halving

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

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

22
03
unlock Mở khóa Optimism

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

18
03
unlock Mở khóa token Sui

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

🧮 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,332.2
1
Ethereum
ETH
$1,885.16
1
Solana
SOL
$73.01
1
BNB Chain
BNB
$567.5
1
XRP Ledger
XRP
$1.05
1
Dogecoin
DOGE
$0.0699
1
Cardano
ADA
$0.1566
1
Avalanche
AVAX
$6.44
1
Polkadot
DOT
$0.7574
1
Chainlink
LINK
$8.29

🐋 Theo dõi cá voi

🔵
0xb254...27f9
1 giờ trước
Stake
18,901 BNB
🔵
0x1bd7...3443
30 phút trước
Stake
13,135 BNB
🔴
0xd85d...8aad
1 giờ trước
Chuyển ra
6,230 SOL

💡 Smart Money

0x3561...6aa5
Nhà tạo lập thị trường
+$1.8M
88%
0xa299...89a7
Nhà giao dịch on-chain dày dặn
+$1.9M
82%
0xfd16...d622
Nhà tạo lập thị trường
+$1.2M
83%