Kẻ khai thác đã sử dụng chức năng hoảng loạn được ẩn trong tám hợp đồng thông minh khác nhau để xóa số tiền trị giá 1 triệu đô la Mỹ của người dùng mà không có sự cho phép của họ.
Vào ngày 26 tháng 6, công ty tổng hợp tài chính phi tập trung (DeFi) Chibi Finance đã bị lợi dụng bởi tài khoản người triển khai của chính họ và số tiền điện tử trị giá 1 triệu đô la Mỹ đã bị rút khỏi các hợp đồng của họ trong một vụ lừa đảo rõ ràng là rút hoặc thoát thảm. Giao diện người dùng chính thức của giao thức đã biến mất, tạo ra lỗi 404 và tất cả phương tiện truyền thông xã hội cho ứng dụng đã bị gỡ xuống. Sau khi số tiền bị cạn kiệt, chúng được hoán đổi lấy Wrapped Ether (WETH) và kết nối với Ethereum, nơi chúng sau đó được gửi đến Tornado Cash bởi kẻ tấn công.
Giá của Token quản trị Chibi Finance (CHIBI) đã giảm hơn 90% khi tin tức được đưa ra.
Nhưng không thể rút thanh khoản (rug pull) trong DeFi. Rốt cuộc, theo định nghĩa, những ứng dụng này không chạy trên cơ sở hạ tầng tập trung. Vì vậy, người tạo ứng dụng sẽ không thể bỏ chạy với tất cả tiền điện tử hoặc tiền mặt.
Vì lý do này, có thể hữu ích khi phân tích cách thực hiện vụ lừa đảo bị cáo buộc.
CertiK đã lập báo cáo chi tiết sau khi điều tra vụ việc. Khi được kết hợp với dữ liệu blockchain, báo cáo này có thể làm sáng tỏ cách thức cuộc tấn công xảy ra và người dùng có thể làm gì để tự bảo vệ mình trước các cuộc tấn công hoặc lừa đảo tương tự trong tương lai.
Ứng dụng Chibi Finance
Trước khi giao diện người dùng ngoại tuyến, Chibi tự mô tả mình là công cụ tổng hợp lợi nhuận phổ biến nhất trên Arbitrum. Nó tuyên bố sẽ cho phép người dùng thu được lợi nhuận từ khắp hệ sinh thái Arbitrum.
Theo CertiK, công cụ tổng hợp DeFi đã tăng trưởng về tổng giá trị vốn hóa (TVL) — thước đo giá trị nắm giữ tiền điện tử trong hợp đồng ứng dụng — kể từ khi ra mắt vào tháng Tư. Vào ngày 21 tháng 6, Chibi thông báo đã đạt được 500.000 USD tiền TVL. Vào thời điểm đó, nhóm đã đặt mục tiêu đạt được 1 triệu đô la Mỹ.
Vào ngày 26 tháng 6, lần đầu tiên ứng dụng này được liệt kê trên CoinGecko, giúp nó được tiếp xúc nhiều hơn. Có vẻ như nó đã đạt được mục tiêu 1 triệu đô la Mỹ ngay sau sự kiện này, ngay trước khi các Token bị rút khỏi hợp đồng của nó. Kết quả là, các nhà đầu tư đã mất số tiền điện tử trị giá hơn 1 triệu đô la Mỹ trong vụ tấn công hoặc lừa đảo.
Hợp đồng tài chính Chibi
Cuộc tấn công đã khai thác lỗ hổng trong tám hợp đồng khác nhau được sử dụng trong giao thức Chibi Finance. Những hợp đồng này được tách ra từ các dự án khác và không chỉ dành riêng cho Chibi. Ví dụ: một trong số đó là StrategyAave.sol tại địa chỉ Arbitrum 0x45E8a9BA6Fcd612a30ae186F3Cc93d78Be3E7d8d, địa chỉ này cũng đã được triển khai tới một số địa chỉ khác trên Abitrum, Ethereum, Chuỗi thông minh BNB và các mạng khác.
Một ví dụ khác là hợp đồng StrategySushiSwap.sol tại 0x9458Ea03af408cED1d919C8866a97FB35D06Aae0. Điều này cũng có một số phiên bản trên Arbitrum và các mạng khác.
Các hợp đồng này dường như được sử dụng phổ biến trong các ứng dụng tổng hợp DeFi, không chỉ Chibi Finance.
Chức năng hoảng loạn
Dữ liệu blockchain tiết lộ rằng một số hợp đồng được Chibi Finance sử dụng có chức năng hoảng loạn có thể được sử dụng để rút tất cả Token từ Pool và gửi chúng đến một địa chỉ cụ thể. Chức năng này rất cần thiết cho phương thức tấn công. Dưới đây là giải thích về cách thức hoạt động của nó, với StrategySushiSwap.sol được sử dụng làm ví dụ:
Dòng 340–343 của StrategySushiSwap.sol nêu rõ rằng nếu hàm panic() được gọi, thì nó sẽ gọi hàm thứ hai có tên là EmergencyWithdraw trên hợp đồng ISushiStake.
Đến lượt mình, hợp đồng ISushiStake chỉ là một giao diện. Nó không chứa mã thực thi. Thay vào đó, nó trỏ đến hợp đồng SushiSwap: MiniChefV2 tại 0xF4d73326C13a4Fc5FD7A064217e12780e9Bd62c3.
Địa chỉ MiniChefV2 được liệt kê dưới dạng hợp đồng chính thức cho nền tảng giao dịch phi tập trung, SushiSwap. Vì vậy, hàm hoảng loạn gọi hàm EmergencyWithdraw trong SushiSwap.
Tại địa chỉ SushiSwap, chức năng Rút tiền khẩn cấp có thể được nhìn thấy trên các dòng 626–643.
Chức năng này cho phép chủ sở hữu tiền rút mà không cần nhận phần thưởng. Điều này có thể hữu ích trong trường hợp khẩn cấp. Ví dụ: người dùng có thể muốn gọi chức năng này nếu một lỗi trong hợp đồng phần thưởng khiến họ không thể nhận phần thưởng.
Chức năng Rút tiền khẩn cấp có dự phòng an toàn để ngăn chặn việc sử dụng của những người không được ủy quyền. Nó cho biết trên dòng 360, UserInfo lưu trữ user = userInfo[pid][msg.sender], nghĩa là người dùng được xác định là người gửi thư. Trong các trường hợp bình thường, điều này sẽ cho phép người dùng rút tiền khẩn cấp của chính họ chứ không phải tiền của bất kỳ ai khác.
Có vẻ như không có gì độc hại về chức năng này trong SushiSwap. Tuy nhiên, một vấn đề có thể phát sinh nếu người dùng không gọi chức năng này trực tiếp từ ví của chính họ.
Ví dụ: khi người dùng gửi tiền bằng Chibi Finance, tiền điện tử của họ đã được gửi tới SushiSwap theo hợp đồng StrategySushiSwap, chứ không phải bởi người dùng cuối trực tiếp. Điều này có nghĩa là ứng dụng Chibi Finance đã được công nhận là người dùng khi cố gắng rút tiền khẩn cấp. Đổi lại, điều này cho phép Chibi rút tiền của người dùng thay cho người dùng.
Tuy nhiên, tiền sẽ vẫn được an toàn miễn là chức năng hoảng loạn chỉ có thể được gọi bởi người dùng cuối.
Thật không may, chức năng hoảng loạn không có yêu cầu này. Thay vào đó, nó chỉ được liệt kê trong hợp đồng Chibi Finance dưới dạng chức năng duy nhất của Chính phủ, nghĩa là quản trị viên có thể gọi nó chứ không phải ai khác. Kẻ tấn công đã dựa vào kẽ hở này để thực hiện cuộc tấn công của mình.
Cuộc tấn công Chibi Finance được thực hiện như thế nào
Theo báo cáo của CertiK, tên người dùng Ethereum Shadowout.eth đã rút 10 Ether (ETH) từ Tornado Cash vào ngày 15 tháng 6. Số tiền này được kết nối với Arbitrum và 0,2 ETH đã được gửi từ người dùng này đến địa chỉ 0x80c1ca8f002744a3b22ac5ba6ffc4dc0deda58e3. Tài khoản thứ hai này sau đó đã tạo một hợp đồng độc hại vào ngày 23 tháng 6 tại địa chỉ 0xb61222189b240be3da072898eda7db58b00fd6ee.
Kẻ tấn công đã gọi chức năng thêm Pool trên hợp đồng độc hại này tám lần vào ngày 23 tháng 6. Vì hợp đồng chưa được xác minh nên mã cho chức năng thêm Pool này không xác định. Tuy nhiên, CertiK suy đoán rằng mỗi giao dịch này có thể đã thêm hợp đồng Chibi Finance vào danh sách trong dữ liệu hợp đồng độc hại cho tổng số tám hợp đồng trong danh sách.
Vào ngày 27 tháng 6, tài khoản triển khai Chibi Finance đã chuyển quyền quản trị của tám hợp đồng Chibi Finance sang hợp đồng độc hại. Nó thực hiện điều này thông qua tám giao dịch riêng biệt, mỗi giao dịch gọi hàm setGov trên một hợp đồng cụ thể.
Sau khi hợp đồng độc hại có được các quyền quản trị này, người tạo ra nó đã gọi chức năng thực thi của nó. Điều này khiến nó gọi là hoảng loạn đối với từng hợp đồng trong số tám hợp đồng, do đó được gọi là Rút tiền khẩn cấp trên các Pool có liên quan trong các ứng dụng DeFi như SushiSwap, Aave và Global Hectare.
Kết quả là tất cả số tiền mà người dùng gửi vào các Pool này thông qua Chibi Finance đã bị kẻ tấn công bòn rút, dẫn đến thiệt hại hơn 1 triệu USD cho các nhà đầu tư.
Làm thế nào để tránh rút thanh khoản (rug pull) theo phong cách Chibi?
Cho rằng cuộc tấn công dựa vào chức năng hoảng loạn cho phép quản trị viên rút hết tiền của người dùng, nên một cách để tránh bị rút thanh khoản (rug pull) kiểu Chibi là không sử dụng các ứng dụng có chức năng này.
Mặt khác, nếu trình tổng hợp không có chức năng hoảng loạn, thì có nguy cơ tiền của người dùng có thể bị kẹt nếu một lỗi hoặc khai thác được phát hiện trong ứng dụng trình tổng hợp. Người dùng có thể cân nhắc những sự đánh đổi này nếu họ quyết định sử dụng các ứng dụng tổng hợp thay vì tương tác trực tiếp với các Pool cơ bản.
Người dùng DeFi cũng có thể cân nhắc rằng mã hợp đồng thông minh có thể cực kỳ phức tạp và hầu hết người dùng có thể không tự xác định được liệu một ứng dụng có lỗ hổng bảo mật hay không. Như CertiK đã tuyên bố trong báo cáo của mình:
Sự cố Chibi Finance cho thấy những rủi ro liên quan đến việc tập trung hóa trong không gian Web3.[...]Đó là một kỳ vọng không thực tế đối với các nhà đầu tư thông thường để phát hiện và hiểu những rủi ro tập trung trong các dự án như Chibi Finance chỉ bằng cách thực hiện nghiên cứu của riêng họ.
Vì lý do này, người dùng có thể muốn test test ứng dụng đã xuất bản trước khi sử dụng ứng dụng đó, CertiK cho biết.
Chibi Finance tuyên bố đã được kiểm toán bởi công ty bảo mật blockchain SolidProof. Nội dung của cuộc test bị cáo buộc không còn nữa, vì dự án GitHub đã bị gỡ xuống và không bao giờ được lưu trữ trên internet. Cointelegraph không thể xác định liệu các rủi ro do chức năng hoảng loạn gây ra có được tiết lộ trong báo cáo kiểm toán hay thậm chí liệu một cuộc kiểm toán có diễn ra hay không.
Cointelegraph đã liên hệ với SolidProof để nhận xét nhưng không nhận được phản hồi khi xuất bản.
Lừa đảo rút thanh khoản (rug pull) hoặc thoát cảnh đã trở thành một vấn đề phổ biến trong không gian DeFi. Vào ngày 1 tháng 6, công ty bảo mật blockchain Beosin đã báo cáo rằng hơn 45 triệu đô la đã bị mất do khai thác thảm vào tháng 5, vượt xa các lần khai thác DeFi thông thường. Vào tháng 4, giao thức Ordinals Finance cũng được cho là chắc chắn với giá 1 triệu đô la Mỹ thông qua chức năng chuyển safuToken.
Theo CoinTelegraph
|
Tags: Tài chính chibi, Rugpull, Lừa đảo, Khai thác, Trọng tài,