Phân tích sự kiện tấn công tái nhập của OrionProtocol
Vào chiều ngày 2 tháng 2 năm 2023, OrionProtocol trên Ethereum và Binance Smart Chain đã bị tấn công lại do lỗ hổng hợp đồng, tổng thiệt hại khoảng 2,9 triệu đô la Mỹ tài sản tiền điện tử, trong đó bao gồm 2.844.766 USDT trên Ethereum và 191.606 BUSD trên Binance Smart Chain.
Phân tích quá trình tấn công
Kẻ tấn công đầu tiên triển khai một hợp đồng Token đặc biệt, và thực hiện các thao tác chuyển nhượng và ủy quyền cần thiết để chuẩn bị cho cuộc tấn công tiếp theo. Sau đó, kẻ tấn công vay tiền thông qua chức năng swap của một DEX, và gọi phương thức ExchangeWithAtomic.swapThroughOrionPool của OrionProtocol để thực hiện việc trao đổi token. Đường dẫn trao đổi được thiết lập là [USDC, Token của kẻ tấn công, USDT].
Trong quá trình trao đổi, hợp đồng Token của kẻ tấn công đã sử dụng hàm transfer của nó để gọi lại phương thức ExchangeWithAtomic.depositAsset, dẫn đến cuộc tấn công tái nhập. Điều này đã dẫn đến số tiền gửi được tính toán lại nhiều lần, và kẻ tấn công sau đó đã thu được lợi nhuận vượt mức thông qua các thao tác rút tiền.
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 được, 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.
Phân tích lỗ hổng
Lỗ hổng chính nằm trong các hàm doSwapThroughOrionPool và _doSwapTokens. Vấn đề chính là hợp đồng chỉ cập nhật biến curBalance sau khi thực hiện thao tác chuyển tiền, điều này tạo ra điều kiện cho các cuộc tấn công tái nhập. Kẻ tấn công thông qua việc thêm logic callback vào hàm transfer của Token tùy chỉnh, khiến hàm depositAsset bị gọi lại nhiều lần, dẫn đến việc curBalance bị cập nhật sai.
Đề xuất phòng ngừa
Tuân theo mô hình "Kiểm tra - Tác động - Tương tác" (Checks-Effects-Interactions), đảm bảo rằng việc cập nhật các biến trạng thái diễn ra trước các cuộc gọi bên ngoài.
Triển khai khóa tái nhập để ngăn chặn việc gọi lại hàm trong quá trình thực thi.
Cân nhắc đầy đủ những rủi ro an ninh có thể phát sinh từ các loại Token và lộ trình trao đổi khác nhau.
Tăng cường giới hạn và giám sát các cuộc gọi bên ngoài, đặc biệt là các thao tác liên quan đến việc chuyển tiền.
Thực hiện kiểm toán an ninh định kỳ, kịp thời phát hiện và sửa chữa các lỗ hổng tiềm ẩn.
Sự kiện này một lần nữa nhấn mạnh tầm quan trọng của việc tuân thủ nghiêm ngặt các tiêu chuẩn mã hóa an toàn khi phát triển hợp đồng thông minh. Các bên dự án nên liên tục chú ý đến sự an toàn của hợp đồng, áp dụng nhiều biện pháp bảo vệ để giảm thiểu tối đa rủi ro bị tấn công.
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.
17 thích
Phần thưởng
17
6
Đăng lại
Chia sẻ
Bình luận
0/400
New_Ser_Ngmi
· 07-13 12:19
Lại hacker phiếu giảm giá rồi
Xem bản gốcTrả lời0
DegenMcsleepless
· 07-13 03:32
Một dự án lại sụp đổ rồi~
Xem bản gốcTrả lời0
SatoshiSherpa
· 07-12 13:26
又见 hợp đồng thông minh入手 啧啧
Xem bản gốcTrả lời0
VCsSuckMyLiquidity
· 07-10 17:44
Một người nữa ngã xuống, không có gì đáng ngạc nhiên.
OrionProtocol bị tấn công tái nhập, thiệt hại 2,9 triệu đô la mã hóa.
Phân tích sự kiện tấn công tái nhập của OrionProtocol
Vào chiều ngày 2 tháng 2 năm 2023, OrionProtocol trên Ethereum và Binance Smart Chain đã bị tấn công lại do lỗ hổng hợp đồng, tổng thiệt hại khoảng 2,9 triệu đô la Mỹ tài sản tiền điện tử, trong đó bao gồm 2.844.766 USDT trên Ethereum và 191.606 BUSD trên Binance Smart Chain.
Phân tích quá trình tấn công
Kẻ tấn công đầu tiên triển khai một hợp đồng Token đặc biệt, và thực hiện các thao tác chuyển nhượng và ủy quyền cần thiết để chuẩn bị cho cuộc tấn công tiếp theo. Sau đó, kẻ tấn công vay tiền thông qua chức năng swap của một DEX, và gọi phương thức ExchangeWithAtomic.swapThroughOrionPool của OrionProtocol để thực hiện việc trao đổi token. Đường dẫn trao đổi được thiết lập là [USDC, Token của kẻ tấn công, USDT].
Trong quá trình trao đổi, hợp đồng Token của kẻ tấn công đã sử dụng hàm transfer của nó để gọi lại phương thức ExchangeWithAtomic.depositAsset, dẫn đến cuộc tấn công tái nhập. Điều này đã dẫn đến số tiền gửi được tính toán lại nhiều lần, và kẻ tấn công sau đó đã thu được lợi nhuận vượt mức thông qua các thao tác rút tiền.
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 được, 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.
Phân tích lỗ hổng
Lỗ hổng chính nằm trong các hàm doSwapThroughOrionPool và _doSwapTokens. Vấn đề chính là hợp đồng chỉ cập nhật biến curBalance sau khi thực hiện thao tác chuyển tiền, điều này tạo ra điều kiện cho các cuộc tấn công tái nhập. Kẻ tấn công thông qua việc thêm logic callback vào hàm transfer của Token tùy chỉnh, khiến hàm depositAsset bị gọi lại nhiều lần, dẫn đến việc curBalance bị cập nhật sai.
Đề xuất phòng ngừa
Tuân theo mô hình "Kiểm tra - Tác động - Tương tác" (Checks-Effects-Interactions), đảm bảo rằng việc cập nhật các biến trạng thái diễn ra trước các cuộc gọi bên ngoài.
Triển khai khóa tái nhập để ngăn chặn việc gọi lại hàm trong quá trình thực thi.
Cân nhắc đầy đủ những rủi ro an ninh có thể phát sinh từ các loại Token và lộ trình trao đổi khác nhau.
Tăng cường giới hạn và giám sát các cuộc gọi bên ngoài, đặc biệt là các thao tác liên quan đến việc chuyển tiền.
Thực hiện kiểm toán an ninh định kỳ, kịp thời phát hiện và sửa chữa các lỗ hổng tiềm ẩn.
Sự kiện này một lần nữa nhấn mạnh tầm quan trọng của việc tuân thủ nghiêm ngặt các tiêu chuẩn mã hóa an toàn khi phát triển hợp đồng thông minh. Các bên dự án nên liên tục chú ý đến sự an toàn của hợp đồng, áp dụng nhiều biện pháp bảo vệ để giảm thiểu tối đa rủi ro bị tấn công.