Tin nóng ⇢

Phân tích cuộc tấn công vào Rikkei Finance khiến tổn thất 2.671 BNB

Rikket Finance sử dụng Oracle SimplePrice trong Cointroller để tính toán giá cả. Tuy nhiên, hàm `setOracleData ()` không bị kiểm soát, có nghĩa là ai cũng đều có thể sử dụng hàm này. Và kẻ tấn công thay thế oracle ban đầu bằng oracle (độc hại) của riêng mình, sau đó tăng giá của rToken từ 4162475386800000000000 lên 4168811479300000000000000.

Vào ngày 15/04/2022 nhóm audit CertiK đã phát hiện Rikkei Finance bị tấn công, dẫn đến thiệt hại khoảng 2.671 BNB.

Do việc truy cập vào hàm `setOracleData` không bị kiểm soát, nên kẻ tấn công đã lợi dụng sơ hở này để đổi cơ sở dữ liệu Oracle thành một Oracle độc hại và được phép trích xuất USDC, BTCB, DAI, USDT, BUSD và BNB ra khỏi hợp đồng. Những kẻ tấn công sau đó đã đổi các token trên sang BNB và chuyển tất cả số BNB này qua Tornado.cash.

Các bước tấn công

1. Hacker đã gửi 0,0001 BNB tới hợp đồng rBNB để mint 4995533044307111 rBNB.

2. Hacker đã đổi oracle ban đầu thành một oracle độc hại thông qua hàm công khai `setOracleData()`.

3. Khi oracle bị thay thế, giá của các rTokens sẽ bị Oracle thao túng.

4. Hacker đã vay 346.199 USDC ở mức giá thao túng.

5. Hacker đã đổi USDC có được ở bước trên sang BNB và gửi BNB đến hợp đồng tấn công.

6. Hacker lặp lại bước 4 và 5, rút ​​BTCB, DAI, USDT và BUSD.

7. Hacker sử dụng hàm `setOracleData ()` để thay đổi oracle một lần nữa đồng thời khôi phục trạng thái của oracle.

Phân tích lỗ hổng hợp đồng

  • Simple Price Oracle:

https://bscscan.com/address/0xd55f01b4b51b7f48912cd8ca3cdd8070a1a9dba5#code

  • Cointroller:

https://bscscan.com/address/0x00aa3a4cf3f7528b2465e39af420bb3fb1474b7b#code

  • Địa chỉ tài sản: Rtoke

0x157822ac5fa0efe98daa4b0a55450f4a182c10ca

  • Những Oracle mới (có vấn đề):

0xa36f6f78b2170a29359c74cefcb8751e452116f9

  • Giá gốc: 416247538680000000000
  • Giá cập nhật: 4168811479300000000000000000000000

Rikket Finance sử dụng Oracle SimplePrice trong Cointroller để tính toán giá cả. Tuy nhiên, hàm `setOracleData ()` không bị kiểm soát, có nghĩa là ai cũng đều có thể sử dụng hàm này. Và kẻ tấn công thay thế oracle ban đầu bằng oracle (độc hại) của riêng mình, sau đó tăng giá của rToken từ 4162475386800000000000 lên 4168811479300000000000000.

Tài sản đã đi đâu

Kẻ tấn công đã thu 2.671 BNB (trị giá khoảng 1,1 triệu đô) trong 2 giao dịch và chuyển tới Tonardo Cash để tiêu thụ.

Những chi tiết khác

  • Giao dịch về lỗ hổng bảo mật:

https://bscscan.com/tx/0x4e06760884fd7bfdc076e25258ccef9b043401bc95f5aa1b8f4ff2780fa45d44

https://bscscan.com/tx/0x93a9b022df260f1953420cd3e18789e7d1e095459e36fe2eb534918ed1687492

  • Địa chỉ của kẻ tấn công:

0x803e0930357ba577dc414b552402f71656c093ab

  • Hợp đồng của kẻ tấn công:

0x9aE92CB9a3cA241D76641D73B57c78F1bCF0B209

0xe6df12a9f33605f2271d2a2ddc92e509e54e6b5f

  • Oracle độc ​​hại:

https://bscscan.com/address/0x99423d4dfce26c7228238aa17982fd7719fb6d7f

https://bscscan.com/address/0xa36f6f78b2170a29359c74cefcb8751e452116f9

  • Địa chỉ Oracle bị tấn công:

https://bscscan.com/address/0xd55f01b4b51b7f48912cd8ca3cdd8070a1a9dba5#code

Lưu ý

Sự cố có thể được tìm thấy thông qua các rủi ro liên quan đến kiểm toán an ninh. Đội ngũ kỹ thuật của CertiK nhắc nhở mọi người rằng không nên bỏ qua bước hạn chế quyền truy cập các hàm.

Có thể bạn quan tâm

Mục lục