Phân tích sự kiện tấn công tái nhập của OrionProtocol
Tóm tắt sự kiện
Theo dữ liệu giám sát trên chuỗi, vào lúc 15:40:20 UTC 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. Kẻ tấn công đã thu lợi 2,844,766 USDT từ mạng Ethereum và 191,606 BUSD từ Binance Smart Chain, tổng cộng khoảng 2.9 triệu USD.
Phân tích quá trình tấn công
Chi tiết tấn công trên chuỗi Ethereum
Token tùy chỉnh
Trong quá trình trao đổi, do hợp đồng Token do kẻ tấn công tạo ra có chức năng gọi lại, nên trong thời gian thực hiện ExchangeWithAtomic.swapThroughOrionPool, kẻ tấn công có thể lặp lại việc gọi hàm ExchangeWithAtomic.depositAsset thông qua phương thức Token.Transfer. Điều này dẫn đến số tiền gửi liên tục tăng lên, và cuối cùng kẻ tấn công hoàn thành việc kiếm lợi nhuận thông qua hoạt động rút tiền.
Dòng tiền
Nguồ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 lớn. 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 đi thông qua dịch vụ trộn coin.
Phân tích lỗ hổng
Vấn đề cốt lõi của lỗ hổng xuất hiện trong hàm doSwapThroughOrionPool. Hàm này cập nhật biến curBalance sau khi thực hiện chuyển nhượng token, mà không tuân theo mô hình "Kiểm tra - Hiệu ứng - Tương tác" (Checks-Effects-Interactions). Kẻ tấn công lợi dụng cơ chế callback được thêm vào hàm transfer của Token tùy chỉnh, gọi lại hàm depositAsset trước khi curBalance được cập nhật, dẫn đến tính toán số dư bị sai.
Đề xuất phòng ngừa
Đội ngũ phát triển cần xem xét các loại Token khác nhau và các con đường trao đổi có thể mang lại rủi ro an ninh khi thiết kế hợp đồng liên quan đến chức năng trao đổi Token.
Tuân thủ nghiêm ngặt quy tắc mã hóa "Kiểm tra - Hiệu quả - Tương tác", tức là trước tiê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 thực hiện gọi bên ngoài.
Đối với các hàm có thể gặp rủi ro tái nhập, sử dụng các cơ chế bảo vệ như khóa tái nhập.
Thêm kiểm tra số dư trước và sau các thao tác quan trọng để đảm bảo tính nguyên tử và tính nhất quán của giao dịch.
Thực hiện kiểm toán mã nguồn và kiểm tra 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.
Cân nhắc việc thực hiện giới hạn số tiền giao dịch hoặc giới hạn tần suất giao dịch để giảm thiểu tổn thất do các cuộc tấn công đơn lẻ gây ra.
Bằng cách thực hiện những biện pháp này, dự án có thể nâng cao đáng kể tính bảo mật của hợp đồng và giảm thiểu rủi ro bị tấn công tương tự. Trong hệ sinh thái Web3 đang phát triển nhanh chóng, an ninh 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.
13 thích
Phần thưởng
13
4
Chia sẻ
Bình luận
0/400
BearMarketGardener
· 11giờ trước
Một lần nữa là một cuộc tấn công reentrancy, rau cải đã bị cuốn sạch.
Xem bản gốcTrả lời0
Token_Sherpa
· 21giờ trước
ugh... một ngày nữa, một cuộc tấn công tái nhập nữa. khi nào thì các nhà phát triển mới học cách kiểm tra hiệu ứng tương tác smh
OrionProtocol bị tấn công tái nhập trị giá 2,9 triệu đô la Mỹ - Phân tích lỗ hổng và gợi ý phòng ngừa
Phân tích sự kiện tấn công tái nhập của OrionProtocol
Tóm tắt sự kiện
Theo dữ liệu giám sát trên chuỗi, vào lúc 15:40:20 UTC 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. Kẻ tấn công đã thu lợi 2,844,766 USDT từ mạng Ethereum và 191,606 BUSD từ Binance Smart Chain, tổng cộng khoảng 2.9 triệu USD.
Phân tích quá trình tấn công
Chi tiết tấn công trên chuỗi Ethereum
Token tùy chỉnh
Trong quá trình trao đổi, do hợp đồng Token do kẻ tấn công tạo ra có chức năng gọi lại, nên trong thời gian thực hiện ExchangeWithAtomic.swapThroughOrionPool, kẻ tấn công có thể lặp lại việc gọi hàm ExchangeWithAtomic.depositAsset thông qua phương thức Token.Transfer. Điều này dẫn đến số tiền gửi liên tục tăng lên, và cuối cùng kẻ tấn công hoàn thành việc kiếm lợi nhuận thông qua hoạt động rút tiền.
Dòng tiền
Nguồ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 lớn. 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 đi thông qua dịch vụ trộn coin.
Phân tích lỗ hổng
Vấn đề cốt lõi của lỗ hổng xuất hiện trong hàm doSwapThroughOrionPool. Hàm này cập nhật biến curBalance sau khi thực hiện chuyển nhượng token, mà không tuân theo mô hình "Kiểm tra - Hiệu ứng - Tương tác" (Checks-Effects-Interactions). Kẻ tấn công lợi dụng cơ chế callback được thêm vào hàm transfer của Token tùy chỉnh, gọi lại hàm depositAsset trước khi curBalance được cập nhật, dẫn đến tính toán số dư bị sai.
Đề xuất phòng ngừa
Đội ngũ phát triển cần xem xét các loại Token khác nhau và các con đường trao đổi có thể mang lại rủi ro an ninh khi thiết kế hợp đồng liên quan đến chức năng trao đổi Token.
Tuân thủ nghiêm ngặt quy tắc mã hóa "Kiểm tra - Hiệu quả - Tương tác", tức là trước tiê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 thực hiện gọi bên ngoài.
Đối với các hàm có thể gặp rủi ro tái nhập, sử dụng các cơ chế bảo vệ như khóa tái nhập.
Thêm kiểm tra số dư trước và sau các thao tác quan trọng để đảm bảo tính nguyên tử và tính nhất quán của giao dịch.
Thực hiện kiểm toán mã nguồn và kiểm tra 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.
Cân nhắc việc thực hiện giới hạn số tiền giao dịch hoặc giới hạn tần suất giao dịch để giảm thiểu tổn thất do các cuộc tấn công đơn lẻ gây ra.
Bằng cách thực hiện những biện pháp này, dự án có thể nâng cao đáng kể tính bảo mật của hợp đồng và giảm thiểu rủi ro bị tấn công tương tự. Trong hệ sinh thái Web3 đang phát triển nhanh chóng, an ninh luôn nên là yếu tố được ưu tiên hàng đầu.