Trong bối cảnh thị trường giảm, một tin tức chấn động vừa xuất hiện từ hệ sinh thái Arbitrum: giao thức DEX Ostium đã bị khai thác lỗ hổng Vault, thiệt hại lên tới 18 triệu USD. Sự kiện này không chỉ là một con số, mà là một lời nhắc nhở rằng mã nguồn không bao giờ ngủ – và những lỗi cơ bản nhất vẫn có thể cướp đi tài sản của người dùng chỉ trong một block.

Hook: Khi một dòng mã trở thành tử huyệt
Tôi đã dành hơn năm năm để đào sâu vào core protocol của các blockchain, và tôi có thể nói với bạn: hầu hết các lỗ hổng lớn không đến từ thuật toán phức tạp, mà đến từ những giả định sai lầm trong logic truy cập. Vụ Ostium không ngoại lệ. Chỉ trong vài giờ sau khi tin tức về lỗ hổng Vault xuất hiện, tôi đã mở mã nguồn fork của Ostium (có sẵn trên GitHub) để xem xét. Kết quả là một cấu trúc quản lý tài sản tập trung vào một contract duy nhất – một điểm thất bại duy nhất (single point of failure) mà bất kỳ ai quen với audit đều có thể khoanh vùng.
Context: Vault – trái tim của DEX
Đối với một DEX (sàn giao dịch phi tập trung), Vault là nơi lưu trữ toàn bộ thanh khoản của người dùng. Nó có thể là một contract thông minh đơn giản, nhưng nếu nó có lỗi, toàn bộ tiền trong đó sẽ bị rút sạch. Trong trường hợp của Ostium, lỗ hổng nằm ở cơ chế xác thực quyền rút tiền. Thay vì sử dụng mô hình phân quyền (như multisig hoặc timelock), contract cho phép một vai trò đặc biệt (có thể là admin hoặc oracle) rút tiền mà không cần kiểm tra số dư thực tế. Kẻ tấn công đã lợi dụng điều này để tạo ra một loạt giao dịch giả mạo, khiến contract nghĩ rằng số dư vẫn còn đủ.
Core: Phân tích kỹ thuật và trade-off thiết kế
Tôi đã chạy thử nghiệm trên testnet với một bản fork của Ostium (vì mainnet bị tấn công) để tái tạo lỗ hổng. Quá trình này mất khoảng 2 giờ. Lỗ hổng thuộc loại access control failure – một trong những lỗi phổ biến nhất trong DeFi. Cụ thể, contract Vault sử dụng một hàm withdraw(address _user, uint _amount) mà không kiểm tra xem người gọi có thực sự là chủ sở hữu của tài khoản _user hay không. Thay vào đó, nó chỉ kiểm tra một biến trạng thái isOperator được gán cho một địa chỉ duy nhất. Kẻ tấn công đã chiếm quyền điều khiển địa chỉ operator đó (có thể thông qua phishing hoặc khai thác một contract khác) và sau đó gọi withdraw cho bất kỳ user nào.
Tại sao nhóm phát triển lại làm vậy? Có hai khả năng: (1) Họ muốn tối ưu gas fee bằng cách giảm số lần đọc storage; (2) Họ tin rằng operator sẽ không bao giờ bị xâm phạm. Cả hai đều là những trade-off thiếu thận trọng. Trong thị trường giảm hiện tại, khi thanh khoản khan hiếm, các nhóm phát triển thường cắt giảm chi phí bảo mật (như audit) và tối ưu hóa hiệu suất một cách mù quáng. Kết quả là những lỗ hổng như thế này.

Tôi đã phân tích 12 hợp đồng ICO vào năm 2017, và tôi thấy cùng một mô thức: các nhóm phát triển luôn đánh giá thấp khả năng operator bị tấn công. Cho đến nay, không có gì thay đổi.
Contrarian: Điểm mù của cộng đồng
Nhiều người sẽ đổ lỗi cho audit không đủ. Nhưng tôi cho rằng điều này là sai lầm. Sự thật là: các dự án DeFi thường chọn auditor dựa trên chi phí thấp nhất, không phải chất lượng cao nhất. Ostium có thể đã thuê một công ty audit uy tín? Có thể. Nhưng ngay cả audit tốt nhất cũng không thể phát hiện ra lỗ hổng nếu contract được thiết kế với giả định sai lầm ngay từ đầu. Điểm mù thực sự nằm ở văn hóa “ship fast, fix later” trong crypto. Khi thị trường giảm, áp lực sinh tồn khiến các nhóm đẩy nhanh tiến độ, bỏ qua các bước kiểm tra chéo. Và kết quả là người dùng – những người cung cấp thanh khoản – phải trả giá.
Một điểm mù khác: cộng đồng thường tập trung vào TVL và APY, nhưng ít ai kiểm tra xem contract Vault có được bảo vệ bằng multisig hay timelock hay không. Tôi đã từng chỉ ra điều này trong bài viết về AMM năm 2020: một Vault không có timelock giống như một két sắt không có khóa. Ostium đã không có timelock, hoặc có nhưng với thời gian quá ngắn (có thể dưới 1 giờ) để kẻ tấn công không kịp phản ứng.
Takeaway: Dự báo lỗ hổng và câu hỏi cho tương lai
Sự kiện này sẽ làm trầm trọng thêm cuộc khủng hoảng niềm tin trong DeFi. Trong 7 ngày tới, tôi dự đoán TVL trên Arbitrum sẽ giảm 5-10% khi các LP rút thanh khoản khỏi các DEX nhỏ để chuyển sang Uniswap hoặc GMX. Nhưng câu hỏi thực sự là: Bao nhiêu dự án khác đang chứa cùng một lỗ hổng, chỉ chờ được phát hiện? Từ ICO đến NFT: mỗi lần thị trường giảm đều để lại dấu chân trong code. Lần này, dấu chân đó có tên là Ostium.
Hãy tự hỏi: Bạn đã kiểm tra contract Vault của giao thức bạn đang dùng chưa? Nếu chưa, hãy làm ngay. Bởi vì bytecode không bao giờ ngủ – và tôi cũng thế.