Vào lúc 15:40:20 (giờ UTC) ngày 2 tháng 2 năm 2023, OrionProtocol trên Ethereum và Binance Smart Chain đã bị tấn công tái nhập do lỗ hổng hợp đồng. Kẻ tấn công đã thành công trong việc đánh cắp khoảng 2,9 triệu đô la, trong đó bao gồm 2,844,766 USDT trên Ethereum và 191,606 BUSD trên Binance Smart Chain.
Phân tích quy trình tấn công
Kẻ tấn công đầu tiên triển khai một hợp đồng Token tùy chỉnh và thực hiện các thao tác chuyển nhượng và ủy quyền liên quan để chuẩn bị cho cuộc tấn công tiếp theo. Sau đó, kẻ tấn công thực hiện vay mượn thông qua hàm swap của Uniswap V2 và gọi phương thức ExchangeWithAtomic.swapThroughOrionPool của OrionProtocol để thực hiện việc trao đổi token.
Cài đặt đường trao đổi thành [USDC, Token tấn công, USDT], trong đó Token tấn công là chìa khóa. Trong quá trình trao đổi, do hợp đồng Token tùy chỉnh này bao gồm chức năng gọi lại, kẻ tấn công có thể kích hoạt phương thức ExchangeWithAtomic.depositAsset khi chuyển Token, từ đó thực hiện cuộc tấn công tái nhập. Điều này dẫn đến việc số tiền gửi bị cộng dồn sai, cuối cùng kẻ tấn công đã hoàn thành việc thu lợi thông qua hoạt động 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 đã lấy đượ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
Lỗ hổng nằm ở các hàm doSwapThroughOrionPool và _doSwapTokens trong hợp đồng ExchangeWithAtomic. Các hàm này chỉ cập nhật biến curBalance sau khi thực hiện chuyển khoản token, điều này tạo điều kiện cho các cuộc tấn công tái nhập. Kẻ tấn công đã thêm logic callback vào hàm transfer của Token tùy chỉnh, thành công kích hoạt hàm depositAsset, dẫn đến việc curBalance bị cập nhật sai. Cuối cùng, kẻ tấn công đã rút tiền thừa thông qua hàm withdraw sau khi hoàn trả khoản vay chớp nhoáng.
Đề xuất phòng ngừa
Tuân theo mô hình "Kiểm tra - Hiệu ứng - Tương tác" (Checks-Effects-Interactions): Cập nhật trạng thái hợp đồng trước khi thực hiện các cuộc gọi bên ngoài.
Sử dụng khóa tái nhập: Thêm khóa trước khi bắt đầu các thao tác nhạy cảm, giải phóng khóa sau khi kết thúc, ngăn chặn tái nhập.
Cân nhắc toàn diện các loại token và các con đường trao đổi: Khi thiết kế chức năng trao đổi, cần xem xét tất cả các tình huống và điều kiện biên có thể xảy ra.
Giới hạn số tiền giao dịch một lần: Đặt giới hạn giao dịch hợp lý để giảm thiểu tổn thất tiềm ẩn.
Thực hiện kiểm toán an ninh định kỳ: Thuê đội ngũ an ninh chuyên nghiệp để tiến hành kiểm toán toàn diện hợp đồng, phát hiện và khắc phục kịp thời các lỗ hổng tiềm ẩn.
Thực hiện cơ chế ký đa chữ ký: Các thao tác quan trọng cần có sự xác nhận của nhiều bên, tăng độ khó cho việc tấn công.
Tối ưu hóa logic mã: Đảm bảo thực hiện các cuộc gọi bên ngoài chỉ sau khi cập nhật các biến trạng thái quan trọng.
Tăng cường cơ chế phản ứng khẩn cấp: Xây dựng kế hoạch ứng phó khẩn cấp hoàn chỉnh, có khả năng phản ứng nhanh chóng khi xảy ra tấn công, giảm thiểu tổn thất.
Sự kiện này một lần nữa nhấn mạnh tầm quan trọng của an ninh hợp đồng thông minh. Các dự án cần luôn giữ cảnh giác trong quá trình phát triển và thực hiện các biện pháp an ninh toàn diện để bảo vệ tài sản của người dùng và danh tiếng của dự án. Đồng thời, điều này cũng nhắc nhở nhà đầu tư phải cẩn thận khi chọn dự án, chú ý đến tính an toàn và sức mạnh công nghệ của dự á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.
6 thích
Phần thưởng
6
5
Chia sẻ
Bình luận
0/400
ZenMiner
· 23giờ trước
An toàn hợp đồng vẫn cần phải xem xét kiểm toán.
Xem bản gốcTrả lời0
DAOplomacy
· 23giờ trước
một thất bại quản trị không tối ưu khác thật đáng tiếc...
Xem bản gốcTrả lời0
GweiTooHigh
· 23giờ trước
又一个 chơi đùa với mọi người 的
Xem bản gốcTrả lời0
DeFiAlchemist
· 23giờ trước
*điều chỉnh kính mát huyền ảo* một linh hồn lại giảm xuống dưới nghệ thuật đen tối của việc tái nhập... các rào cản huyền bí của giao thức thì quá yếu
OrionProtocol bị tấn công tái nhập, 2.9 triệu USD vốn bị đánh cắp
Phân tích sự kiện tấn công tái nhập OrionProtocol
Vào lúc 15:40:20 (giờ UTC) ngày 2 tháng 2 năm 2023, OrionProtocol trên Ethereum và Binance Smart Chain đã bị tấn công tái nhập do lỗ hổng hợp đồng. Kẻ tấn công đã thành công trong việc đánh cắp khoảng 2,9 triệu đô la, trong đó bao gồm 2,844,766 USDT trên Ethereum và 191,606 BUSD trên Binance Smart Chain.
Phân tích quy trình tấn công
Kẻ tấn công đầu tiên triển khai một hợp đồng Token tùy chỉnh và thực hiện các thao tác chuyển nhượng và ủy quyền liên quan để chuẩn bị cho cuộc tấn công tiếp theo. Sau đó, kẻ tấn công thực hiện vay mượn thông qua hàm swap của Uniswap V2 và gọi phương thức ExchangeWithAtomic.swapThroughOrionPool của OrionProtocol để thực hiện việc trao đổi token.
Cài đặt đường trao đổi thành [USDC, Token tấn công, USDT], trong đó Token tấn công là chìa khóa. Trong quá trình trao đổi, do hợp đồng Token tùy chỉnh này bao gồm chức năng gọi lại, kẻ tấn công có thể kích hoạt phương thức ExchangeWithAtomic.depositAsset khi chuyển Token, từ đó thực hiện cuộc tấn công tái nhập. Điều này dẫn đến việc số tiền gửi bị cộng dồn sai, cuối cùng kẻ tấn công đã hoàn thành việc thu lợi thông qua hoạt động 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 đã lấy đượ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
Lỗ hổng nằm ở các hàm doSwapThroughOrionPool và _doSwapTokens trong hợp đồng ExchangeWithAtomic. Các hàm này chỉ cập nhật biến curBalance sau khi thực hiện chuyển khoản token, điều này tạo điều kiện cho các cuộc tấn công tái nhập. Kẻ tấn công đã thêm logic callback vào hàm transfer của Token tùy chỉnh, thành công kích hoạt hàm depositAsset, dẫn đến việc curBalance bị cập nhật sai. Cuối cùng, kẻ tấn công đã rút tiền thừa thông qua hàm withdraw sau khi hoàn trả khoản vay chớp nhoáng.
Đề xuất phòng ngừa
Tuân theo mô hình "Kiểm tra - Hiệu ứng - Tương tác" (Checks-Effects-Interactions): Cập nhật trạng thái hợp đồng trước khi thực hiện các cuộc gọi bên ngoài.
Sử dụng khóa tái nhập: Thêm khóa trước khi bắt đầu các thao tác nhạy cảm, giải phóng khóa sau khi kết thúc, ngăn chặn tái nhập.
Cân nhắc toàn diện các loại token và các con đường trao đổi: Khi thiết kế chức năng trao đổi, cần xem xét tất cả các tình huống và điều kiện biên có thể xảy ra.
Giới hạn số tiền giao dịch một lần: Đặt giới hạn giao dịch hợp lý để giảm thiểu tổn thất tiềm ẩn.
Thực hiện kiểm toán an ninh định kỳ: Thuê đội ngũ an ninh chuyên nghiệp để tiến hành kiểm toán toàn diện hợp đồng, phát hiện và khắc phục kịp thời các lỗ hổng tiềm ẩn.
Thực hiện cơ chế ký đa chữ ký: Các thao tác quan trọng cần có sự xác nhận của nhiều bên, tăng độ khó cho việc tấn công.
Tối ưu hóa logic mã: Đảm bảo thực hiện các cuộc gọi bên ngoài chỉ sau khi cập nhật các biến trạng thái quan trọng.
Tăng cường cơ chế phản ứng khẩn cấp: Xây dựng kế hoạch ứng phó khẩn cấp hoàn chỉnh, có khả năng phản ứng nhanh chóng khi xảy ra tấn công, giảm thiểu tổn thất.
Sự kiện này một lần nữa nhấn mạnh tầm quan trọng của an ninh hợp đồng thông minh. Các dự án cần luôn giữ cảnh giác trong quá trình phát triển và thực hiện các biện pháp an ninh toàn diện để bảo vệ tài sản của người dùng và danh tiếng của dự án. Đồng thời, điều này cũng nhắc nhở nhà đầu tư phải cẩn thận khi chọn dự án, chú ý đến tính an toàn và sức mạnh công nghệ của dự án.