24 triệu USDC. Số tiền đó vừa biến mất khỏi public OLP vault của Ostium. PeckShield ghi nhận, attacker đã swap toàn bộ sang ETH, sau đó chuyển 10,500 ETH vào Tornado Cash. Giao dịch dừng. Margin bị đóng băng. Đội ngũ hứa sẽ cập nhật. Đây là một câu chuyện quen thuộc đến nhàm chán, nhưng mỗi lần xảy ra lại mang một bài học mới về những lỗ hổng mà ngành chúng ta vẫn chưa vá.
Bối cảnh
Ostium là một Perpetual DEX, loại hình đã trở nên phổ biến trong bull run gần đây. Các giao thức như GMX, dYdX, hay Gains Network đã tạo ra một thị trường sôi động với hàng tỷ đô la TVL. Ostium cũng đi theo mô hình "public OLP vault" – một quỹ thanh khoản tổng hợp mà người dùng có thể góp vốn để làm đối tác cho các trader. Về mặt thiết kế, nó tương tự GLP của GMX. Về mặt bảo mật, nó hoàn toàn khác. Vụ tấn công vừa qua cho thấy rõ ràng: smart contract của Ostium có một lỗ hổng nghiêm trọng ở cấp độ vault. Attacker đã khai thác thành công, rút sạch 24 triệu USDC. Đội ngũ không có cơ chế phản ứng kịp thời; họ chỉ có thể tạm dừng giao dịch và đóng băng margin sau khi sự việc đã xảy ra. Họ phối hợp với SEAL 911 và cơ quan chức năng, nhưng số tiền đã vào Tornado Cash – gần như không thể truy vết.
Trong bối cảnh thị trường đang đi ngang, loại sự kiện này thường tạo ra hiệu ứng phản ứng dây chuyền. Các dự án Perp DEX nhỏ hơn sẽ bị nghi ngờ. Các nhà đầu tư sẽ rút thanh khoản khỏi những giao thức chưa có audit lịch sử dài. Nhưng tác động tổng thể lên toàn ngành là có giới hạn. Thị trường đã quen với những vụ hack, và thanh khoản sẽ chỉ dịch chuyển sang các sàn an toàn hơn.
Phân tích kỹ thuật: Lỗ hổng nằm ở đâu?
Với kinh nghiệm audit của tôi, một vụ tấn công vào public vault thường đến từ một trong hai vector: (1) lỗ hổng trong cơ chế rút tiền của vault, hoặc (2) thao túng oracle để attacker có thể rút nhiều hơn số tiền đáng lẽ được phép. Trường hợp của Ostium, dữ liệu on-chain cho thấy attacker đã rút toàn bộ 24 triệu USDC chỉ trong một giao dịch duy nhất – hoặc một chuỗi giao dịch rất ngắn. Điều này cho thấy lỗ hổng không phải là do oracle bị tấn công dần dần, mà là một lỗi trong logic cho phép rút tiền mà không có kiểm tra số dư đầy đủ. Khi một vault cho phép bất kỳ ai rút toàn bộ số dư mà không có cơ chế khóa thời gian hay xác thực đa chữ ký, đó là một thiết kế thất bại ngay từ đầu.
So sánh với GMX: GLP vault có cơ chế mint/burn được kiểm soát chặt chẽ, với fee và trượt giá động, và quan trọng nhất là có nhiều lớp bảo vệ như pause function và ownership transfer. Trong khi đó, Ostium dường như không có các lớp bảo vệ đó – hoặc nếu có thì đã bị vô hiệu hóa bởi lỗ hổng. Dựa trên những gì đội ngũ công bố, họ chỉ có thể đóng băng margin sau khi sự việc xảy ra, nghĩa là smart contract không có sẵn một emergency stop có hiệu quả.
Một điểm đáng chú ý khác: attacker đã swap toàn bộ USDC sang ETH trước khi chuyển vào Tornado Cash. Điều này cho thấy attacker hiểu rõ về thanh khoản trên DEX và có thể thao túng slippage. Nếu Ostium có một router swap tích hợp sẵn, lỗ hổng có thể liên quan đến việc attacker có thể gọi hàm swap với tham số tùy ý, cho phép rút tiền mặt dù không có token tương ứng trong vault. Đây là một kiểu tấn công reentrancy cổ điển, hoặc là lỗi trong phép tính tỷ lệ khi chuyển đổi giữa các token trong pool.
Từ góc nhìn của một Layer2 Research Lead, tôi nhận thấy rằng loại lỗ hổng này thường xuất hiện ở các dự án trẻ, vội vàng ra mắt để bắt kịp bull run. Họ skip audit hoặc chỉ audit formal nhưng không test edge cases. Kết quả: một attacker có thể đọc code và tìm ra lỗi trong vài giờ. 24 triệu USDC là cái giá phải trả cho sự thiếu kỹ lưỡng.
Góc nhìn phản trực giác: "DeFi cần công khai audit log"
Nhiều người sẽ nói rằng vụ hack này là minh chứng cho sự non trẻ của DeFi và kêu gọi quản lý chặt chẽ hơn. Tôi cho rằng điều ngược lại mới đúng: vấn đề không nằm ở quản lý, mà nằm ở việc thiếu minh bạch trong quy trình audit. Hãy nhìn vào cách mà các dự án CeFi như Binance hay Coinbase xử lý security: họ có bug bounty, có public audit report, có insurance fund. Trong DeFi, nhiều dự án chỉ khoe "audited by X" mà không công bố báo cáo đầy đủ, hoặc audit chỉ cover một phần code. Với Ostium, vẫn chưa rõ ai đã audit và audit những gì. Nếu một dự án không công bố audit log, điều đó nên được coi là red flag ngay lập tức.
Điểm mù thứ hai: Tornado Cash vẫn là một nỗi ám ảnh. Bất chấp lệnh trừng phạt của OFAC, attacker vẫn dùng nó để rửa tiền. Điều này cho thấy các biện pháp kiểm soát hiện tại không hiệu quả. Cách duy nhất để ngăn chặn là phát hiện và ngăn chặn dòng tiền trước khi nó vào Tornado Cash. Đội ngũ Ostium đã không có cơ chế đó. Họ chỉ dừng giao dịch sau khi tiền đã bay. Một giải pháp khả thi: sử dụng on-chain monitoring bot tự động khóa vault khi phát hiện hành vi bất thường (ví dụ rút toàn bộ số dư trong một block). Nhưng điều đó đòi hỏi phải có sẵn infrastructure mà hầu hết các dự án nhỏ không có.
Takeaway: Lỗ hổng vẫn còn.
24 triệu USDC là một bài học đắt giá. Nhưng thị trường sẽ quên nhanh thôi. Tuần sau, một dự án khác sẽ bị hack, và mọi người lại tiếp tục chạy theo yield. Điều duy nhất tôi có thể khuyên: nếu bạn là một LP, hãy kiểm tra audit report trước khi deposit. Nếu bạn là một developer, hãy học từ lỗi của Ostium và kiểm tra lại logic vault của mình. Còn đối với các VC đã đầu tư vào dự án này – chúc may mắn với danh mục đầu tư của bạn.
Gas rẻ hơn, nhưng lỗ hổng vẫn còn.