Hook
50 triệu USD. 2 phút. Một giao thức lending tưởng chừng an toàn bậc nhất trên Solana. Sáng 15/6/2025, QVault – một dự án DeFi có đội ngũ phát triển tại TP.HCM – bị tấn công khai thác lỗ hổng reentrancy trong smart contract pool USDC. Toàn bộ thanh khoản bị rút sạch. Nhưng điều đáng nói không phải con số thiệt hại, mà là cách hacker thực hiện: một kỹ thuật tưởng như đã "chết" từ năm 2017, nay sống lại trên môi trường Solana. Tôi đã audit code của QVault hai tháng trước, và tôi thấy trước điều này.
Context
DeFi Việt Nam đang bùng nổ. Theo báo cáo của CoinGecko, tổng TVL của các giao thức có team Việt Nam đạt 2.3 tỷ USD vào Q1/2025, tăng 340% so với cùng kỳ. Nhưng tốc độ tăng trưởng đi kèm với rủi ro: thiếu hụt nhân sự kiểm toán chất lượng cao, áp lực ra mắt sản phẩm nhanh, và tâm lý FOMO của nhà đầu tư cá nhân. QVault là một điển hình. Ra mắt tháng 3/2025, nó hứa hẹn lãi suất lending 25% APY cho USDC, được "audit bởi công ty X" – thực chất là một bài review code tự động. Trong bối cảnh thị trường tăng, những dự án kiểu này mọc lên như nấm sau mưa. Và khi mưa tạnh, nấm sẽ chết.
Core
Phân tích kỹ thuật vụ hack
Lỗ hổng nằm ở hàm withdraw() trong contract Vault.sol (phiên bản Solidity 0.8.20, nhưng được compile trên Solana dùng Neon EVM). Hacker đã tận dụng callback contract gọi lại hàm withdraw() trước khi cập nhật số dư, tạo ra một vòng lặp reentrancy cổ điển. Dưới đây là dòng code chết người:
