OrionProtocol bị tấn công tái nhập dẫn đến thiệt hại gần 3 triệu USD
Vào ngày 2 tháng 2 năm 2023, hợp đồng OrionProtocol trên Ethereum và chuỗi Binance đã bị tấn công lại do tồn tại lỗ hổng bảo mật. Kẻ tấn công đã thành công trong việc đánh cắp khoảng 2,9 triệu đô la tài sản tiền điện tử, bao gồm 2,844,766 USDT trên Ethereum và 191,606 BUSD trên BSC.
Phân tích quá trình tấn công
Kẻ tấn công trước tiên triển khai một hợp đồng Token tùy chỉnh và thực hiện các công việc chuẩn bị cần thiết. Sau đó, kẻ tấn công đã vay vốn thông qua phương thức swap của UNI-V2 và gọi phương thức swapThroughOrionPool của hợp đồng ExchangeWithAtomic để thực hiện trao đổi token. Đường đi của việc trao đổi bao gồm địa chỉ hợp đồng Token mà kẻ tấn công đã tạo ra, điều này đã mở đường cho cuộc tấn công callback tiếp theo.
Trong quá trình trao đổi, do hợp đồng Token của kẻ tấn công chứa logic callback, mỗi lần thực hiện chuyển khoản sẽ kích hoạt gọi lại phương thức depositAsset của hợp đồng ExchangeWithAtomic. Điều này dẫn đến số tiền gửi bị cộng dồn sai, cuối cùng cho phép kẻ tấn công rút ra số tiền vượt quá số tiền thực tế mà họ đã gửi.
Nguồn gốc lỗ hổng
Vấn đề cốt lõi nằm ở trong các hàm doSwapThroughOrionPool và _doSwapTokens của hợp đồng ExchangeWithAtomic. Những hàm này cập nhật biến curBalance sau khi thực hiện chuyển nhượng token, nhưng không có biện pháp ngăn chặn tấn công tái nhập. Kẻ tấn công lợi dụng hàm chuyển token tùy chỉnh để gọi lại phương thức depositAsset, dẫn đến việc curBalance bị cập nhật sai, từ đó rút ra số tiền vượt quá sau khi hoàn trả khoản vay chớp nhoáng.
Dòng tiền
Vốn ban đầu của kẻ tấn công đến từ ví nóng của một nền tảng giao dịch nào đó. Trong số 1,651 ETH mà kẻ tấn công thu lợi, 657.5 ETH vẫn còn trong địa chỉ ví của kẻ tấn công, phần còn lại đã được chuyển qua dịch vụ trộn coin.
Đề xuất an toàn
Để ngăn chặn các cuộc tấn công tương tự, nhóm dự án nên chú ý đến những điểm sau:
Khi thực hiện chức năng đổi tiền tệ thực, cần xem xét các loại Token khác nhau và các rủi ro an ninh có thể phát sinh từ các con đường đổi.
Tuân theo mô hình "Kiểm tra - Hiệu lực - Tương tác" (Checks-Effects-Interactions) khi viết mã hợp đồng, tức là trước tiên thực hiện kiểm tra điều kiện, sau đó cập nhật biến trạng thái, cuối cùng mới tương tác với hợp đồng bên ngoài.
Sử dụng khóa tái nhập hoặc cơ chế tương tự trong các hàm quan trọng để ngăn chặn tấn công tái nhập.
Đối với các cuộc gọi từ bên ngoài, đặc biệt là những thao tác liên quan đến việc chuyển tiền, cần phải hết sức thận trọng và xem xét việc sử dụng chế độ thanh toán kéo thay vì thanh toán đẩy.
Thực hiện kiểm toán an ninh định kỳ, kịp thời phát hiện và khắc phục các lỗ hổng tiềm ẩn.
Bằng cách thực hiện những biện pháp này, có thể nâng cao đáng kể tính an toàn của hợp đồng thông minh, giảm thiểu rủi ro bị tấn công. Trong hệ sinh thái Web3, an toàn luôn nên là yếu tố được ưu tiên hàng đầu.
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
11 thích
Phần thưởng
11
4
Chia sẻ
Bình luận
0/400
TokenTherapist
· 21giờ trước
Có người lại không chịu nổi nữa sao?
Xem bản gốcTrả lời0
LiquidatorFlash
· 21giờ trước
Lỗ hổng tái nhập thật sự là kẻ giết người số một gây thua lỗ trong Defi...
Xem bản gốcTrả lời0
0xLuckbox
· 21giờ trước
Năm nay sao lại bị trộm nữa vậy?
Xem bản gốcTrả lời0
TokenSherpa
· 21giờ trước
*thở dài* lại một giao thức khác thất bại trong việc kiểm tra khả năng tái nhập cơ bản... nói theo lịch sử, điều này đã có thể được ngăn chặn
OrionProtocol bị tấn công tái nhập, gần 3 triệu đô la tài sản bị đánh cắp.
OrionProtocol bị tấn công tái nhập dẫn đến thiệt hại gần 3 triệu USD
Vào ngày 2 tháng 2 năm 2023, hợp đồng OrionProtocol trên Ethereum và chuỗi Binance đã bị tấn công lại do tồn tại lỗ hổng bảo mật. Kẻ tấn công đã thành công trong việc đánh cắp khoảng 2,9 triệu đô la tài sản tiền điện tử, bao gồm 2,844,766 USDT trên Ethereum và 191,606 BUSD trên BSC.
Phân tích quá trình tấn công
Kẻ tấn công trước tiên triển khai một hợp đồng Token tùy chỉnh và thực hiện các công việc chuẩn bị cần thiết. Sau đó, kẻ tấn công đã vay vốn thông qua phương thức swap của UNI-V2 và gọi phương thức swapThroughOrionPool của hợp đồng ExchangeWithAtomic để thực hiện trao đổi token. Đường đi của việc trao đổi bao gồm địa chỉ hợp đồng Token mà kẻ tấn công đã tạo ra, điều này đã mở đường cho cuộc tấn công callback tiếp theo.
Trong quá trình trao đổi, do hợp đồng Token của kẻ tấn công chứa logic callback, mỗi lần thực hiện chuyển khoản sẽ kích hoạt gọi lại phương thức depositAsset của hợp đồng ExchangeWithAtomic. Điều này dẫn đến số tiền gửi bị cộng dồn sai, cuối cùng cho phép kẻ tấn công rút ra số tiền vượt quá số tiền thực tế mà họ đã gửi.
Nguồn gốc lỗ hổng
Vấn đề cốt lõi nằm ở trong các hàm doSwapThroughOrionPool và _doSwapTokens của hợp đồng ExchangeWithAtomic. Những hàm này cập nhật biến curBalance sau khi thực hiện chuyển nhượng token, nhưng không có biện pháp ngăn chặn tấn công tái nhập. Kẻ tấn công lợi dụng hàm chuyển token tùy chỉnh để gọi lại phương thức depositAsset, dẫn đến việc curBalance bị cập nhật sai, từ đó rút ra số tiền vượt quá sau khi hoàn trả khoản vay chớp nhoáng.
Dòng tiền
Vốn ban đầu của kẻ tấn công đến từ ví nóng của một nền tảng giao dịch nào đó. Trong số 1,651 ETH mà kẻ tấn công thu lợi, 657.5 ETH vẫn còn trong địa chỉ ví của kẻ tấn công, phần còn lại đã được chuyển qua dịch vụ trộn coin.
Đề xuất an toàn
Để ngăn chặn các cuộc tấn công tương tự, nhóm dự án nên chú ý đến những điểm sau:
Khi thực hiện chức năng đổi tiền tệ thực, cần xem xét các loại Token khác nhau và các rủi ro an ninh có thể phát sinh từ các con đường đổi.
Tuân theo mô hình "Kiểm tra - Hiệu lực - Tương tác" (Checks-Effects-Interactions) khi viết mã hợp đồng, tức là trước tiên thực hiện kiểm tra điều kiện, sau đó cập nhật biến trạng thái, cuối cùng mới tương tác với hợp đồng bên ngoài.
Sử dụng khóa tái nhập hoặc cơ chế tương tự trong các hàm quan trọng để ngăn chặn tấn công tái nhập.
Đối với các cuộc gọi từ bên ngoài, đặc biệt là những thao tác liên quan đến việc chuyển tiền, cần phải hết sức thận trọng và xem xét việc sử dụng chế độ thanh toán kéo thay vì thanh toán đẩy.
Thực hiện kiểm toán an ninh định kỳ, kịp thời phát hiện và khắc phục các lỗ hổng tiềm ẩn.
Bằng cách thực hiện những biện pháp này, có thể nâng cao đáng kể tính an toàn của hợp đồng thông minh, giảm thiểu rủi ro bị tấn công. Trong hệ sinh thái Web3, an toàn luôn nên là yếu tố được ưu tiên hàng đầu.