Nemo, giao thức giao dịch lợi suất trên Sui, bị thiệt hại khoảng 2,59 triệu USD vì triển khai mã chưa được audit, xuất phát từ một hàm giảm giảm giá cho phép thay đổi trạng thái giao thức.
Sự cố phơi bày lỗ hổng quản trị triển khai chỉ với 1 chữ ký và quy trình kiểm soát thay đổi áp dụng quá muộn. Nemo đã tạm dừng lõi giao thức, phát hành bản vá và lên kế hoạch bồi thường người dùng.
- Thiệt hại ước tính 2,59 triệu USD, nguyên nhân do mã chưa audit được đưa onchain qua quy trình một chữ ký.
- Nemo đã tạm dừng chức năng cốt lõi, gỡ flash loan, sửa hàm lỗi và thêm tính năng reset thủ công; Asymptotic đang audit bản vá.
- Bài học: kiểm soát phát hành nhiều lớp, multi-sig, xác minh hash audit, và khắc phục theo chuẩn an toàn phần mềm.
Sự cố bảo mật của Nemo là gì?
Nemo xác nhận thiệt hại khoảng 2,59 triệu USD sau vụ hack ngày 7/9, bắt nguồn từ một hàm giảm giảm giá cho phép kẻ tấn công thay đổi trạng thái giao thức. Nguồn: báo cáo hậu kiểm của Nemo.
Theo phân tích chính thức, hàm có tên get_sy_amount_in_for_exact_py_out đã được đẩy lên onchain khi chưa qua thẩm định đầy đủ bởi đơn vị audit hợp đồng thông minh Asymptotic. Lỗi logic trong hàm này mở đường cho hành vi thao túng.
Đây là một biến thể tấn công thao túng trạng thái qua bên trong giao thức, thường xảy ra khi thiếu kiểm tra trước-sau với các ràng buộc bất biến và kiểm soát quyền nâng cấp hợp đồng.
Vì sao lỗ hổng xảy ra?
Nguyên nhân trực tiếp là việc triển khai mã chưa audit thông qua cơ chế chỉ cần một chữ ký, bỏ qua hash xác nhận từ phiên bản đã được kiểm toán. Nemo thừa nhận không xử lý kịp cảnh báo của auditor.
Asymptotic đã nêu vấn đề trong báo cáo sơ bộ, nhưng đội ngũ Nemo cho biết “không kịp thời xử lý quan ngại này”. Việc không dùng confirmation hash từ bản audit khi triển khai đã phá vỡ quy trình kiểm soát phát hành.
Về mặt quy trình, yêu cầu đa chữ ký, kiểm tra diff, và xác minh nhị phân có thể ngăn rủi ro “giảm tay” đưa mã chưa duyệt vào sản xuất, phù hợp khuyến nghị của NIST SP 800-218 (Secure Software Development Framework, 2022). Nguồn: NIST.
Thay đổi quy trình bảo mật diễn ra quá muộn?
Có. Mã dễ tổn thương được đẩy onchain từ đầu tháng 1, trong khi thủ tục nâng cấp an toàn hơn chỉ được áp dụng từ tháng 4, tức là sau khi lỗ hổng đã nằm trong môi trường sản xuất.
Dù quy trình đã được nâng cấp vào tháng 4, lỗ hổng tồn tại từ trước vẫn chưa bị loại bỏ. Ngày 11/8, Asymptotic cảnh báo Nemo, song dự án ưu tiên vấn đề khác và không khắc phục trước khi bị tấn công.
Đây là ví dụ điển hình về “khoảng trễ khắc phục” trong vòng đời lỗ hổng: phát hiện sớm nhưng remediation muộn, làm tăng xác suất khai thác. Chuẩn hóa SLA cho fix và áp cơ chế “block deploy khi có lỗ hổng nghiêm trọng” là tối quan trọng. Nguồn: báo cáo Nemo, NIST SSDF.
Tác động tài chính và phạm vi ảnh hưởng
Thiệt hại ước tính khoảng 2,59 triệu USD. Nemo cho biết đang phối hợp các nhóm bảo mật và cung cấp địa chỉ liên quan để hỗ trợ đóng băng tài sản trên sàn tập trung.
Con số thiệt hại không chỉ phản ánh rủi ro tức thời, mà còn kéo theo chi phí cơ hội, uy tín, và nghĩa vụ bồi thường. Việc truy vết dòng tiền và hợp tác với sàn tập trung là chuẩn thông lệ nhằm thu hồi một phần.
Trong bối cảnh DeFi, tổn thất dạng này có thể lan truyền qua tài sản thế chấp và thanh khoản liên chuỗi. Nemo cho biết đang thiết kế phương án bồi thường, bao gồm cấu trúc nợ ở cấp tokenomics. Nguồn: báo cáo Nemo.
“Nhóm nòng cốt đang xây dựng kế hoạch bồi thường chi tiết cho người dùng, bao gồm thiết kế cấu trúc nợ ở cấp tokenomics.”
– Nhóm phát triển Nemo, Báo cáo hậu kiểm sự cố, 9/2024, Nemo Post-mortem trên Notion
Nemo đã làm gì ngay sau sự cố?
Nemo đã tạm dừng các chức năng lõi để ngăn tổn thất tiếp diễn, phát triển bản vá, loại bỏ hàm flash loan, sửa đoạn mã dễ tổn thương và bổ sung cơ chế reset thủ công các giá trị bị ảnh hưởng.
Bản vá đang được Asymptotic audit. Việc tạm dừng nhanh giúp cô lập rủi ro, còn gỡ bỏ flash loan giảm bề mặt tấn công phổ biến. Tính năng reset thủ công hỗ trợ khôi phục trạng thái hệ thống an toàn hơn.
Nemo cũng chia sẻ địa chỉ liên quan cho các sàn tập trung để hỗ trợ đóng băng. Đây là đầu mối quan trọng để chặn rút thanh khoản rời hệ sinh thái, tăng khả năng truy hồi.
“Chúng tôi đã rút ra bài học rằng an ninh và quản trị rủi ro đòi hỏi sự cảnh giác liên tục, và sẽ áp dụng kiểm soát giao thức nghiêm ngặt hơn.”
– Nhóm phát triển Nemo, Báo cáo hậu kiểm sự cố, 9/2024, Nemo Post-mortem trên Notion
Trường hợp SuperRare gợi ý điều gì cho toàn ngành?
Cuối tháng 7, nền tảng giao dịch NFT SuperRare gặp sự cố 730.000 USD do lỗi hợp đồng thông minh cơ bản, mà theo các chuyên gia có thể ngăn chặn bằng quy trình kiểm thử tiêu chuẩn. Nguồn: tổng hợp báo cáo sự cố.
Điểm chung với Nemo là lỗi kỹ thuật không quá tinh vi, song quy trình kiểm soát chưa đủ chặt. Việc kiểm thử tự động, fuzzing, và kiểm tra bất biến có thể bắt các sai lệch logic trước khi phát hành.
Hai vụ việc cho thấy ba lớp bảo vệ cần đồng thời: chất lượng mã, quy trình phát hành, và năng lực phản ứng. Bất kỳ lớp nào suy yếu đều tăng bề mặt tấn công.
Bài học kỹ thuật và quản trị dành cho giao thức DeFi
Bài học cốt lõi là kiểm soát thay đổi đa lớp, từ quy trình audit đến phát hành, cùng cơ chế tạm dừng và khôi phục. Tài liệu tham chiếu: NIST SSDF (2022), OpenZeppelin Best Practices.
– Bắt buộc multi-sig cho nâng cấp, xác minh hash đối chiếu với bản audit, kiểm tra diff và nhật ký thay đổi. – Thiết lập SLA khắc phục theo mức độ nghiêm trọng, cấm phát hành nếu có lỗ hổng critical chưa fix. – Thêm invariant tests, canary releases.
– Triển khai guardian/pause switch, giám sát runtime và cảnh báo bất thường. – Áp quy trình ký phát hành xác định nguồn gốc (SLSA, SBOM) theo chuẩn công nghiệp. Nguồn: NIST SP 800-218; OpenZeppelin Docs.
Bảng tóm tắt hai sự cố gần đây
Bảng dưới đây tổng hợp điểm giống và khác giữa Nemo và SuperRare dựa trên thông tin đã công bố.
Tiêu chí | Nemo (Sui) | SuperRare (NFT) |
---|---|---|
Thời điểm | 7/9 (giả định UTC, không có giờ cụ thể) | Cuối tháng 7 |
Thiệt hại ước tính | 2,59 triệu USD | 730.000 USD |
Nguyên nhân gốc | Mã chưa audit, hàm giảm giảm giá thay đổi trạng thái | Lỗi hợp đồng cơ bản, có thể ngăn chặn bằng kiểm thử tiêu chuẩn |
Yếu tố quy trình | Triển khai cần 1 chữ ký, không dùng confirmation hash | Thiếu kiểm thử/đảm bảo chất lượng đầy đủ |
Biện pháp khắc phục | Tạm dừng lõi, gỡ flash loan, sửa mã, reset thủ công, audit lại | Sửa lỗi hợp đồng, tăng cường kiểm thử (theo báo cáo sự cố) |
Kế hoạch bồi thường và lộ trình tiếp theo của Nemo
Nemo cho biết đang thiết kế kế hoạch bồi thường, bao gồm cấu trúc nợ ở cấp tokenomics, đồng thời tăng cường kiểm soát giao thức và quy trình audit phát hành.
Trong giai đoạn này, ưu tiên là bảo toàn tài sản còn lại, audit bản vá với Asymptotic và khôi phục các giá trị bị ảnh hưởng thông qua tính năng reset thủ công. Sau khi xác minh an toàn, lộ trình mở lại chức năng cần thận trọng theo pha.
Việc minh bạch tiến độ, công bố địa chỉ, và hợp tác với các sàn tập trung là chìa khóa khôi phục niềm tin. Nguồn: báo cáo hậu kiểm Nemo.
Nguồn tham khảo
– Báo cáo hậu kiểm Nemo: Security Incident Cause, Process and Fund Tracing Report V1.1 (Notion). Xem báo cáo
– NIST SP 800-218: Secure Software Development Framework, 2022. Tài liệu NIST
– OpenZeppelin: Best Practices for Smart Contract Development. Hướng dẫn OpenZeppelin
Câu hỏi thường gặp
Nemo bị thiệt hại bao nhiêu và vì sao?
Khoảng 2,59 triệu USD. Nguyên nhân do mã chưa audit được triển khai, cụ thể là hàm giảm giảm giá cho phép thay đổi trạng thái giao thức. Nguồn: báo cáo hậu kiểm Nemo.
Nemo đã làm gì để ngăn thiệt hại lan rộng?
Tạm dừng chức năng lõi, hợp tác các nhóm bảo mật, chia sẻ địa chỉ liên quan với sàn tập trung để hỗ trợ đóng băng, phát triển bản vá và audit lại với Asymptotic.
Bản vá hiện ở giai đoạn nào?
Bản vá đã được phát triển, loại bỏ flash loan, sửa mã lỗi và bổ sung reset thủ công. Asymptotic đang audit trước khi khôi phục hoạt động. Nguồn: Nemo post-mortem.
Tại sao audit vẫn có thể bỏ sót rủi ro?
Audit không thể thay thế quy trình phát hành an toàn. Việc triển khai mã không đúng hash đã kiểm toán và chỉ cần một chữ ký có thể vô hiệu hóa lợi ích audit. Xem thêm: NIST SSDF, OpenZeppelin.
SuperRare gặp sự cố gì và liên quan gì đến Nemo?
SuperRare mất khoảng 730.000 USD do lỗi hợp đồng cơ bản có thể ngăn bằng kiểm thử chuẩn. Trường hợp này nhấn mạnh tầm quan trọng của quy trình, tương tự bài học từ Nemo.