Sharwa.Finance bị tấn công do thiếu kiểm tra “phá sản” trong hàm swap() của hợp đồng MarginTrading, cho phép kẻ xấu vay ký quỹ và thực hiện sandwich attack để trục lợi.
Nền tảng tạm dừng hoạt động nhưng sau đó xuất hiện giao dịch đáng ngờ khai thác cùng lỗ hổng. Hai địa chỉ tấn công thu lợi tổng cộng khoảng USD 146.000.
- Nguyên nhân: thiếu kiểm tra phá sản trong swap() của hợp đồng MarginTrading.
- Phương thức: tạo tài khoản ký quỹ, vay tài sản đòn bẩy, tiến hành sandwich attack khi swap.
- Thiệt hại: hai địa chỉ tấn công lợi khoảng USD 61.000 và USD 85.000, tổng ~USD 146.000.
Tổng quan sự cố
Sự cố bắt nguồn từ việc Sharwa.Finance báo cáo tấn công và tạm dừng hoạt động, sau đó vẫn xuất hiện giao dịch khai thác lỗ hổng tương tự.
Các giao dịch nghi vấn diễn ra vài giờ sau cảnh báo ban đầu, cho thấy kẻ tấn công có thể tận dụng cùng điểm yếu qua đường tấn công hơi khác biệt để đạt lợi nhuận.
BlockSec Phalcon cảnh báo: Sharwa.Finance thông báo tấn công và tạm ngừng hoạt động; sau đó ghi nhận các giao dịch đáng ngờ có thể khai thác cùng lỗ hổng.
BlockSec Phalcon alert, cảnh báo bảo mật, BlockSec
Nguyên nhân kỹ thuật
Lỗ hổng nằm ở hàm swap() của hợp đồng MarginTrading: chỉ kiểm tra khả năng thanh toán dựa trên trạng thái tài khoản trước khi thực hiện hoán đổi, không kiểm tra lại sau thao tác.
Thiếu kiểm tra “phá sản” (bankruptcy check) sau hoán đổi cho phép kẻ tấn công thao túng giá hoặc luồng tài sản trong quá trình swap, tạo cơ hội cho sandwich attack và gây mất cân đối tài khoản.
Phương thức tấn công
Kịch bản tấn công gồm: tạo tài khoản ký quỹ, dùng tài sản thế chấp để vay thêm qua lending có đòn bẩy, rồi tấn công sandwich nhắm vào các giao dịch swap của tài sản vay.
Kẻ tấn công thực hiện giao dịch đẩy/giam giá (front-run/back-run) quanh swap mục tiêu, lợi dụng việc hợp đồng không kiểm tra lại solvency để rút lợi nhuận trước khi hệ thống phát hiện mất cân bằng.
Thiệt hại và tác nhân
Hai địa chỉ tấn công được xác định: bắt đầu bằng 0xd356 thực hiện nhiều lần và lợi ~USD 61.000; địa chỉ bắt đầu bằng 0xaa24 thực hiện một lần, lợi ~USD 85.000.
Tổng khoản lợi nhuận hai tác nhân khoảng USD 146.000; nền tảng phải tạm dừng để điều tra và sửa lỗi trước khi khôi phục dịch vụ an toàn.
Khuyến nghị khắc phục
Cần bổ sung kiểm tra phá sản trong swap(), kiểm tra lại trạng thái sau mọi hoán đổi, và áp dụng cơ chế chống thao túng giá như TWAP hoặc oracles an toàn.
Khuyến nghị thêm: rà soát bảo mật, đặt giới hạn giao dịch tạm thời, triển khai kiểm tra trước-sau (pre/post conditions) và tái kiểm toán hợp đồng thông minh trước khi mở lại.
Lỗ hổng này có thể ngăn chặn như thế nào?
Bổ sung kiểm tra phá sản sau swap, bảo vệ reentrancy, dùng oracles ổn định (TWAP), và giới hạn quyền vay/đòn bẩy là các biện pháp chính để giảm rủi ro.
Kẻ tấn công thu lợi bao nhiêu?
Hai địa chỉ tấn công báo cáo lợi khoảng USD 61.000 và USD 85.000, tổng ~USD 146.000.
Nền tảng nên làm gì sau sự cố?
Tạm dừng chức năng liên quan, rà soát mã, triển khai bản vá có kiểm tra phá sản, thông báo minh bạch và tiến hành kiểm toán bảo mật độc lập trước khi khôi phục.