Phân tích cuộc tấn công tái nhập khoản vay nhanh dự án Jarvis Network
Vào ngày 15 tháng 1 năm 2023, dự án Jarvis_Network đã bị tấn công, dẫn đến việc 663,101 MATIC bị đánh cắp. Sự kiện này đã dấy lên mối quan tâm về tính an toàn của dự án.
Thông qua việc 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 đã lợi dụng lỗ hổng gọi lại. Trong quá trình gọi lại, đối với các cuộc gọi hàm giống nhau của cùng một hợp đồng, mặc dù các tham số đầu vào là giống nhau, nhưng giá trị trả về lại có sự khác biệt đáng kể. Sự khác biệt này chủ yếu xảy ra trong hàm remove_liquidity.
Cuộc tấn công tái nhập chủ yếu nhắm vào hàm remove_liquidity của một hợp đồng thông minh nào đó. Hàm này sẽ trả lại các token mà người dùng đã thêm khi loại bỏ thanh khoản. Do tính đồng nhất của Polygon và chuỗi EVM, logic tái nhập đã được kích hoạt khi chuyển MATIC cho hợp đồng.
Phân tích sâu hơn cho thấy, vấn đề nằm ở việc triển khai hàm getUnderlyingPrice. Hàm này liên quan đến nhiều hợp đồng chưa được mã nguồn mở, điều này làm tăng độ khó trong việc phân tích. Tuy nhiên, bằng cách kiểm tra các khe lưu trữ và ngăn xếp gọi, chúng ta có thể suy ra giá trị của các biến quan trọng và đường dẫn gọi hàm.
Tâm điểm của cuộc tấn công nằm ở việc giá trị trả về của hàm get_virtual_price đã xảy ra sự thay đổi đáng kể trước và sau khi gọi lại. Sự thay đổi này liên quan đến thời điểm cập nhật biến self.D. Trong điều kiện bình thường, self.D nên được cập nhật sau khi hoàn tất việc chuyển tiền, nhưng trong cuộc tấn công lần này, do việc gọi lại xảy ra, dẫn đến việc tính toán giá cả bị sai.
 tiêu hủy LP token của người dùng; 2) gửi vốn đã đặt cọc cho người dùng; 3) cập nhật giá trị self.D. Kẻ tấn công thực hiện tấn công lại ở bước thứ hai, lợi dụng giá trị self.D chưa được cập nhật kịp thời để vay mượn, từ đó thu được lợi ích không chính đáng.
![Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-9b2de9b00c52d3ff96d5a361df65769a.webp(
![Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-88f9283ee0923cff2a22405715721cd2.webp(
Đáng chú ý là, mặc dù hàm remove_liquidity sử dụng bộ trang trí @nonreentrant)'lock'( để ngăn chặn việc gọi lại, nhưng do kẻ tấn công gọi lại và vào các hợp đồng khác để vay tiền, khóa gọi lại này không đạt được hiệu quả mong đợi.
![Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-d41ac025ee561569cce3b941d7e07967.webp(
Cuộc tấn công này đã làm lộ ra tầm quan trọng của thời điểm cập nhật biến trong hợp đồng thông minh. Để nâng cao độ an toàn, đề xuất các bên dự án thực hiện các biện pháp sau:
Thực hiện kiểm toán an ninh nghiêm ngặt
Đảm bảo rằng việc sửa đổi biến được hoàn thành trước khi gọi từ bên ngoài
Sử dụng phương pháp nhiều nguồn dữ liệu để获取 thông tin giá
Tuân theo mô hình "Kiểm tra - Hiệu lực - Tương tác" (Checks-Effects-Interactions) khi viết mã
Bằng cách thực hiện những phương pháp tốt nhất này, có thể nâng cao đáng kể tính an toàn và ổn định của hợp đồng thông minh, cung cấp cơ sở hạ tầng đáng tin cậy hơn cho hệ sinh thái Web3.
![Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-2c4474781d661306bc8c432dad3942c0.webp(
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.
Jarvis Network bị tấn công tái nhập bởi khoản vay nhanh, 663,101 MATIC đã bị đánh cắp
Phân tích cuộc tấn công tái nhập khoản vay nhanh dự án Jarvis Network
Vào ngày 15 tháng 1 năm 2023, dự án Jarvis_Network đã bị tấn công, dẫn đến việc 663,101 MATIC bị đánh cắp. Sự kiện này đã dấy lên mối quan tâm về tính an toàn của dự án.
Thông qua việc 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 đã lợi dụng lỗ hổng gọi lại. Trong quá trình gọi lại, đối với các cuộc gọi hàm giống nhau của cùng một hợp đồng, mặc dù các tham số đầu vào là giống nhau, nhưng giá trị trả về lại có sự khác biệt đáng kể. Sự khác biệt này chủ yếu xảy ra trong hàm remove_liquidity.
Cuộc tấn công tái nhập chủ yếu nhắm vào hàm remove_liquidity của một hợp đồng thông minh nào đó. Hàm này sẽ trả lại các token mà người dùng đã thêm khi loại bỏ thanh khoản. Do tính đồng nhất của Polygon và chuỗi EVM, logic tái nhập đã được kích hoạt khi chuyển MATIC cho hợp đồng.
Phân tích sâu hơn cho thấy, vấn đề nằm ở việc triển khai hàm getUnderlyingPrice. Hàm này liên quan đến nhiều hợp đồng chưa được mã nguồn mở, điều này làm tăng độ khó trong việc phân tích. Tuy nhiên, bằng cách kiểm tra các khe lưu trữ và ngăn xếp gọi, chúng ta có thể suy ra giá trị của các biến quan trọng và đường dẫn gọi hàm.
Tâm điểm của cuộc tấn công nằm ở việc giá trị trả về của hàm get_virtual_price đã xảy ra sự thay đổi đáng kể trước và sau khi gọi lại. Sự thay đổi này liên quan đến thời điểm cập nhật biến self.D. Trong điều kiện bình thường, self.D nên được cập nhật sau khi hoàn tất việc chuyển tiền, nhưng trong cuộc tấn công lần này, do việc gọi lại xảy ra, dẫn đến việc tính toán giá cả bị sai.
 tiêu hủy LP token của người dùng; 2) gửi vốn đã đặt cọc cho người dùng; 3) cập nhật giá trị self.D. Kẻ tấn công thực hiện tấn công lại ở bước thứ hai, lợi dụng giá trị self.D chưa được cập nhật kịp thời để vay mượn, từ đó thu được lợi ích không chính đáng.
![Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-9b2de9b00c52d3ff96d5a361df65769a.webp(
![Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-88f9283ee0923cff2a22405715721cd2.webp(
Đáng chú ý là, mặc dù hàm remove_liquidity sử dụng bộ trang trí @nonreentrant)'lock'( để ngăn chặn việc gọi lại, nhưng do kẻ tấn công gọi lại và vào các hợp đồng khác để vay tiền, khóa gọi lại này không đạt được hiệu quả mong đợi.
![Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-d41ac025ee561569cce3b941d7e07967.webp(
Cuộc tấn công này đã làm lộ ra tầm quan trọng của thời điểm cập nhật biến trong hợp đồng thông minh. Để nâng cao độ an toàn, đề xuất các bên dự án thực hiện các biện pháp sau:
Bằng cách thực hiện những phương pháp tốt nhất này, có thể nâng cao đáng kể tính an toàn và ổn định của hợp đồng thông minh, cung cấp cơ sở hạ tầng đáng tin cậy hơn cho hệ sinh thái Web3.
![Phân tích sự kiện tấn công tái nhập Khoản vay nhanh Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-2c4474781d661306bc8c432dad3942c0.webp(