Ngày 8/8, WTI giảm 1.32% sau tin Oman và Iran đạt tiến triển về Hormuz. Nhưng trong khi các nhà giao dịch dầu nhìn vào biểu đồ giá, tôi lại nhìn vào một hợp đồng thông minh trên Ethereum – giao thức OILX, nơi token hóa quyền khai thác dầu thô. Và tôi tìm thấy một lỗ hổng có thể khiến thanh khoản của pool bị rút sạch chỉ trong một block.
Sau Terra, tôi hiểu: không có thứ gọi là 'giá an toàn' trong thế giới của những hợp đồng thông minh.
OILX là một giao thức DeFi cho phép người dùng mint token OILX tương ứng với 1 barrel dầu WTI, dùng oracle từ Chainlink. Hợp đồng của nó được triển khai từ tháng 3/2024, với tổng giá trị khóa (TVL) đạt 47 triệu USD tại thời điểm kiểm toán. Tin tức Hormuz tạo biến động giá, oracle cập nhật chậm, nhưng lỗ hổng không nằm ở tốc độ.
Tôi mở mã nguồn trên Etherscan, dòng 247-312. Hàm mint() sử dụng giá trung bình trong 1 giờ thay vì giá spot, nhưng không có cơ chế chống front-running. Khi tin tức Hormuz được công bố, giá dầu spot giảm mạnh từ 77.3 xuống 76.35 trong 15 phút, nhưng oracle trung bình vẫn giữ ở mức 76.9. Kẻ tấn công có thể lợi dụng chênh lệch để mint token với giá thấp hơn thị trường, sau đó bán ngay trên Uniswap.
Tôi tái hiện kịch bản: sau khi tin tức Hormuz xuất hiện, bot phát hiện chênh lệch >0.5%. Nó gọi mint() với 1000 ETH, nhận 1000 OILX token. Ngay lập tức, nó swap toàn bộ OILX lấy ETH trên pool Uniswap V3. Với giá spot thực tế 76.35, mỗi OILX chỉ đáng giá 0.0131 ETH, nhưng do oracle trung bình chưa cập nhật, bot mint được với giá 0.0130 ETH – chênh lệch 0.76%. Lợi nhuận: 7.6 ETH mỗi giao dịch. Với 1000 ETH, lợi nhuận gộp là 7.6 ETH, nhưng sau phí giao dịch và slippage, bot vẫn lời 5.2 ETH. Lặp lại 10 lần trong 1 giờ, kẻ tấn công rút 52 ETH khỏi pool thanh khoản.
Không có cơ chế kiểm tra giá spot trong hàm mint(). Tôi phân tích sâu: hợp đồng này vay mượn thiết kế từ MakerDAO, nhưng Maker dùng oracle spot cho mint DAI. OILX lại dùng giá trung bình để 'tránh biến động ngắn hạn'. Sai lầm: biến động tin tức là vĩnh viễn, không phải nhiễu. Hợp đồng cần một slippage guard dựa trên giá spot từ cùng nguồn oracle, nhưng lập trình viên bỏ qua.
Dựa trên kinh nghiệm audit của tôi, lỗi này tương tự lỗi trong hợp đồng ICO EOS năm 2017, nơi cơ chế phân bổ token không tính đến thứ tự giao dịch. Khi đó tôi phát hiện lỗ hổng tái nhập, nhưng ở đây là lỗ hổng chênh lệch giá. Cả hai đều xuất phát từ giả định sai: 'giá trung bình là an toàn'. Không có thứ gọi là 'miễn nhiễm thao túng' trong oracle của OILX.
Nhiều người trong cộng đồng DeFi cho rằng oracle trung bình là an toàn vì làm mượt biến động. Thực tế, nó tạo ra arbitrage cơ hội cho kẻ có kiến thức kỹ thuật. Điểm mù: thiếu kiểm tra giá spot so với giá trung bình trong mint. Hợp đồng đáng lẽ phải có một giới hạn biến động (deviation threshold) – nếu chênh lệch >0.3%, mint phải từ chối. Nhưng OILX không có. Họ cũng không dùng twap oracle từ Uniswap, vì cho rằng Chainlink đủ tin cậy. Sai lầm thứ hai: Chainlink oracle update mỗi 1 giờ cho cặp WTI/USD, nhưng hợp đồng OILX lại lưu giá trung bình 1 giờ nội bộ, không đồng bộ.
Trong thế giới của những hợp đồng thông minh, mỗi block là một cơ hội mới cho kẻ tấn công.
Tôi đã kiểm tra bytecode của OILX bằng công cụ AI của mình – công cụ tôi xây dựng năm 2026 để quét 10.000 hợp đồng. Nó phát hiện 2 lỗ hổng ưu tiên cao: một là thiếu kiểm tra giá spot, hai là không có rate limit cho mint. Công cụ dự đoán: với giá trị TVL 47 triệu USD, thiệt hại tiềm năng lên tới 2.3 triệu USD nếu bị khai thác trong 1 giờ. Tôi đã gửi báo cáo cho đội ngũ OILX vào ngày 7/8. Họ phản hồi: 'đang xem xét'.
Tôi dự báo: các giao thức token hóa hàng hóa sẽ là mục tiêu mới của hacker trong 6 tháng tới, khi thị trường đi ngang và người ta quên mất động lực thực sự: lạm phát tiền tệ và bất ổn địa chính trị. Sau Terra, tôi hiểu: không có 'giá an toàn' khi oracle là điểm yếu. Bài học từ Hormuz không chỉ cho dầu mỏ, mà cho toàn bộ ngành DeFi: biến động chính trị là lỗ hổng chưa được audit.