OrionProtocol bị tấn công tái nhập dẫn đến thiệt hại 2,9 triệu đô la
Vào ngày 2 tháng 2 năm 2023, OrionProtocol đã bị tấn công tái nhập trên Ethereum và Binance Smart Chain do lỗ hổng hợp đồng, tổng thiệt hại khoảng 2,9 triệu USD. Kẻ tấn công đã lợi dụng hợp đồng Token tự tạo của mình để thực hiện gọi lại, thành công vượt qua cơ chế bảo mật của hợp đồng.
Phân tích quá trình tấn công
Kẻ tấn công đầu tiên tạo ra một hợp đồng Token tùy chỉnh và thực hiện một loạt công việc chuẩn bị. Sau đó, kẻ tấn công vay mượn thông qua phương thức swap của một DEX nào đó, và gọi phương thức swapThroughOrionPool của OrionProtocol để thực hiện đổi token. Đường đi của việc đổi chứa địa chỉ hợp đồng Token mà kẻ tấn công đã tạo ra.
Trong quá trình trao đổi, kẻ tấn công đã lợi dụng phương pháp transfer của Token tự tạo để kích hoạt callback, sau đó gọi lại phương pháp depositAsset của OrionProtocol. Điều này dẫn đến số tiền gửi bị tính toán lại, cho phép kẻ tấn công rút ra số tiền vượt quá số tiền thực tế đã gửi.
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. Trong số 1651 ETH mà kẻ tấn công đã thu được, 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 cốt lõi nằm ở các hàm doSwapThroughOrionPool và _doSwapTokens. 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 cơ hội cho kẻ tấn công lợi dụng tấn công tái nhập. Kẻ tấn công thông qua việc thêm logic callback trong hàm transfer của Token tùy chỉnh, dẫn đến việc curBalance bị cập nhật sai, cuối cùng đạt được việc rút tiền quá mức.
Tái hiện tấn công
Các nhà nghiên cứu đã cung cấp một phần mã POC, cho thấy cách khai thác lỗ hổng này để tấn công. Kết quả thử nghiệm nhất quán với ngăn xếp gọi của cuộc tấn công thực tế, xác nhận sự tồn tại và khả năng khai thác của lỗ hổng.
Đề xuất an toàn
Đối với các hợp đồng thông minh có chức năng trao đổi token, các nhà phát triển cần xem xét các rủi ro về bảo mật có thể phát sinh từ nhiều loại Token và các đường trao đổi khác nhau. Khuyên nên tuân theo quy tắc lập trình "đầu tiên là kiểm tra, sau đó ghi vào biến, rồi gọi bên ngoài" (mô hình Checks-Effects-Interactions) để nâng cao tính bảo mật và ổn định của hợp đồng.
Sự kiện này một lần nữa nhấn mạnh tầm quan trọng của việc chú trọng đến an ninh trong phát triển hợp đồng thông minh, đặc biệt là khi xử lý dòng tiền. Các nhà phát triển dự án nên tăng cường kiểm tra mã nguồn và xem xét việc mời các đội ngũ an ninh blockchain chuyên nghiệp để thực hiện đánh giá toàn diện, nhằm giảm thiểu tối đa rủi ro tiềm ẩn.
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.
10 thích
Phần thưởng
10
3
Đăng lại
Chia sẻ
Bình luận
0/400
ZeroRushCaptain
· 10giờ trước
Một thẻ rút tiền khác đã dạy tôi cách rút lui trên chiến trường
Xem bản gốcTrả lời0
AirdropChaser
· 10giờ trước
Lại có một cái nữa?
Xem bản gốcTrả lời0
ForkLibertarian
· 10giờ trước
Bị lừa thì phải, ai bảo ra ngoài lại kiêu ngạo như vậy.
OrionProtocol bị tấn công tái nhập, thiệt hại 2,9 triệu USD
OrionProtocol bị tấn công tái nhập dẫn đến thiệt hại 2,9 triệu đô la
Vào ngày 2 tháng 2 năm 2023, OrionProtocol đã bị tấn công tái nhập trên Ethereum và Binance Smart Chain do lỗ hổng hợp đồng, tổng thiệt hại khoảng 2,9 triệu USD. Kẻ tấn công đã lợi dụng hợp đồng Token tự tạo của mình để thực hiện gọi lại, thành công vượt qua cơ chế bảo mật của hợp đồng.
Phân tích quá trình tấn công
Kẻ tấn công đầu tiên tạo ra một hợp đồng Token tùy chỉnh và thực hiện một loạt công việc chuẩn bị. Sau đó, kẻ tấn công vay mượn thông qua phương thức swap của một DEX nào đó, và gọi phương thức swapThroughOrionPool của OrionProtocol để thực hiện đổi token. Đường đi của việc đổi chứa địa chỉ hợp đồng Token mà kẻ tấn công đã tạo ra.
Trong quá trình trao đổi, kẻ tấn công đã lợi dụng phương pháp transfer của Token tự tạo để kích hoạt callback, sau đó gọi lại phương pháp depositAsset của OrionProtocol. Điều này dẫn đến số tiền gửi bị tính toán lại, cho phép kẻ tấn công rút ra số tiền vượt quá số tiền thực tế đã gửi.
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. Trong số 1651 ETH mà kẻ tấn công đã thu được, 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 cốt lõi nằm ở các hàm doSwapThroughOrionPool và _doSwapTokens. 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 cơ hội cho kẻ tấn công lợi dụng tấn công tái nhập. Kẻ tấn công thông qua việc thêm logic callback trong hàm transfer của Token tùy chỉnh, dẫn đến việc curBalance bị cập nhật sai, cuối cùng đạt được việc rút tiền quá mức.
Tái hiện tấn công
Các nhà nghiên cứu đã cung cấp một phần mã POC, cho thấy cách khai thác lỗ hổng này để tấn công. Kết quả thử nghiệm nhất quán với ngăn xếp gọi của cuộc tấn công thực tế, xác nhận sự tồn tại và khả năng khai thác của lỗ hổng.
Đề xuất an toàn
Đối với các hợp đồng thông minh có chức năng trao đổi token, các nhà phát triển cần xem xét các rủi ro về bảo mật có thể phát sinh từ nhiều loại Token và các đường trao đổi khác nhau. Khuyên nên tuân theo quy tắc lập trình "đầu tiên là kiểm tra, sau đó ghi vào biến, rồi gọi bên ngoài" (mô hình Checks-Effects-Interactions) để nâng cao tính bảo mật và ổn định của hợp đồng.
Sự kiện này một lần nữa nhấn mạnh tầm quan trọng của việc chú trọng đến an ninh trong phát triển hợp đồng thông minh, đặc biệt là khi xử lý dòng tiền. Các nhà phát triển dự án nên tăng cường kiểm tra mã nguồn và xem xét việc mời các đội ngũ an ninh blockchain chuyên nghiệp để thực hiện đánh giá toàn diện, nhằm giảm thiểu tối đa rủi ro tiềm ẩn.