Trong 7 ngày qua, thanh khoản của một giao thức cho vay hàng đầu đã giảm 40%. Con số này không đến từ một cuộc tấn công reentrancy phức tạp hay một exploit hợp đồng thông minh tinh vi. Nó đến từ một lỗi trong cách giao thức cập nhật oracle giá.
Tôi là Hồ Vy, một DeFi Security Auditor tại Boston. Tôi đã dành 11 năm để quan sát ngành này, và tôi có thể nói với bạn rằng: loại sự kiện này sẽ xảy ra thường xuyên hơn khi thị trường giảm. Các giao thức đang chảy máu, và nguyên nhân thường không phải là những gì bạn nghĩ.
Hãy để tôi giải thích. Giao thức này sử dụng một oracle giá tổng hợp, kết hợp dữ liệu từ nhiều nguồn khác nhau. Vấn đề nằm ở logic cập nhật. Khi một nguồn chính bị lag (do tắc nghẽn mạng hoặc lỗi node), oracle sẽ rơi vào trạng thái không nhất quán. Nó vẫn hoạt động, nhưng với giá từ nguồn phụ có độ trễ cao hơn.
Đây là nơi mà hầu hết mọi người bỏ lỡ. Họ nghĩ rằng oracle tổng hợp là an toàn. Nhưng trên thực tế, cơ chế failover là điểm mù bảo mật lớn nhất. Tôi đã thấy điều này trong quá trình audit của mình. Năm 2020, khi audit một bản fork của Uniswap V2, tôi phát hiện ra rằng logic cập nhật phí swap đã khiến khoảng 10.000 USD bị mất. Lý do tương tự: một giả định sai về cách dữ liệu được đồng bộ hóa.
Trong trường hợp này, giá từ oracle lag đã cho phép các bot chênh lệch giá khai thác. Chúng vay tài sản với giá thấp giả tạo và bán chúng trên các sàn giao dịch khác với giá thực tế cao hơn. Kết quả? Các nhà cung cấp thanh khoản (LP) mất 40% vốn của họ trong vòng một tuần.
Điều phản trực giác là: không ai hack oracle. Họ chỉ khai thác một lỗ hổng trong thiết kế của nó. Đây là một cuộc tấn công 'cơ học thị trường', không phải là một cuộc tấn công mã nguồn. Và nó cho thấy một sự thật khó chịu: ngay cả các giao thức được audit kỹ lưỡng nhất cũng có thể thất bại nếu các giả định cơ bản của chúng về tính khả dụng của dữ liệu là sai.
Từ kinh nghiệm audit của tôi, lỗi này thường bị bỏ qua vì nó không xuất hiện trong các bài kiểm tra đơn vị. Các bài kiểm tra giả định rằng oracle luôn trả về giá chính xác. Nhưng trong thế giới thực, độ trễ mạng, tắc nghẽn và các lỗi node là có thật. Các giao thức cần phải kiểm tra tính khả dụng và độ trễ của các nguồn oracle của họ, không chỉ tính chính xác của giá.
Vậy, takeaway là gì? Trong thị trường giảm hiện tại, sự sống còn quan trọng hơn lợi nhuận. Các nhà đầu tư nên tìm kiếm các giao thức có cơ chế oracle mạnh mẽ, với nhiều lớp dự phòng và kiểm tra độ trễ. Còn các nhà phát triển? Hãy nhớ rằng: một oracle chỉ mạnh bằng mắt xích yếu nhất của nó. Và mắt xích đó thường là cách nó xử lý khi mọi thứ không hoạt động hoàn hảo.
Câu hỏi cuối cùng: liệu giao thức này có thể phục hồi sau khi mất 40% thanh khoản? Hay đây là dấu hiệu của một sự sụp đổ lớn hơn? Tôi sẽ theo dõi chặt chẽ.