BTC $63,099.9 +0.62%
ETH $1,871.2 +0.92%
SOL $73.03 +0.07%
BNB $580.2 -1.07%
XRP $1.06 +0.17%
DOGE $0.0702 +1.95%
ADA $0.1751 +4.60%
AVAX $6.37 -0.02%
DOT $0.7710 +2.70%
LINK $8.11 +0.75%
⛽ ETH Gas 28 Gwei
Sợ&Tham
27

Giá thị trường

BTC Bitcoin
$63,099.9 +0.62%
ETH Ethereum
$1,871.2 +0.92%
SOL Solana
$73.03 +0.07%
BNB BNB Chain
$580.2 -1.07%
XRP XRP Ledger
$1.06 +0.17%
DOGE Dogecoin
$0.0702 +1.95%
ADA Cardano
$0.1751 +4.60%
AVAX Avalanche
$6.37 -0.02%
DOT Polkadot
$0.7710 +2.70%
LINK Chainlink
$8.11 +0.75%

Lịch sự kiện blockchain

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

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%

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

18
03
unlock Mở khóa token Sui

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

08
04
upgrade Solana Firedancer

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

Theo dõi phí Gas

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

💡 Smart Money

0x7869...9f17
Nhà giao dịch on-chain dày dặn
+$4.9M
68%
0xf5af...4faf
Ví lưu ký tổ chức
+$2.5M
77%
0x4ca7...e3fb
Bot chênh lệch giá
+$4.4M
65%

Công cụ

Tất cả →
Tin nhanh

Phát hiện lỗ hổng Reentrancy trên giao thức DeFi mới: 15 triệu USD thanh khoản suýt 'bốc hơi'

Ngô Vĩnh

Hook

Chỉ 48 giờ trước khi lên mainnet, một giao thức yield aggregator trên Arbitrum suýt mất toàn bộ 15 triệu USD thanh khoản. Lỗi nằm ở một dòng call không kiểm tra trạng thái trong contract phân phối phần thưởng – một biến thể reentrancy cổ điển mà tôi đã thấy từ năm 2017. Nhưng điều làm tôi ngạc nhiên không phải là lỗi, mà là đội ngũ phát triển đã từ chối tin rằng nó có thể bị khai thác cho đến khi tôi chạy proof-of-concept trước mặt họ.

Context

Giao thức này – tạm gọi là 'YieldVault' – cung cấp cơ chế tự động tái đầu tư lợi nhuận từ nhiều pool thanh khoản. Người dùng gửi token, nhận lại chứng chỉ đại diện (vToken), và contract định kỳ gọi hàm harvest() để thu thập phần thưởng rồi phân phối lại. Điểm mấu chốt: hàm harvest() không sử dụng mẫu Checks-Effects-Interactions. Nó gọi transfer trước khi cập nhật totalRewards – một sai lầm cơ bản trong Solidity.

Core

Tôi nhận được contract để audit vào một buổi tối thứ Sáu. Đọc qua, tôi thấy ngay pattern nguy hiểm:

function harvest(address user) external {
    uint256 reward = calculateReward(user);
    require(reward > 0);
    // Interaction trước khi cập nhật state
    (bool success, ) = user.call{value: reward}("");
    require(success);
    // State update sau
    totalRewards -= reward;
}

Bất kỳ ai từng audit đều biết: nếu user là một contract độc hại, nó có thể gọi lại harvest() trước khi totalRewards được giảm. Vòng lặp sẽ tiếp tục cho đến khi hết gas hoặc hết ETH trong contract. Với gas hiện tại trên Arbitrum, tôi ước tính một kẻ tấn công có thể rút toàn bộ số dư chỉ trong 3-4 lần gọi lồng nhau.

Tôi lập tức viết PoC bằng Hardhat. Contract tấn công chỉ cần 20 dòng:

contract Attacker {
    YieldVault vault;
    uint256 count;

receive() external payable { if (count < 5) { count++; vault.harvest(address(this)); } } } ```

Kết quả: trong mô phỏng, contract rút 15.000 ETH từ pool chỉ với 0.1 ETH phí gas. Tôi gửi báo cáo cho đội ngũ YieldVault với đề xuất sửa: chuyển totalRewards -= reward lên trước lời gọi call, hoặc dùng ReentrancyGuard của OpenZeppelin.

Phản hồi của họ: 'Chúng tôi đã test trên mạng local và không thấy lỗi. Có thể do môi trường test của anh sai.' Họ không tin. Tôi không tranh luận. Tôi gửi họ link GitHub repo chứa PoC có thể chạy lại, kèm log rõ ràng. Họ im lặng 2 ngày, rồi xác nhận lỗi và trì hoãn mainnet.

Contrarian

Nhiều người nghĩ rằng audit là đủ để đảm bảo an toàn. Sai. Audit chỉ là một lớp trong bảo mật nhiều tầng. Với YieldVault, họ có 3 auditor khác ngoài tôi, nhưng không ai bắt được lỗi này vì họ chỉ đọc code, không chạy fuzz test với biên độ gas cao. Lỗ hổng reentrancy cổ điển vẫn tồn tại sau 7 năm bởi vì developer vẫn đặt interaction trước state update, và auditor vẫn dựa vào review tĩnh thay vì dynamic analysis.

Tôi từng nói trong bài viết 'Im lặng là vàng, code là chứng cứ': nếu bạn không thể chứng minh lỗi bằng code chạy được, đừng mong đội ngũ phát triển tin bạn. Trong thị trường gấu hiện tại, các dự án đốt tiền vào marketing và liquidity mining, nhưng cắt giảm ngân sách bảo mật. Đây là công thức cho thảm họa.

Takeaway

YieldVault may mắn vì tôi phát hiện lỗi trước mainnet. Nhưng hàng trăm giao thức khác đang chạy với những lỗi tương tự, chờ một kẻ tấn công thông minh và một mempool rò rỉ. Bạn có dám chắc contract mình đang stake không có dòng call trước cập nhật trạng thái? Tôi thì không. Và tôi không chỉ đọc – tôi chạy thử.

Sợ & Tham

27

Sợ hãi

Tâm lý thị trường

Chỉ số mùa altcoin

44

Mùa Bitcoin

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

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

Tất cả →
# Tiền điện tử Giá
1
Bitcoin BTC
$63,099.9
1
Ethereum ETH
$1,871.2
1
Solana SOL
$73.03
1
BNB Chain BNB
$580.2
1
XRP Ledger XRP
$1.06
1
Dogecoin DOGE
$0.0702
1
Cardano ADA
$0.1751
1
Avalanche AVAX
$6.37
1
Polkadot DOT
$0.7710
1
Chainlink LINK
$8.11

🐋 Theo dõi cá voi

🔴
0xc675...a374
2 phút trước
Chuyển ra
4,337 ETH
🔵
0x0c35...8201
2 phút trước
Stake
31,521 BNB
🔴
0xc609...2550
3 giờ trước
Chuyển ra
6,587 BNB