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, dự án OrionProtocol trên Ethereum và Binance Smart Chain đã bị tấn công lặp lại do lỗ hổng hợp đồng. Kẻ tấn công đã đánh cắp khoảng 2,84 triệu USDT từ chuỗi Ethereum và khoảng 190.000 BUSD từ chuỗi Binance Smart Chain, tổng thiệt hại ước tính khoảng 2,9 triệu đô la.
Phân tích quá trình tấn công
Kẻ tấn công trước tiên triển khai 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 vốn thông qua chức năng hoán đổi của một DEX, gọi phương thức ExchangeWithAtomic.swapThroughOrionPool của OrionProtocol để thực hiện hoán đổi token. Đường hoán đổi bao gồm địa chỉ hợp đồng Token mà kẻ tấn công đã tạo ra.
Trong quá trình đổi, kẻ tấn công đã lợi dụng chức năng gọi lại của hợp đồng Token tùy chỉnh, lặp lại việc gọi phương thức ExchangeWithAtomic.depositAsset, dẫn đến số tiền gửi bị cộng dồn nhiều lần. Cuối cùng, kẻ tấn công đã hoàn tất việc thu lợi thông qua thao tác rút tiền.
Dòng tiền
Theo dõi, số 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ố 1651 ETH thu lợi từ cuộc tấn công, khoảng 657,5 ETH vẫn còn lại trong địa chỉ ví của kẻ tấn công, phần còn lại đã được chuyển đi qua dịch vụ trộn coin.
Phân tích lỗ hổng
Vấn đề cốt lõi nằm ở hàm doSwapThroughOrionPool của hợp đồng ExchangeWithAtomic. Hàm này cập nhật biến curBalance sau khi thực hiện việc chuyển token, tạo ra cơ hội cho kẻ tấn công thực hiện tấn công tái nhập. Kẻ tấn công bằng cách thêm logic callback vào hàm transfer của Token tùy chỉnh, gọi lại hàm depositAsset nhiều lần, dẫn đến việc curBalance bị cập nhật sai.
Kẻ tấn công đã tận dụng lỗ hổng này để rút tiền thừa sau khi hoàn trả khoản vay chớp nhoáng.
Tái hiện cuộc 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. Mã bao gồm các bước tạo Token tùy chỉnh, thiết lập bể thanh khoản, cấp quyền thực hiện và thực hiện tấn công. Kết quả thử nghiệm cho thấy, cuộc tấn công đã được tái hiện thành công, nhất quán với kết quả ngăn xếp gọi của cuộc tấn công thực tế.
Đề xuất an toàn
Trong thiết kế hợp đồng, cần xem xét các nguy cơ an ninh có thể phát sinh từ nhiều loại Token và các con đường đổi.
Tuân theo mô hình lập trình "Kiểm tra - Hiệu lực - Tương tác" (Checks-Effects-Interactions), tức là trước tiên thực hiện kiểm tra điều kiện, sau đó cập nhật biến trạng thái, và cuối cùng là tương tác với hợp đồng bên ngoài.
Khi xử lý các cuộc gọi từ bên ngoài, cần đặc biệt thận trọng, đặc biệt là trong 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.
Thực hiện kiểm soát quyền hạn hợp lý và cơ chế giới hạn, giảm thiểu tổn thất có thể xảy ra do một cuộc tấn công đơn lẻ.
Sự kiện này một lần nữa nhắc nhở các nhóm phát triển dự án Web3 rằng trong khi theo đuổi sự đổi mới, họ phải chú trọng đến sự an toàn của hợp đồng thông minh. Chỉ có xây dựng cơ sở hạ tầng an toàn và đáng tin cậy hơn mới có thể thúc đẩy sự phát triển lành mạnh của toàn ngành.
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.
8 thích
Phần thưởng
8
8
Chia sẻ
Bình luận
0/400
ShadowStaker
· 07-08 21:29
một ngày nữa, một cuộc khai thác defi khác... khi nào các nhà phát triển mới học cách kiểm tra reentrancy smh
Xem bản gốcTrả lời0
TokenTherapist
· 07-07 15:54
Một cái nữa đã sụp đổ.
Xem bản gốcTrả lời0
GasWaster
· 07-06 14:26
Lại một lần nữa bị đánh cắp
Xem bản gốcTrả lời0
SigmaBrain
· 07-05 22:13
Lại là một cuộc tấn công tái nhập, tình hình này đã bị phá vỡ.
Xem bản gốcTrả lời0
ponzi_poet
· 07-05 22:13
An ninh thì sao? Đã đi đâu mất rồi?
Xem bản gốcTrả lời0
GetRichLeek
· 07-05 22:13
Người ngồi trước ăn dưa Hợp đồng không thể kiểm toán tốt Thua lỗ thảm hại
Xem bản gốcTrả lời0
BearMarketGardener
· 07-05 22:07
Hợp đồng lại nổ rồi, ai chứ.
Xem bản gốcTrả lời0
DaoGovernanceOfficer
· 07-05 22:00
*thở dài* Nói một cách thực nghiệm, 99% trong số những vụ hack này xuất phát từ những thiếu sót cơ bản trong quản lý trạng thái...
Phân tích sâu về tổn thất 2,9 triệu đô la do OrionProtocol bị tấn công tái nhập
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, dự án OrionProtocol trên Ethereum và Binance Smart Chain đã bị tấn công lặp lại do lỗ hổng hợp đồng. Kẻ tấn công đã đánh cắp khoảng 2,84 triệu USDT từ chuỗi Ethereum và khoảng 190.000 BUSD từ chuỗi Binance Smart Chain, tổng thiệt hại ước tính khoảng 2,9 triệu đô la.
Phân tích quá trình tấn công
Kẻ tấn công trước tiên triển khai 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 vốn thông qua chức năng hoán đổi của một DEX, gọi phương thức ExchangeWithAtomic.swapThroughOrionPool của OrionProtocol để thực hiện hoán đổi token. Đường hoán đổi bao gồm địa chỉ hợp đồng Token mà kẻ tấn công đã tạo ra.
Trong quá trình đổi, kẻ tấn công đã lợi dụng chức năng gọi lại của hợp đồng Token tùy chỉnh, lặp lại việc gọi phương thức ExchangeWithAtomic.depositAsset, dẫn đến số tiền gửi bị cộng dồn nhiều lần. Cuối cùng, kẻ tấn công đã hoàn tất việc thu lợi thông qua thao tác rút tiền.
Dòng tiền
Theo dõi, số 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ố 1651 ETH thu lợi từ cuộc tấn công, khoảng 657,5 ETH vẫn còn lại trong địa chỉ ví của kẻ tấn công, phần còn lại đã được chuyển đi qua dịch vụ trộn coin.
Phân tích lỗ hổng
Vấn đề cốt lõi nằm ở hàm doSwapThroughOrionPool của hợp đồng ExchangeWithAtomic. Hàm này cập nhật biến curBalance sau khi thực hiện việc chuyển token, tạo ra cơ hội cho kẻ tấn công thực hiện tấn công tái nhập. Kẻ tấn công bằng cách thêm logic callback vào hàm transfer của Token tùy chỉnh, gọi lại hàm depositAsset nhiều lần, dẫn đến việc curBalance bị cập nhật sai.
Kẻ tấn công đã tận dụng lỗ hổng này để rút tiền thừa sau khi hoàn trả khoản vay chớp nhoáng.
Tái hiện cuộc 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. Mã bao gồm các bước tạo Token tùy chỉnh, thiết lập bể thanh khoản, cấp quyền thực hiện và thực hiện tấn công. Kết quả thử nghiệm cho thấy, cuộc tấn công đã được tái hiện thành công, nhất quán với kết quả ngăn xếp gọi của cuộc tấn công thực tế.
Đề xuất an toàn
Trong thiết kế hợp đồng, cần xem xét các nguy cơ an ninh có thể phát sinh từ nhiều loại Token và các con đường đổi.
Tuân theo mô hình lập trình "Kiểm tra - Hiệu lực - Tương tác" (Checks-Effects-Interactions), tức là trước tiên thực hiện kiểm tra điều kiện, sau đó cập nhật biến trạng thái, và cuối cùng là tương tác với hợp đồng bên ngoài.
Khi xử lý các cuộc gọi từ bên ngoài, cần đặc biệt thận trọng, đặc biệt là trong 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.
Thực hiện kiểm soát quyền hạn hợp lý và cơ chế giới hạn, giảm thiểu tổn thất có thể xảy ra do một cuộc tấn công đơn lẻ.
Sự kiện này một lần nữa nhắc nhở các nhóm phát triển dự án Web3 rằng trong khi theo đuổi sự đổi mới, họ phải chú trọng đến sự an toàn của hợp đồng thông minh. Chỉ có xây dựng cơ sở hạ tầng an toàn và đáng tin cậy hơn mới có thể thúc đẩy sự phát triển lành mạnh của toàn ngành.