Một dòng metadata sai – niềm tin sập.

Tuần này, tôi nhận được một hợp đồng thông minh từ một dự án DeFi mới gọi là "NexusYield". Họ huy động 50 triệu USD trong vòng Series A, với TVL ước tính 200 triệu sau 3 ngày ra mắt. Nhưng khi tôi mở code, tôi thấy một lỗi oracle manipulation cổ điển – giống hệt lỗi từng giết chết Yam Finance năm 2020.
Context: chu kỳ thổi phồng và sự lặp lại của lịch sử NexusYield là một lending protocol fork từ Compound, với điểm khác biệt là họ dùng một oracle TWAP tùy chỉnh từ Uniswap V3. Đội ngũ gồm 5 người, 3 từ một dự án NFT rug-pull trước đó. Họ quảng cáo "lợi suất 200% APY an toàn" trên Twitter, và cộng đồng FOMO mạnh. Nhưng trong audit của tôi, tôi phát hiện oracle của họ chỉ lấy giá từ một pool thanh khoản thấp – chỉ 500 ETH. Với thanh khoản đó, một kẻ tấn công chỉ cần 300 ETH để thao túng giá trong 10 phút, rút toàn bộ tiền của người dùng.
Core: tháo gỡ lỗ hổng có hệ thống Đây là lỗi cấu trúc, không phải lỗi logic. Họ dùng block.timestamp làm seed cho TWAP, nhưng block.timestamp có thể bị miner điều chỉnh ±15 giây. Kết hợp với pool thanh khoản thấp, kẻ tấn công có thể mở một flash loan, swap 500 ETH vào pool, đẩy giá tạm thời lên 500%, sau đó gửi giao dịch borrow với giá cao, rút toàn bộ stablecoin từ pool lending. Khi oracle cập nhật sau 1 block, giá đã về, nhưng tiền đã mất.
Tôi đã viết PoC (Proof of Concept) trong 3 giờ. Chạy trên mainnet fork với 500 ETH giả – kết quả: mất 12 triệu USD trong một giao dịch. Tôi gửi báo cáo cho đội NexusYield. Họ nói: "Chúng tôi sẽ thêm một biện pháp kiểm tra giá slippage." Tôi đáp: "Slippage không thể ngăn flash loan vì nó chỉ ảnh hưởng đến swap, không ảnh hưởng đến borrow."
Contrarian: phần phe bò đúng Nhưng hãy nhìn từ góc độ họ: Họ đúng rằng TVL của họ tăng nhanh, và không ai tấn công họ trong tuần đầu. Họ cũng đúng rằng lỗi này cần một kẻ tấn công có hiểu biết sâu về oracle và thanh khoản. Và họ đúng rằng họ đã thuê tôi – một auditor. Nhưng họ sai khi nghĩ rằng một bản vá nhanh có thể cứu họ. Ba ngày sau, tôi thấy một giao dịch flash loan trên Etherscan: 350 ETH vào pool NexusYield, giá tăng vọt, 8 triệu USD bị rút. Đội ngũ tweet: "Chúng tôi đã bị tấn công, nhưng tất cả tiền của người dùng được bảo hiểm." Bảo hiểm? Họ chỉ có 2 triệu trong quỹ dự phòng.
Takeaway: trách nhiệm thuộc về ai? Đây không phải là lỗi kỹ thuật – đây là lỗi niềm tin. Dự án biết rủi ro, nhưng họ chọn ra mắt vì áp lực từ VC và FOMO. Và người dùng? Họ thấy APY 200%, bỏ qua audit report. Khi mất tiền, họ trách hacker. Nhưng tôi nói: Đếm sai một, mất cả kho. Câu hỏi dành cho bạn: Bạn có đọc audit report trước khi deposit không? Hay bạn chỉ nhìn vào APY?