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 tái nhập do lỗ hổng hợp đồng, dẫn đến thiệt hại khoảng 2,9 triệu đô la. Kẻ tấn công đã khai thác lỗ hổng trong hợp đồng bằng cách tạo ra hợp đồng Token đặc biệt để thực hiện các thao tác gọi lại, dẫn đến tấn công tái nhập.
Phân tích quá trình tấn công
Kẻ tấn công trước tiên tạo ra 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 liên quan. Sau đó, kẻ tấn công vay mượn thông qua phương thức swap của một DEX và gọi phương thức swapThroughOrionPool của OrionProtocol để thực hiện việc đổi token. Trong quá trình đổi, kẻ tấn công tận dụng hợp đồng Token mà mình tạo ra để thực hiện callback, gọi lại phương thức depositAsset nhiều lần, dẫn đến số tiền gửi bị cộng dồn. Cuối cùng, kẻ tấn công hoàn thành việc thu lợi nhuận thông qua thao tác rút tiền.
Dòng tiền
Vốn ban đầu của kẻ tấn công đến từ tài khoản ví nóng của một nền tảng giao dịch. Trong số 1651 ETH kiếm đượ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 công cụ trộn coin.
Phân tích lỗ hổng
Vấn đề cốt lõi nằm ở 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, nhưng không xem xét đến rủi ro tấn công tái nhập có thể xảy ra. Kẻ tấn công thông qua việc thêm logic gọi lại vào hàm transfer của Token tùy chỉnh, dẫn đến việc curBalance bị cập nhật sai, từ đó thực hiện được cuộc tấn công.
Tái hiện tấn công
Các nhà nghiên cứu đã cung cấp một phần mã POC, mô phỏng quá trình tấn công. Kết quả thử nghiệm cho thấy, bằng cách khai thác lỗ hổng trong hợp đồng, đã thành công trong việc thực hiện luồng tiền giống như cuộc tấn công thực tế.
Đề xuất an toàn
Khi phát triển hợp đồng, nên xem xét những rủi ro tiềm ẩn có thể đến từ nhiều Token và các con đường đổi khác nhau.
Tuân theo quy tắc lập trình "Kiểm tra - Hiệu ứng - Tương tác" (Checks-Effects-Interactions), trước tiên thực hiện kiểm tra, sau đó cập nhật biến trạng thái, cuối cùng thực hiện gọi hàm bên ngoài.
Tăng cường các biện pháp bảo vệ chống lại các cuộc tấn công tái nhập, chẳng hạn như sử dụng khóa tái nhập và các phương pháp khác.
Thực hiện kiểm toán an ninh toàn diện, đặc biệt chú ý đến các hàm có thể bị khai thác để thực hiện tấn công gọi lại.
Cập nhật và tối ưu mã hợp đồng định kỳ, kịp thời sửa chữa các lỗ hổng phát hiện.
Sự kiện này một lần nữa nhắc nhở các dự án Web3 cần phải chú trọng cao độ đến sự an toàn của hợp đồng thông minh. Các nhà phát triển hợp đồng nên cẩn thận hơn trong việc xử lý các logic liên quan đến chuyển tiền và cân nhắc đầy đủ các kịch bản tấn công khác nhau. Đồng thời, việc tiến hành kiểm toán an ninh định kỳ và chương trình thưởng cho lỗ hổng cũng là những biện pháp hiệu quả để đảm bảo an toàn cho 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.
18 thích
Phần thưởng
18
7
Chia sẻ
Bình luận
0/400
MevTears
· 07-23 02:41
Ngốc nghếch! Lại là cái lối lập lại cũ rích.
Xem bản gốcTrả lời0
MetaMisery
· 07-21 02:18
Lại đến lúc chơi cho Suckers rồi, thảm
Xem bản gốcTrả lời0
RetailTherapist
· 07-20 20:40
Còn ai bị mắc bẫy nữa không
Xem bản gốcTrả lời0
PositionPhobia
· 07-20 03:55
Lại thấy hợp đồng thông minh bị lật xe rồi
Xem bản gốcTrả lời0
CryptoTherapist
· 07-20 03:55
hãy thực hiện một chút thở chánh niệm trước khi chúng ta giải quyết chấn thương tái gia nhập này
OrionProtocol bị tấn công tái nhập, thiệt hại 2,9 triệu đô la Mỹ. Phân tích lỗ hổng bảo mật và đề xuất biện pháp phòng ngừa.
Phân tích sự kiện tấn công tái nhập 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 tái nhập do lỗ hổng hợp đồng, dẫn đến thiệt hại khoảng 2,9 triệu đô la. Kẻ tấn công đã khai thác lỗ hổng trong hợp đồng bằng cách tạo ra hợp đồng Token đặc biệt để thực hiện các thao tác gọi lại, dẫn đến tấn công tái nhập.
Phân tích quá trình tấn công
Kẻ tấn công trước tiên tạo ra 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 liên quan. Sau đó, kẻ tấn công vay mượn thông qua phương thức swap của một DEX và gọi phương thức swapThroughOrionPool của OrionProtocol để thực hiện việc đổi token. Trong quá trình đổi, kẻ tấn công tận dụng hợp đồng Token mà mình tạo ra để thực hiện callback, gọi lại phương thức depositAsset nhiều lần, dẫn đến số tiền gửi bị cộng dồn. Cuối cùng, kẻ tấn công hoàn thành việc thu lợi nhuận thông qua thao tác rút tiền.
Dòng tiền
Vốn ban đầu của kẻ tấn công đến từ tài khoản ví nóng của một nền tảng giao dịch. Trong số 1651 ETH kiếm đượ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 công cụ trộn coin.
Phân tích lỗ hổng
Vấn đề cốt lõi nằm ở 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, nhưng không xem xét đến rủi ro tấn công tái nhập có thể xảy ra. Kẻ tấn công thông qua việc thêm logic gọi lại vào hàm transfer của Token tùy chỉnh, dẫn đến việc curBalance bị cập nhật sai, từ đó thực hiện được cuộc tấn công.
Tái hiện tấn công
Các nhà nghiên cứu đã cung cấp một phần mã POC, mô phỏng quá trình tấn công. Kết quả thử nghiệm cho thấy, bằng cách khai thác lỗ hổng trong hợp đồng, đã thành công trong việc thực hiện luồng tiền giống như cuộc tấn công thực tế.
Đề xuất an toàn
Sự kiện này một lần nữa nhắc nhở các dự án Web3 cần phải chú trọng cao độ đến sự an toàn của hợp đồng thông minh. Các nhà phát triển hợp đồng nên cẩn thận hơn trong việc xử lý các logic liên quan đến chuyển tiền và cân nhắc đầy đủ các kịch bản tấn công khác nhau. Đồng thời, việc tiến hành kiểm toán an ninh định kỳ và chương trình thưởng cho lỗ hổng cũng là những biện pháp hiệu quả để đảm bảo an toàn cho dự án.