Jarvis Network遭Khoản vay nhanh重入攻击损失663,101个MATIC

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

Phân tích tấn công tái nhập khoản vay nhanh của dự án Jarvis Network

Vào ngày 15 tháng 1 năm 2023, dự án Jarvis_Network đã bị tấn công, mất 663,101 MATIC. Cuộc tấn công này chủ yếu lợi dụng khoản vay nhanh và lỗ hổng tái nhập, dẫn đến sự mất mát tài sản của dự án.

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network

Bằng cách phân tích ngăn xếp gọi giao dịch, phát hiện ra rằng kẻ tấn công đã thực hiện tấn công tái nhập trong hàm remove_liquidity. Hàm này chịu trách nhiệm loại bỏ tính thanh khoản và hoàn lại token cho người dùng. Do Polygon có cấu trúc tương tự như chuỗi EVM, quá trình chuyển MATIC đã kích hoạt tái nhập hợp đồng.

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network

Cuộc tấn công tái nhập xảy ra ở giai đoạn truy vấn giá. Kẻ tấn công chuyển MATIC vào hợp đồng của mình khi loại bỏ thanh khoản. Trong quá trình gọi lại, kẻ tấn công đã truy vấn giá của một mã thông báo nào đó trước. Do việc cập nhật biến self.D trong hợp đồng chậm hơn so với thao tác chuyển tiền, dẫn đến việc lấy giá ở giai đoạn trước đó bị sai.

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network

Quy trình thực hiện hàm remove_liquidity như sau:

  1. Tiêu hủy token LP của người dùng
  2. Gửi tiền ký quỹ đến người dùng
  3. Cập nhật biến self.D

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network

Biến self.D được sử dụng để tính toán giá, và sẽ được cập nhật khi thêm và loại bỏ thanh khoản. Kẻ tấn công đã lợi dụng việc thao tác với số tiền lớn, dẫn đến giá trị self.D tăng đáng kể khi thêm thanh khoản, trong khi không kịp cập nhật khi loại bỏ.

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network

Mặc dù hàm remove_liquidity sử dụng bộ trang trí @nonreentrant('lock') để ngăn chặn tấn công tái nhập, nhưng kẻ tấn công đã vượt qua giới hạn này bằng cách vay mượn qua hợp đồng.

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network

Cuộc tấn công này đã phơi bày ra những lỗ hổng an ninh trong mã dự án. Để tránh những vấn đề tương tự, chúng tôi khuyên bên dự án nên thực hiện các biện pháp sau:

  1. Thực hiện kiểm toán an ninh nghiêm ngặt
  2. Đặt thao tác sửa đổi biến trước khi gọi bên ngoài
  3. Sử dụng nhiều nguồn dữ liệu để lấy giá
  4. Tuân theo quy tắc lập trình "Kiểm tra - Hiệu lực - Tương tác" (Checks-Effects-Interactions)

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network

Bằng cách tối ưu hóa logic mã và tăng cường biện pháp an ninh, có thể nâng cao hiệu quả tính an toàn và ổn định của dự án, ngăn chặn các cuộc tấn công tương tự xảy ra lần nữa.

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network

Phân tích sự kiện tấn công tái nhập Khoản vay nhanh mạng Jarvis

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
  • 7
  • Chia sẻ
Bình luận
0/400
GateUser-e87b21eevip
· 07-20 04:01
Bên dự án phòng ngừa không hiệu quả quá.
Xem bản gốcTrả lời0
StakeOrRegretvip
· 07-19 19:17
Một dự án nữa đã bị sao chép...
Xem bản gốcTrả lời0
ZenMinervip
· 07-19 19:09
Bảo vệ này đang làm gì vậy?
Xem bản gốcTrả lời0
LayerZeroEnjoyervip
· 07-19 19:09
Ai, lại là tái nhập, lại là chiêu cũ.
Xem bản gốcTrả lời0
LiquidityOraclevip
· 07-19 19:05
Ai bảo viết mã không nghiêm túc.
Xem bản gốcTrả lời0
DecentralizedEldervip
· 07-19 19:01
Lại bị hack, thật sự không biết nhớ.
Xem bản gốcTrả lời0
WhaleWatchervip
· 07-19 18:54
Một dự án nữa bị đánh mạnh.
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)