Dữ liệu từ Dune Analytics cho thấy một giao thức lending trên Arbitrum đã mất 4,2 triệu USD TVL chỉ trong 3 block hôm thứ Ba. Nguyên nhân: một lỗ hổng trong hợp đồng tính lãi suất biến động. Tôi kiểm tra lại mã nguồn đã được audit bởi hai công ty lớn, nhưng điểm yếu vẫn nằm ở logic phê duyệt token – một lỗi tưởng chừng như cơ bản.
Bối cảnh: Giao thức này thu hút hơn 200 triệu USD TVL nhờ APY hấp dẫn lên tới 45% cho pool DAI. Cơ chế của nó cho phép người dùng vay stablecoin với tài sản thế chấp là ETH, tương tự Aave nhưng có thêm tính năng "flash loan miễn phí" – điều này tạo ra vector tấn công phức tạp.
Phân tích kỹ thuật: Hợp đồng chính sử dụng mô hình "interest rate index" lưu trữ lãi suất tích lũy trên storage riêng. Kẻ tấn công đã gọi hàm updateInterest() ngoài luồng, khiến index bị rollback về giá trị cũ. Kết hợp với reentrancy từ callback token ERC-777, chúng đã rút toàn bộ thanh khoản chỉ trong vài giây. Mã nguồn cho thấy modifier nonReentrant chỉ bảo vệ hàm withdraw(), nhưng không áp dụng cho hàm flashLoan() – đây là lỗi thiết kế điển hình khi dev tin vào composability mù quáng.
Điểm mù bảo mật: Hầu hết audit chỉ kiểm tra từng hàm riêng lẻ, bỏ qua luồng giao dịch cross-function. Trong trường hợp này, ba hàm deposit(), borrow(), và liquidate() đều có thể bị khai thác nếu gọi đúng thứ tự. Tôi đã từng cảnh báo điều này trong bài phân tích về OpenCurrency năm 2017 – lỗ hổng không đợi ai.
Takeaway: DeFi chưa bao giờ an toàn tuyệt đối. Giao thức này đã dừng hoạt động, TVL về 0. Câu hỏi đặt ra: Khi nào các team bắt đầu kiểm tra interaction thay vì chỉ audit từng dòng code? Code sạch, tâm yên – nhưng chỉ khi bạn hiểu hệ thống vận hành như một tổng thể.