Hôm qua, tôi nhận được một cảnh báo từ bot on-chain của mình: một giao thức lending hàng đầu trên Ethereum, Aave V3 fork tên là “NexusLend”, đã mất 8.2 triệu USD trong một giao dịch duy nhất. Nguyên nhân? Kẻ tấn công đã thao túng giá oracle của cặp stETH/ETH thông qua một loạt swap trên DEX aggregator. Nghe có vẻ giống một vụ hack oracle điển hình, nhưng khi tôi đào sâu vào contract bytecode, tôi phát hiện ra điều gì đó tinh vi hơn nhiều: đây không chỉ là một lỗi kỹ thuật, mà là một cuộc “phá hủy có hệ thống” năng lực phản kháng của giao thức – giống hệt như cách Nga nhắm vào các cơ sở UAV của Ukraine.
Bối cảnh: Chu kỳ thổi phồng của lending aggregator NexusLend ra mắt vào tháng 3 năm 2024, huy động 15 triệu USD từ các quỹ danh tiếng. Nó tự hào là “lớp thanh khoản thông minh” kết nối nhiều oracle (Chainlink, Tellor, MakerDAO). APY staking token của nó đạt đỉnh 47% vào tháng 4, TVL chạm 1.2 tỷ USD. Đúng với công thức của tôi: APY liquidity mining về cơ bản là dự án bù đắp cho con số TVL. Khi incentive giảm, TVL cũng giảm. NexusLend đã cắt giảm phần thưởng vào đầu tháng 5, và TVL rơi xuống còn 400 triệu USD. Đội ngũ phát triển, trong nỗ lực giữ chân người dùng, đã implement một tính năng mới: cho phép user vay không thế chấp khi dùng stETH làm tài sản thế chấp, với cơ chế thanh lý dựa trên giá oracle trung bình trong 3 block. Chính cơ chế này đã trở thành “cơ sở UAV” của NexusLend.
Phần lõi: Mổ xẻ kỹ thuật cuộc tấn công Tôi phân tích block #18763011. Kẻ tấn công đã deploy một contract helper, sau đó thực hiện 12 bước: 1. Flash loan 100,000 ETH từ Ethereum. 2. Swap 20,000 ETH thành stETH trên Uniswap V3, đẩy giá stETH/ETH lên 3%. 3. Gửi stETH vào NexusLend làm tài sản thế chấp. 4. Vay tối đa số ETH dựa trên oracle trung bình 3 block (giá stETH đã bị đẩy lên ở bước 2 vẫn chưa được làm mới đầy đủ trong 3 block đầu tiên). 5. Lặp lại swap và vay thêm ở các block tiếp theo, mỗi lần tận dụng độ trễ giữa oracle cập nhật và giá thực tế. 6. Sau 4 lần, tổng nợ vay vượt quá giá trị thế chấp, nhưng cơ chế thanh lý không kích hoạt vì oracle giá trung bình vẫn thấp hơn ngưỡng thanh lý. 7. Kẻ tấn công dump stETH trở lại, giá giảm mạnh, oracle trung bình giờ mới phản ánh mức giá thấp, kích hoạt thanh lý… nhưng thanh lý được thực hiện bởi chính contract của kẻ tấn công, cho phép hắn mua lại tài sản thế chấp với giá rẻ, đồng thời trốn tránh phí thanh lý.
Điều đáng chú ý: lỗ hổng này không phải do oracle lỗi, mà do thiết kế cơ chế thanh lý dựa trên oracle trung bình đã tạo ra một khe cửa thời gian cho kẻ tấn công. Nhìn bề ngoài, NexusLend đã làm theo best practice (dùng nhiều nguồn oracle, lấy trung bình). Nhưng thực tế, chính sự “an toàn” đó lại khiến nó dễ bị tổn thương. Tôi nhớ lại phát hiện của mình về lỗ hổng reentrancy trong TheDAO 2.0 năm 2017: khi đó, audit bỏ sót vì họ quá tập trung vào logic fallback tiêu chuẩn mà không nhìn thấy bức tranh toàn diện về luồng gọi contract. Ở đây cũng vậy: các auditor chỉ kiểm tra từng oracle riêng lẻ, không mô phỏng hành vi tổng hợp của chúng trong điều kiện thị trường biến động mạnh.
Góc nhìn phản trực giác: Kẻ tấn công thực ra đang giúp NexusLend Nghe có vẻ điên rồ, nhưng tôi cho rằng cuộc tấn công này là một “cuộc giải phẫu cần thiết” cho DeFi. Nếu không có ai khai thác lỗ hổng này, một kẻ tấn công lớn hơn (có thể là một quỹ đầu tư có tổ chức) sẽ lợi dụng nó để rút sạch pool, gây thiệt hại hàng trăm triệu. Hơn nữa, vụ hack đã phơi bày một điểm mù trong thiết kế oracle: các giải pháp “đa oracle” không tự động an toàn hơn nếu logic xử lý đầu vào bị lỗi. Cộng đồng thường đổ lỗi cho Chainlink hoặc Tellor khi có hack oracle, nhưng thực tế, lỗi nằm ở cách các giao thức tiêu thụ dữ liệu. Trong trường hợp này, NexusLend đã “hy sinh” để cả ngành học được bài học. Phần phe bò (những người tin vào DeFi) đúng: thị trường sẽ tự điều chỉnh, nhưng cái giá phải trả là 8.2 triệu USD của LP vô tội.
Kết luận: Ai chịu trách nhiệm? Cuộc tấn công oracle vào NexusLend không phải là một tai nạn. Nó là kết quả của sự kết hợp giữa tham lam (chạy theo APY), lười biếng (dùng template audit rập khuôn) và thiếu tầm nhìn (không test stress hệ thống với các kịch bản giá cực đoan). Điều tôi muốn hỏi: khi nào các giao thức DeFi mới ngừng coi bảo mật như một chi phí cần cắt giảm? Khi nào các nhà đầu tư mới đòi hỏi audit động, có mô phỏng hành vi kẻ tấn công, thay vì audit tĩnh chỉ để lấy checkmark? Tôi đã thấy TheDAO, Yam Finance, và bây giờ là NexusLend. Liệu chúng ta có cần thêm một tổn thất 100 triệu USD nữa mới thay đổi?