OrionProtocol bị tấn công tái nhập, thiệt hại khoảng 2,9 triệu đô la.

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, dự án 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 đã thu lợi khoảng 2,9 triệu USD, trong đó bao gồm 2.844.766 USDT trên chuỗi Ethereum và 191.606 BUSD trên chuỗi Binance Smart.

Phân tích quá 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 một loạt các thao tác chuyển nhượng và ủy quyền để chuẩn bị cho cuộc tấn công tiếp theo. Sau đó, kẻ tấn công vay tiền thông qua chức năng hoán đổi của một DEX và gọi phương thức ExchangeWithAtomic.swapThroughOrionPool của OrionProtocol để thực hiện hoán đổi token. Đường hoán đổi được thiết lập là [USDC, Token của kẻ tấn công, USDT].

Khi thực hiện phương thức swapThroughOrionPool, do hợp đồng Token của kẻ tấn công có chức năng gọi lại, đã dẫn đến việc kích hoạt tấn công tái nhập trong quá trình chuyển tiền. Kẻ tấn công đã lợi dụng phương thức Token.Transfer để gọi lại hàm ExchangeWithAtomic.depositAsset một cách liên tục, khiến số tiền gửi không ngừng gia tăng. Cuối cùng, kẻ tấn công đã hoàn thành việc thu lợi thông qua thao tác rút tiền.

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

Dòng tiền

Theo dữ liệu trên chuỗ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. 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 qua dịch vụ trộn coin.

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

Phân tích lỗ hổng

Lỗ hổng nằm ở hàm doSwapThroughOrionPool trong hợp đồng ExchangeWithAtomic. Hàm này có một thiếu sót logic khi thực hiện thao tác _doSwapTokens. Cụ thể, mã chỉ cập nhật biến curBalance sau khi thực hiện chuyển khoản, điều này tạo ra điều kiện cho cuộc tấn công tái nhập.

Kẻ tấn công đã thêm logic gọi lại vào hàm transfer của Token tùy chỉnh, lặp đi lặp lại gọi hàm depositAsset, dẫn đến việc cập nhật curBalance không chính xác. Cuối cùng, sau khi hoàn trả khoản vay chớp nhoáng, kẻ tấn công đã gọi hàm withdraw để rút số tiền thừa.

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

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

Để tránh các cuộc tấn công tương tự, nhóm dự án nên lưu ý những điểm sau:

  1. Khi triển khai chức năng đổi token, cần xem xét toàn diện các loại token khác nhau và các con đường đổi có thể mang lại rủi ro an ninh.

  2. Tuân thủ nghiêm ngặt mô hình mã hóa "Kiểm tra - Hiệu lực - Tương tác" (Checks-Effects-Interactions), tức là đầu tiên thực hiệ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.

  3. Tăng cường kiểm soát an ninh đối với các cuộc gọi bên ngoài, đặc biệt là khi xử lý Token do người dùng tùy chỉnh.

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

  5. Sử dụng thư viện bảo mật trưởng thành và các thực tiễn tốt nhất, chẳng hạn như SafeERC20 của OpenZeppelin.

Bằng cách thực hiện các biện pháp này, có thể giảm thiểu đáng kể rủi ro bị tấn công vào hợp đồng thông minh, nâng cao tính an toàn tổng thể của dự án.

TOKEN0.64%
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
ser_ngmivip
· 17giờ trước
Lại không còn tiền
Xem bản gốcTrả lời0
PretendingToReadDocsvip
· 17giờ trước
Ngày nào cũng có chuyện xảy ra, còn làm gì nữa.
Xem bản gốcTrả lời0
LiquidityWizardvip
· 18giờ trước
Rug Pull预定~
Xem bản gốcTrả lời0
degenonymousvip
· 18giờ trước
đồ ngốc lại bị chơi đùa với mọi người rồi
Xem bản gốcTrả lời0
CountdownToBrokevip
· 18giờ trước
Một cái nữa đã biến mất
Xem bản gốcTrả lời0
BoredApeResistancevip
· 18giờ trước
Lại là lỗ hổng hợp đồng, ăn no rồi.
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)