BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%
BNB
$710
3.05%
lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
Trang chủ
AI AI
Tin nhanh
Bài viết
Sự kiện
BlockBeats Pro
Thêm
Thông tin tài chính
Chuyên đề
Hệ sinh thái chuỗi khối
Mục nhập
Podcast
Data
OPRR
Partnered With:

Phân tích sự cố hack Rari

Đọc bài viết này mất 19 phút
Rari Capital mất gần 15 triệu USD do vi phạm quá trình tích hợp với Alpha Finance.
Tiêu đề gốc: "Vui vẻ làm tổng hợp, nhưng bất lực khi bị tấn công - Phân tích sự cố bị hack Rari"
Nguồn gốc: Công nghệ sương mù chậm


图片


Vào ngày 8 tháng 5 năm 2021, theo Lianwen, giao thức tổng hợp doanh thu Ethereum Rari Capital đã gặp phải một lỗ hổng do tích hợp với Alpha Finance, dẫn đến khoản lỗ gần 15 triệu USD. Sau đó, Rari Capital chính thức công bố báo cáo phân tích tai nạn phân tích nguyên nhân chính dẫn đến vụ tai nạn. Dựa trên phân tích chính thức và phân tích chuyên sâu về vụ việc của nhóm bảo mật SlowMist, nhóm bảo mật SlowMist diễn giải thêm nguyên nhân của sự cố an toàn này.


Phân tích chi tiết cuộc tấn công


Cuộc tấn công này xảy ra trong hợp đồng RariManger của Rari Capital. Toàn bộ quá trình là kẻ tấn công trước tiên đã vay một số tiền khổng lồ từ dYdX thông qua các khoản vay flash, sau đó tiếp tục gọi điện nhiều lần chức năng  gửi  và  rút  trong hợp đồng RariManger để hoàn thành lợi nhuận. Như được hiển thị bên dưới:


图片


Vậy làm thế nào để người dùng kiếm được lợi nhuận thông qua hai thao tác gửi và rút ? Chúng ta cần phân tích hàm tương ứng:


图片

图片


Phần trên là một phần logic của hàm deposit . Đầu tiên, chính hàm deposit sẽ gọi hàm _depositTo nội bộ , sau đó gọi lại hàm getFundBalance để lấy số dư của hợp đồng. Hàm getFundBalance cuối cùng sẽ gọi hàm getBalance của hợp đồng Bộ điều khiển Rari để lấy số dư. Cuối cùng, số dư có được thông qua hàm getBalance của thư viện AlphaPoolController trong hợp đồng Rari Controller. Như được hiển thị bên dưới:


图片


Quy trình này hơi phức tạp và sơ đồ hiển thị như sau:


图片


Không khó để nhận thấy từ phân tích trên rằng hợp đồng Rari cuối cùng sử dụng hàm TotalETH của hợp đồng ibETH của dự án Alpha Finance để đạt được số dư của hợp đồng. Mục đích là để tính toán số dư dựa trên tỷ lệ giữa tổng ETH và tổng cung. Số dư ETH thực của hợp đồng Rari. Hàm gửi tính toán số lượng REPT sẽ được phát hành cho người dùng dựa trên số lượng và tỷ lệ ETH mà người dùng gửi và công thức của hàm rút cũng tương tự.Cũng cần phải lấy số dư ETH của hợp đồng thông qua hàm getBalance và tính tỷ lệ, sau đó theo người dùng Số dư của mã thông báo REPT và tỷ lệ được tính bằng số ETH cần được trả lại cho người dùng. Nhưng vấn đề nằm ở công thức lấy số dư ETH này.


Theo mô tả chính thức, giá trị thu được từ hàm TotalETH thu được từ hợp đồng ibETH có thể bị người dùng thao túng. Sau đây là văn bản gốc chính thức:


图片


Theo mô tả chính thức, người dùng có thể thao túng giá trị được trả về bởi hàm TotalETH thông qua hàm công việc của hợp đồng ibETH, khiến toàn bộ công thức tính giá trị của Rari bị sụp đổ. Chúng tôi phân tích chức năng công việc và chức năng tổng ETH của ibETH tương ứng:


tổng hàm ETH:


图片


chức năng làm việc:


图片


Trên đây là cách triển khai một phần hàm TotalETH và hàm công việc trong hợp đồng ibETH. Không khó để nhận ra rằng hàm TotalETH thực sự thu được tổng số ETH trong hợp đồng. Bản thân hàm công việc là một hàm phải trả, có nghĩa là người dùng có thể kiểm soát số lượng ETH trong hợp đồng ibETH thông qua hàm công việc để thay đổi giá trị được trả về bởi tổng ETH. Tệ hơn nữa, chức năng công việc còn hỗ trợ gọi các hợp đồng tùy ý khác. Thế thì toàn bộ ý tưởng sẽ rất rõ ràng.


Quá trình tấn công


1. Thực hiện một khoản vay nhanh từ dYdX và cho vay một lượng lớn ETH;

2. Sử dụng một phần ETH để nạp vào hợp đồng Rari Capital. Tại thời điểm này, tỷ lệ thu được từ ibETH vẫn ở mức bình thường;

3. Sử dụng số ETH còn lại để nạp vào hợp đồng ibETH và gọi chức năng hoạt động của hợp đồng ibETH, để chuẩn bị cho việc đẩy giá trị trả về của tổng số ETH của hợp đồng ibETH lên tiếp theo;

4. Đồng thời bắt đầu rút tiền khỏi hợp đồng Rari Capital trong chức năng làm việc, vì bước trước đó đã đẩy tổng giá trị ETH lên, nhưng giá trị TotalETH()/totalSupply() được tính toán sẽ được kéo lên tương ứng với số tiền nạp lại, cho phép kẻ tấn công lấy được nhiều ETH hơn từ Rari Capital bằng cách sử dụng cùng một lượng REPT.


Tóm tắt


Sau phân tích này, nguyên nhân chính là do giao thức không tương thích, kẻ tấn công đã tấn công Rari Capital thông qua flash loan và re-entry, gây ra tổn thất lớn. Nhóm bảo mật SlowMist khuyến nghị rằng khi DeFi dần trở nên phức tạp hơn, mỗi dự án DeFi cần đảm bảo khả năng tương thích giữa các giao thức khi tương tác giữa các giao thức để tránh tổn thất do vấn đề tương thích giao thức gây ra.


[Liên kết tham khảo]

Phân tích chính thức của Rari Capital:
https://medium.com/rari-capital/5-8-2021-rari-ethereum-pool-post-mortem-60aab6a6f8f9

Giao dịch tấn công (một trong số đó):

https://etherscan.io/tx/0x171072422efb5cd461546bfe986017d9b5aa427ff1c07ebe8acc064b13a7b7be


Liên kết gốc


Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:

Nhóm Telegram đăng ký: https://t.me/theblockbeats

Nhóm Telegram thảo luận: https://t.me/BlockBeats_App

Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia

举报 Báo lỗi/Báo cáo
Chọn thư viện
Thêm mới thư viện
Hủy
Hoàn thành
Thêm mới thư viện
Chỉ mình tôi có thể nhìn thấy
Công khai
Lưu
Báo lỗi/Báo cáo
Gửi