Đêm khuya ngày 5 tháng 3 năm 2024, giờ Bắc Kinh Theo nền tảng Beosin Trace, dự án hợp đồng WooPPV2 trên chuỗi Arbitrum đã bị tấn công thao túng giá, gây thiệt hại khoảng 8,5 triệu USD. Tin tặc đã sử dụng các khoản vay flash để cho vay token USDC.e và Woo, sau đó tiến hành trao đổi token thường xuyên thông qua hợp đồng WooPPV2. Do sai sót trong cách tính giá của hợp đồng WooPPV2, tin tặc đã có thể thao túng giá trong quá trình trao đổi, dẫn đến việc đánh cắp một số lượng lớn token Woo. Nhóm bảo mật Beosin đã phân tích sự việc này ngay lập tức.
Phân tích lỗ hổngHợp đồng WooPPV2 Có một chức năng hoán đổi trong Người dùng có thể gọi chức năng này để trao đổi token. Đây chủ yếu là trao đổi giữa USDC.e và Woo (phần sau được phân tích dựa trên trao đổi giữa USDC.e và Woo), trong đó chức năng The Biến quoteToken đại diện cho USDC.e.
hàm_sellQuote Logic của hàm _sellBase cũng tương tự, nó tính toán số lượng token cần trao đổi dựa trên giá, sau đó gửi token cho người gọi. _sellQuote là hàm được gọi khi người gọi sử dụng USDC.e để đổi mã thông báo Woo. Các chức năng chính là trạng thái và _calcBaseAmountSellQuote. state được sử dụng để trả về cấu trúc giúp tiết kiệm giá Woo. _calcBaseAmountSellQuote là phép tính của người dùng về số tiền trao đổi và số tiền mới giá cả.Chức năng.
Tiếp theo chúng ta xem xét Hàm _calcBaseAmountSellQuote logic triển khai, baseAmount là số tiền trao đổi được tính toán, logic chính là chia số tiền USDC.e cho giá của Woo để lấy số lượng Woo có thể trao đổi, sau đó tính giá mới sau khi trao đổi dựa trên giá hiện tại và số tiền trao đổi.
Hàm _sellBase và hàm _sellQuote giống nhau, ngoại trừ hàm _calcQuoteAmountSellBase hơi khác Logic chính là nhân số lượng Woo với giá Woo để có được số lượng USDC.e có thể trao đổi.
Theo logic trao đổi, chúng tôi có thể tìm thấy Một câu hỏi,Logic tính toán số lượng trao đổi này khác với mô hình sản phẩm không đổi của các giao dịch hoán đổi truyền thống như Uniswap. Mô hình này tính toán trực tiếp số lượng bằng cách nhân và chia dựa trên giá, do đó không có hiện tượng trượt giá trong quá trình trao đổi, nhưng giá sẽ thay đổi theo sự thay đổi. Nếu người gọi tính toán cẩn thận, anh ta có thể trích xuất các mã thông báo bên trong.
Ví dụ:
Nếu có ban đầu có 1.000 mã thông báo A và 1.000 mã thông báo B trong nhóm và giá của mã thông báo B là 1. Sau đó, nếu bạn sử dụng 500 mã thông báo A, bạn có thể đổi lấy mã thông báo 500 B. Tại thời điểm này, nhóm sẽ trở thành 1500:500 và giá mã thông báo B sẽ tăng, chẳng hạn như lên 2. Tiếp theo, sử dụng 500 mã thông báo B được trao đổi để đổi lấy 1.000 mã thông báo A. Nhóm cuối cùng trở thành 500: 1.000 và 500 mã thông báo A được rút ra từ không khí.
Trong sự cố này, kẻ tấn công đã sử dụng vấn đề bảo mật này. Hãy cùng xem kẻ tấn công thực hiện cuộc tấn công như thế nào.
Quá trình tấn côngLần này Kẻ tấn công đã sử dụng cùng một phương thức tấn công nhiều lần. Ở đây chúng tôi lấy giao dịch 0xe80a16678b5008d5be1484ec6e9e77dc6307632030553405863ffb38c1f94266 làm ví dụ.
1. Kẻ tấn công đã cho vay hơn 10 triệu USDC.e và 2,72 triệu mã thông báo Woo thông qua các khoản vay nhanh.
2. Tiếp theo , Kẻ tấn công đã sử dụng 100.000 USDC.e để trao đổi mã thông báo Woo ba lần. Tại thời điểm này, bạn có thể thấy rằng giá của Woo vẫn ở mức giá bình thường. Kẻ tấn công hiện đang nắm giữ hơn 8 triệu mã thông báo Woo.
3. Tiếp theo , kẻ tấn công đã trực tiếp sử dụng hơn 8 triệu mã thông báo Woo để đổi lấy USDC.e. Do những vấn đề trên, tại thời điểm này, hơn 8 triệu mã thông báo Woo đều đã được trao đổi theo giá bình thường và hơn 2 triệu USDC.e đã được trao đổi , và theo công thức trên tính ra thì giá Woo lúc này là 7, nhỏ hơn gần 10 triệu lần.
4. Cuối cùng, do Woo Giá token cực kỳ nhỏ, khiến kẻ tấn công sử dụng rất ít USDC.e để trao đổi hơn 8 triệu token Woo, cuối cùng trả lại khoản vay nhanh và rời đi.
< strong>Theo dõi quỹSau vụ hack, kẻ tấn công đã chuyển 200 ETH sang Ethereum thông qua cầu nối chuỗi chéo Tại địa chỉ trên chuỗi Arbitrum, 2.000 ETH còn lại được lưu trữ tại địa chỉ trên chuỗi Arbitrum. Tính đến thời điểm viết bài, chưa có khoản tiền nào được chuyển đi.
Trước cuộc tấn công thao túng giá xảy ra trên chuỗi Arbitrum, chúng ta phải nhận thức được các rủi ro bảo mật trong lĩnh vực này tầm quan trọng của tài sản ảo.