OrionProtocol bị tấn công tái nhập, thiệt hại 2,9 triệu đô la Mỹ tài sản mã hóa

robot
Đang tạo bản tóm tắt

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, OrionProtocol trên Ethereum và Binance Smart Chain đã bị tấn công tái nhập do lỗ hổng hợp đồng, gây thiệt hại khoảng 2,9 triệu USD, trong đó bao gồm 2.844.766 USDT trên Ethereum và 191.606 BUSD trên Binance Smart Chain.

Phân tích tấn công tái nhập OrionProtocol kèm PoC

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 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 vay mượn thông qua phương thức swap của UNI-V2, và gọi phương thức swapThroughOrionPool của hợp đồng ExchangeWithAtomic để thực hiện việc trao đổi token. Đường trao đổi được thiết lập là USDC → Token mà kẻ tấn công tạo ra → USDT.

Phân tích tấn công tái nhập OrionProtocol kèm PoC

Trong quá trình đổi, do hợp đồng Token được tạo ra bởi kẻ tấn công có chức năng gọi lại, dẫn đến việc khi thực hiện phương thức ExchangeWithAtomic.swapThroughOrionPool, thông qua Token.Transfer tiếp tục gọi lại phương thức ExchangeWithAtomic.depositAsset, gây ra tấn công tái nhập. Điều này khiến số tiền gửi liên tục gia tăng, 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.

Phân tích tấn công tái nhập OrionProtocol kèm PoC

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ố 1,651 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 dịch vụ trộn coin.

Phân tích tấn công Reentrancy của OrionProtocol kèm PoC

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 gọi hàm _doSwapTokens, trong hàm đó, thao tác chuyển token xảy ra trước khi curBalance được cập nhật. Kẻ tấn công đã tận dụng tính năng gọi lại đượ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 việc curBalance bị cập nhật sai. Cuối cùng, kẻ tấn công đã rút tiền thành công sau khi hoàn trả khoản vay chớp nhoáng bằng cách gọi hàm withdraw.

Phân tích tấn công tái nhập OrionProtocol kèm PoC

Phân tích tấn công tái nhập OrionProtocol kèm PoC

Phân tích tấn công tái nhập OrionProtocol kèm PoC

Phân tích tấn công tái nhập OrionProtocol kèm PoC

Phân tích tấn công tái nhập OrionProtocol kèm PoC

Phân tích tấn công tái nhập OrionProtocol kèm PoC

Phân tích tấn công tái nhập OrionProtocol kèm PoC

Đề xuất phòng ngừa

  1. Khi thiết kế hợp đồng, cần xem xét những rủi ro tiềm ẩn có thể phát sinh từ nhiều loại Token và các con đường trao đổi khác nhau.

  2. Tuân theo quy tắc lập trình "Đánh giá trước, cập nhật biến sau, cuối cùng là gọi bên ngoài" (mô hình Checks-Effects-Interactions) có thể cải thiện hiệu suất bảo mật của hợp đồng.

  3. Khi thực hiện chức năng trao đổi token, cần đặc biệt chú ý đến rủi ro tấn công tái nhập, có thể xem xét sử dụng cơ chế khóa tái nhập để bảo vệ.

  4. Đối với các chức năng quan trọng liên quan đến việc thao tác tài chính, nên thực hiện kiểm toán và kiểm tra an toàn toàn diện, bao gồm mô phỏng các tình huống biên và các tình huống bất thường.

  5. Thực hiện kiểm tra an toàn hợp đồng định kỳ, kịp thời cập nhật và sửa chữa các lỗ hổng tiềm ẩn.

Bằng cách thực hiện các biện pháp này, có thể giảm đáng kể rủi ro hợp đồng thông minh bị tấn công, nâng cao tính an toàn tổng thể của dự án. Trong hệ sinh thái Web3, an toàn luôn là một trong những yếu tố quan trọng nhất.

TOKEN-0.13%
Xem bản gốc
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.
  • Phần thưởng
  • 6
  • Đăng lại
  • Chia sẻ
Bình luận
0/400
GasFeeCriervip
· 7giờ trước
Bảo vệ hợp đồng không làm tốt? Đáng đời!
Xem bản gốcTrả lời0
AirdropBuffetvip
· 08-12 21:06
又 một hợp đồng thông minh đã chết~
Xem bản gốcTrả lời0
ZenMinervip
· 08-12 21:05
Lỗ hổng lớn như vậy sao không tìm tôi kiểm toán
Xem bản gốcTrả lời0
HallucinationGrowervip
· 08-12 21:00
Một cơ hội nữa để Rug Pull
Xem bản gốcTrả lời0
TokenStormvip
· 08-12 20:57
Ôi, kịch bản đã viết xong, chỉ còn một bước nữa.
Xem bản gốcTrả lời0
ZKProofEnthusiastvip
· 08-12 20:36
又 một vụ Rug Pull bẫy?
Xem bản gốcTrả lời0
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)