Nguồn: Công nghệ Lingshi Thâm Quyến
Giới thiệu cơ bản
Vào ngày 5 tháng 3 năm 2024, chúng tôi đã phát hiện một giao dịch bất thường trên chuỗi arbiscan: https://arbiscan.io/tx/0xe80a16678b5008d5be1484ec6e9e77dc6307632030553405863ffb38c1f94266
Sau khi phân tích, chúng tôi phát hiện ra rằng đó là một cuộc tấn công vào WOOFi, gây ra tổng thiệt hại khoảng 9 triệu đô la Mỹ.
WOOFi là một ứng dụng phi tập trung (DApp) tất cả trong một được xây dựng bởi WOO Network. WOOFI nhằm mục đích tối ưu hóa trải nghiệm của người dùng với tài chính phi tập trung (DeFi) bằng cách cung cấp độ trượt cực thấp, phí trao đổi cạnh tranh và các tính năng hữu ích khác.
Người dùng WOOFi có thể đổi các tài sản kỹ thuật số phổ biến và có cơ hội kiếm thu nhập bằng cách đặt cược và cung cấp tính thanh khoản cho mạng. Một trong những đề xuất giá trị chính được nền tảng WOOFi tạo ra cho người dùng DeFi là tính thanh khoản sâu.
Hợp đồng hoán đổi trong WOOFi lần này đã bị tấn công. Địa chỉ hợp đồng là: https://arbiscan.io/address/0xeff23b4be1091b53205e35f3afcd9c7182bf3062#code strong>
Phân tích sự cố và tấn công
Kẻ tấn công đã sử dụng flashLoan từ quỹ Uniswap và TraderJoe Ban đầu cho cuộc tấn công đã thu được tổng cộng 10504796 USDC.e và 2721172 WOO.
Sau đó , kẻ tấn công đã thế chấp số USDC.e đã vay trong Slio Finance (tổng cộng 7.000.000 USDC.e đã được thế chấp) và cho vay 5.092.663 WOO.
Tiếp tục , kẻ tấn công đã sử dụng số USDC.e còn lại để đổi lấy WOO thông qua chức năng hoán đổi của WOOFi, do đó làm tăng giá của WOO.
Đạt Ba hoạt động hoán đổi đã nâng giá WOO từ 56884100 lên 60400479, tạo điều kiện cho các cuộc tấn công tiếp theo.
Cuộc tấn công thực sự xảy ra khi kẻ tấn công đổi WOO lấy USDC.e,
Như bạn có thể thấy, sau lần hoán đổi này, giá của WOO đã thay đổi thành 7, tức là 0,00000007 USD. So với mức giá trước đó, nó đã giảm mạnh 8,62 triệu lần.
Khi xem mã hợp đồng, chúng tôi nhận thấy rằng có lỗi xử lý dữ liệu trong hợp đồng WOOFi khi chuyển đổi BaseToken thành QuoteToken.
Chúng tôi Xem cách tính giá của BaseToken khi bán BaseToken để nhận QuoteToken
newPrice = (1 - 2 * k * oracle.price * baseAmount) * oracle.price< /p>
Kẻ tấn công có thể kiểm soát oracle.price và baseAmount vì giá trị k không thay đổi. Kẻ tấn công có thể thao túng oracle.price, là giá của BaseToken, thông qua nhiều giao dịch hoán đổi và có thể thao túng baseAmount. Từ công thức này có thể thấy rằng newPrice phải nhỏ hơn oracle.price. Do đó, kẻ tấn công có thể kiểm soát sự kết hợp của oracle.price và baseAmount để thao túng newPrice ở mức cực thấp.
Cuối cùng, kẻ tấn công đã sử dụng một lượng nhỏ USDC.e để đổi một lượng lớn WOO, trả lại tiền gốc cho vay và rút tiền mặt.
Hai ngày sau, nhân viên chính thức của WOOFi đã liên lạc với kẻ tấn công và tuyên bố rằng họ có thể cung cấp 10% dưới dạng phần thưởng Whitehat. Tuy nhiên, tính đến thời điểm xuất bản, kẻ tấn công vẫn chưa trả lại số tiền bị đánh cắp.
Sau đó , bản chính thức đã sửa lỗi này. Các bạn có thể thấy bản sửa lỗi chính thức là hủy hệ số 2x. https://github.com/woonetwork/WooPoolV2/commit/f5fe28acc77cf3801ac379db9bf99bb61b73ba17
Tóm tắt
Nguyên nhân của lỗ hổng này là do sơ hở trong tính toán của mô hình kinh tế, kẻ tấn công có thể kiểm soát giá mua và số lượng bán, khiến giá mã thông báo giảm đáng kể, điều này cuối cùng dẫn đến việc kẻ tấn công sử dụng rất ít USDC.e để tiêu hủy mã thông báo WOO của dự án. Bên dự án nên tiến hành xác minh nhiều bên khi thiết kế mô hình kinh tế và logic vận hành mã, đồng thời cố gắng chọn nhiều công ty kiểm toán để kiểm tra chéo trước khi hợp đồng trực tuyến.