Phân tích cuộc tấn công tái nhập khoản vay nhanh của Jarvis Network
Vào ngày 15 tháng 1 năm 2023, dự án Jarvis_Network đã bị tấn công bởi hacker, mất 663101 MATIC. Thông qua việc phân tích dữ liệu giao dịch, phát hiện rằng cuộc tấn công này liên quan đến Khoản vay nhanh và lỗ hổng tái nhập.
Kẻ tấn công đã lợi dụng lỗ hổng trong hàm remove_liquidity. Khi loại bỏ tính thanh khoản, hàm này sẽ trả lại các token mà người dùng đã thêm. Do Polygon và EVM là chuỗi đồng nhất, việc chuyển MATIC cho hợp đồng sẽ kích hoạt logic gọi lại của hợp đồng.
Chú ý đến quá trình gọi hàm getUnderlyingPrice. Hàm này liên quan đến sự tương tác của nhiều hợp đồng, trong đó một số hợp đồng không được mã nguồn mở. Qua phân tích, phát hiện vấn đề nằm ở giá trị trả về của hàm get_virtual_price. Giá trị trả về của hàm này có sự khác biệt rõ rệt trước và sau khi tái nhập.
Cụ thể, việc cập nhật biến self.D xảy ra sau khi chuyển nhượng token. Kẻ tấn công đã chuyển MATIC đến hợp đồng của kẻ tấn công khi loại bỏ tính thanh khoản. Khi gọi hàm fallback, kẻ tấn công trước tiên truy vấn giá của một token nào đó. Do việc cập nhật self.D chậm hơn so với chuyển nhượng, dẫn đến việc lấy giá trước đó bị sai.
Quá trình loại bỏ thanh khoản bao gồm: 1) hủy token LP 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. self.D được sử dụng để tính toán giá, 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 lỗ hổng về thanh khoản lớn và thời điểm cập nhật self.D, thực hiện cuộc gọi lại ở bước 2 và vay với giá gấp 10 lần giá ban đầu.
'lock'( để ngăn chặn tấn công tái nhập, nhưng kẻ tấn công đã vượt qua cơ chế bảo vệ này thông qua việc vay mượn giữa các hợp đồ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(
Cuộc tấn công lần này đã phơi bày những thiếu sót của dự án trong logic sửa đổi biến và tính an toàn của việc gọi hợp đồng chéo. Để phòng ngừa các cuộc tấn công tương tự, khuyến nghị phía dự án nê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.
Đặt việc sửa đổi biến trước khi gọi bên ngoài.
Sử dụng phương pháp nhiều nguồn dữ liệu để lấy giá.
Tuân thủ quy tắc lập trình "Kiểm tra - Hiệu ứng - 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])https://img-cdn.gateio.im/webp-social/moments-d41ac025ee561569cce3b941d7e07967.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-2c4474781d661306bc8c432dad3942c0.webp(
Thông qua những biện pháp này, có thể nâng cao đáng kể tính an toàn và ổn định của dự án, ngăn chặn các sự cố tấn công tương tự xảy ra lần nữa.
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.
22 thích
Phần thưởng
22
6
Chia sẻ
Bình luận
0/400
NFTHoarder
· 20giờ trước
Dự án này thử nghiệm cũng quá kém, chỉ một cú là thủng phòng ngự.
Xem bản gốcTrả lời0
RektDetective
· 07-19 06:12
Lại có người gặp sự cố, không kiểm tra giao dịch matic, người mới viết mã?
Xem bản gốcTrả lời0
DuskSurfer
· 07-18 23:29
Vẫn đang nằm đó sao chép hợp đồng, chưa hiểu rõ về tái nhập~
Xem bản gốcTrả lời0
StableGenius
· 07-18 23:29
lmao một ngày nữa một vụ hack nữa... như đã dự đoán thật sự
Xem bản gốcTrả lời0
HypotheticalLiquidator
· 07-18 23:18
Lỗi cũ lại tái diễn rồi, không khóa một cái khóa tái nhập sao?
Jarvis Network遭Khoản vay nhanh重入攻击 损失66万MATIC
Phân tích cuộc tấn công tái nhập khoản vay nhanh của Jarvis Network
Vào ngày 15 tháng 1 năm 2023, dự án Jarvis_Network đã bị tấn công bởi hacker, mất 663101 MATIC. Thông qua việc phân tích dữ liệu giao dịch, phát hiện rằng cuộc tấn công này liên quan đến Khoản vay nhanh và lỗ hổng tái nhập.
Kẻ tấn công đã lợi dụng lỗ hổng trong hàm remove_liquidity. Khi loại bỏ tính thanh khoản, hàm này sẽ trả lại các token mà người dùng đã thêm. Do Polygon và EVM là chuỗi đồng nhất, việc chuyển MATIC cho hợp đồng sẽ kích hoạt logic gọi lại của hợp đồng.
Chú ý đến quá trình gọi hàm getUnderlyingPrice. Hàm này liên quan đến sự tương tác của nhiều hợp đồng, trong đó một số hợp đồng không được mã nguồn mở. Qua phân tích, phát hiện vấn đề nằm ở giá trị trả về của hàm get_virtual_price. Giá trị trả về của hàm này có sự khác biệt rõ rệt trước và sau khi tái nhập.
Cụ thể, việc cập nhật biến self.D xảy ra sau khi chuyển nhượng token. Kẻ tấn công đã chuyển MATIC đến hợp đồng của kẻ tấn công khi loại bỏ tính thanh khoản. Khi gọi hàm fallback, kẻ tấn công trước tiên truy vấn giá của một token nào đó. Do việc cập nhật self.D chậm hơn so với chuyển nhượng, dẫn đến việc lấy giá trước đó bị sai.
Quá trình loại bỏ thanh khoản bao gồm: 1) hủy token LP 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. self.D được sử dụng để tính toán giá, 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 lỗ hổng về thanh khoản lớn và thời điểm cập nhật self.D, thực hiện cuộc gọi lại ở bước 2 và vay với giá gấp 10 lần giá ban đầu.
'lock'( để ngăn chặn tấn công tái nhập, nhưng kẻ tấn công đã vượt qua cơ chế bảo vệ này thông qua việc vay mượn giữa các hợp đồ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(
Cuộc tấn công lần này đã phơi bày những thiếu sót của dự án trong logic sửa đổi biến và tính an toàn của việc gọi hợp đồng chéo. Để phòng ngừa các cuộc tấn công tương tự, khuyến nghị phía dự án nên thực hiện các biện pháp sau:
![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(
![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(
Thông qua những biện pháp này, có thể nâng cao đáng kể tính an toàn và ổn định của dự án, ngăn chặn các sự cố tấn công tương tự xảy ra lần nữa.