Jarvis Network đã bị tấn công tái tham gia khoản vay nhanh, mất 660.000 token MATIC

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

Phân tích dự án Jarvis Network từ một cuộc tấn công tái tham gia flash loan

Gần đây, một sự kiện tấn công nhằm vào dự án Jarvis Network đã thu hút sự chú ý của ngành. Theo dữ liệu giám sát trên chuỗi, cuộc tấn công xảy ra vào ngày 15 tháng 1 năm 2023, dẫn đến thiệt hại cho dự án là 663,101 token MATIC.

! Phân tích sự cố tấn công tái tham gia của Jarvis Network Flash Loan

Thông qua việc phân tích ngăn xếp gọi của giao dịch tấn công, chúng tôi phát hiện ra rằng kẻ tấn công đã sử dụng sự kết hợp giữa Khoản vay nhanh và lỗ hổng tái nhập. Trong quá trình loại bỏ tính thanh khoản, kẻ tấn công đã thành công trong việc thực hiện tấn công tái nhập, dẫn đến cùng một hàm trước và sau khi tái nhập trả về các giá trị hoàn toàn khác nhau.

! Phân tích sự cố tấn công tái tham gia của Jarvis Network Flash Loan

Nghiên cứu sâu cho thấy, vấn đề nằm ở hàm remove_liquidity. Hàm này chịu trách nhiệm loại bỏ thanh khoản và trả lại token cho người dùng. Do chuỗi Polygon tương thích với EVM, trong quá trình chuyển tiền đã kích hoạt logic gọi lại của hợp đồng.

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

Lỗ hổng chính nằm ở biến self.D được sử dụng trong việc tính toán giá. Thông thường, self.D nên được cập nhật kịp thời khi loại bỏ tính thanh khoản. Tuy nhiên, do thiếu sót trong logic mã, việc cập nhật self.D đã bị trì hoãn cho đến sau khi gọi bên ngoài. Điều này đã tạo cơ hội cho kẻ tấn công chèn các thao tác vào giữa, tận dụng giá trị self.D chưa được cập nhật để thực hiện giao dịch chênh lệch giá.

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 đã khéo léo vượt qua cơ chế bảo vệ này. Họ đã tránh tái nhập vào hàm remove_liquidity bằng cách tái nhập vào các chức năng cho vay của hợp đồng khác.

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

Cuộc tấn công lần này đã làm nổi bật tầm quan trọng của một số nguyên tắc an toàn chính trong phát triển hợp đồng thông minh:

  1. Tuân thủ nghiêm ngặt mô hình Kiểm tra-Hiệu ứng-Tương tác.
  2. Đảm bảo rằng việc cập nhật các biến quan trọng hoàn thành trước bất kỳ cuộc gọi bên ngoài nào.
  3. Sử dụng nhiều nguồn dữ liệu để lấy giá, nhằm tăng cường tính linh hoạt của hệ thống.
  4. Kiểm tra bảo mật toàn diện là điều cần thiết để tìm và khắc phục các lỗ hổng tiềm ẩn.

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

Sự cố này là một lời nhắc nhở khác rằng bảo mật luôn là ưu tiên hàng đầu trong hệ sinh thái blockchain đang phát triển nhanh chóng. Nhóm phát triển dự án nên liên tục theo dõi các phương pháp bảo mật mới nhất và tiến hành đánh giá mã và kiểm tra lỗ hổng thường xuyên để đảm bảo tính bảo mật của tài sản người dùng.

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

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
MidnightSnapHuntervip
· 07-18 10:01
Bugs trong hợp đồng thực sự rất khó đề phòng.
Xem bản gốcTrả lời0
StablecoinEnjoyervip
· 07-17 23:27
Một dự án nữa đã bị xâm nhập!
Xem bản gốcTrả lời0
OnChainSleuthvip
· 07-17 00:48
Một dự án nữa đã bị lấy sạch.
Xem bản gốcTrả lời0
shadowy_supercodervip
· 07-17 00:40
Hứ, lại là tấn công tái nhập, không nhớ gì cả.
Xem bản gốcTrả lời0
DeFi_Dad_Jokesvip
· 07-17 00:37
Lại có dự án bùng nổ rồi~
Xem bản gốcTrả lời0
DecentralizeMevip
· 07-17 00:30
Lại lại lại bị xâm nhập rồi
Xem bản gốcTrả lời0
0xSherlockvip
· 07-17 00:24
Hey lại đến để được chơi cho Suckers rồi
Xem bản gốcTrả lời0
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)