CertiK: Phân tích các cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend

Vào ngày 18 tháng 10 năm 2023 19: 48: 59 giờ Bắc Kinh, nhóm cho vay của Hope.money đã bị tấn công dựa trên các khoản vay chớp nhoáng.

Hope.money đã xây dựng một dịch vụ tài chính phi tập trung đầy đủ bao gồm nền tảng cho vay HopeLend, sàn giao dịch phi tập trung HopeSwap, $HOPE stablecoin và $LT mã thông báo quản trị.

Giao thức liên quan đến cuộc tấn công là HopeLend, một nền tảng cho vay phi tập trung cho phép người dùng cung cấp thanh khoản cho giao thức hoặc thế chấp quá mức để kiếm thu nhập.

Bắt đầu và kết thúc sự kiện

Trong quá trình triển khai mã của HopeLend, đã có một lỗ hổng có thể khai thác trong nhóm cho vay, do vấn đề phân chia số nguyên sai khi hủy chứng chỉ tiền gửi, dẫn đến dấu thập phân bị cắt ngắn, đạt được sự phá hủy ít chứng chỉ hơn dự kiến và thu được các mã thông báo giá trị tương tự như mong đợi.

Kẻ tấn công đã khai thác lỗ hổng này để làm trống nhiều nhóm tiền cho vay trên Hope.money.

Nhóm cho vay hEthWbtc đã được triển khai cách đây 73 ngày, nhưng không có tiền trong đó, vì vậy tin tặc đã bơm một lượng lớn tiền vào nhóm cho vay để tăng vọt đáng kể tỷ lệ chiết khấu, do đó nhanh chóng làm trống tất cả các nhóm cho vay khác trong một giao dịch khối.

Kịch tính hơn, hacker bị khai thác đã không nhận được tiền cho việc khai thác và giao dịch tấn công của anh ta đã bị phát hiện bởi kẻ cướp, kẻ bắt chước cuộc tấn công của anh ta và đánh cắp thành công tất cả các khoản tiền thu được từ cuộc tấn công (527 ETH), và cuối cùng 50% số tiền thu được từ cuộc tấn công (263 ETH) đã được bọn cướp sử dụng để hối lộ những người khai thác đã đóng gói khối (tải trọng).

Hacker ban đầu phát hiện ra lỗ hổng đã tạo ra một hợp đồng tấn công trong khối 18377039 và thực hiện cuộc gọi tấn công hợp đồng trong khối 18377042, lúc đó kẻ cướp theo dõi giao dịch trong nhóm bộ nhớ và mô phỏng hợp đồng tấn công của nó, làm đầu vào của hợp đồng giật và khai thác nó trong cùng một khối 18377042 và giao dịch của hacker ban đầu trong khối 18377042 thất bại vì nó được sắp xếp phía sau kẻ giật.

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22020909/vgmwbfe1izd6m7c3.png!webp)

Tiền đi đâu

Một giờ sau khi kẻ cướp nhận được số tiền thu được, tiền được chuyển đến: 0x9a9122Ef3C4B33cAe7902EDFCD5F5a486792Bc3A

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22020909/xs8c5jce3oyl7qj1.png!webp)

Vào ngày 20 tháng 10 lúc 13:30:23, nhóm chính thức bị nghi ngờ đã liên hệ với địa chỉ, cho phép người chạy để lại 26 ETH (lợi nhuận 10%) làm phần thưởng và nhận được phản hồi từ người chạy.

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22020909/2k6prrcrl8b9ynve.png!webp)

Số tiền cuối cùng đã được chuyển đến kho tiền đa chữ ký của GnosisSafe sau một giờ liên lạc.

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22020909/to197jlp4ce8qoq1.png!webp)

Dưới đây chúng tôi sẽ chỉ ra các lỗ hổng thực sự và chi tiết về các tin tặc khai thác.

Thông tin trước

  • Giao thức cho vay của HopeLend triển khai các fork từ Aave, vì vậy logic kinh doanh cốt lõi liên quan đến các lỗ hổng được tham chiếu trong sách trắng của Aave.

0x00 Tiền gửi và cho vay

Aave là một DeFi thuần túy, hoạt động kinh doanh cho vay được thực hiện thông qua các nhóm thanh khoản, người dùng mong muốn nhận được thu nhập từ việc vay khi tiền gửi Aave cung cấp thanh khoản.

Thu nhập cho vay không được phân phối đầy đủ cho người dùng, một phần nhỏ thu nhập lãi sẽ được đưa vào dự phòng rủi ro, phần này chiếm tỷ trọng nhỏ hơn, phần lớn thu nhập cho vay sẽ được phân phối cho người dùng cung cấp thanh khoản.

Khi thực hiện cho vay tiền gửi tại Aave, Aave chuyển đổi số lượng tiền gửi tại các thời điểm khác nhau thành tỷ lệ tiền gửi tại thời điểm ban đầu của nhóm thanh khoản thông qua chiết khấu, do đó, tổng gốc và lãi tương ứng với tài sản cơ bản của mỗi số lượng cổ phiếu có thể được tính trực tiếp với chỉ số số tiền, điều này tạo điều kiện thuận lợi cho việc tính toán và hiểu biết.

Nó có thể được hiểu là một quá trình tương tự như việc mua tiền, giá trị ròng ban đầu của quỹ là 1, người dùng đầu tư 100 nhân dân tệ để nhận được 100 cổ phiếu, giả sử rằng sau một thời gian kiếm được, giá trị ròng trở thành 1,03, tại thời điểm này người dùng lại đầu tư 100 nhân dân tệ, cổ phần thu được là 97 và tổng số cổ phần của người dùng là 197.

Đây thực sự là chiết khấu tài sản theo chỉ số. Lý do cho điều này là số tiền gốc và lãi thực tế của người dùng được nhân với chỉ số hiện tại với số dư. Khi khoản tiền gửi thứ hai, số tiền gốc và lãi chính xác của người dùng phải là 100 * 1,03 + 100 = 203, nếu không được chiết khấu, người dùng thứ hai gửi 100 sau khi số tiền gốc và lãi trở thành ( 100 + 100) * 1,03 = 206, là sai, nếu chiết khấu, tổng gốc và lãi trở thành (100 + 100 / 1,03) * 1,03 = 103 + 100 = 203, 203 Kết quả là chính xác.

Quá trình tấn công

0x25126...... 403907 (hồ bơi hETHWBTC)

0x5a63e...... 844E74 (Hợp đồng tấn công - Rút tiền)

Kẻ tấn công:

1. Cho vay các quỹ cho vay chớp nhoáng ban đầu và cầm cố chúng

Kẻ tấn công đầu tiên vay 2300 WBTC từ Aave Lightning, đặt cược 2000 tiền gửi WBTC cho HopeLend và tiền sẽ được chuyển sang hợp đồng hEthWbtc của HopeLende (0x251 ... 907), và cũng có được 2000 hETHWBTC tương ứng.

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22020909/anso762vnbov1zr2.png!webp)

2. Thao túng tỷ lệ chiết khấu ban đầu (liquidityIndex) với các nhóm cho vay trống

Vay 2000 WBTC từ HopeLend cho một khoản vay chớp nhoáng.

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021102/74cv8ydz0ubnh1dd.png!webp)

Giá trị hiện tại là 1 hETHWBTC = 1 WBTC.

Theo hoạt động bình thường là truy cập ETHWBTC để trao đổi trở lại WBTC, nó sẽ không ảnh hưởng đến tỷ giá hối đoái (chỉ khi tiền lãi thu được sẽ ảnh hưởng đến tỷ giá hối đoái, 1 hETHWBTC sẽ nhận được nhiều WBTC hơn).

Lúc này, hacker bắt đầu thao túng tỷ lệ chiết khấu thông qua hàng loạt thao tác phức tạp:

• Tin tặc trực tiếp chuyển tiền 2000 WBTC sang hợp đồng hEthWbtc của HopeLen (0x 251 ... 907), bước này không phải là trả nợ.

• Tin tặc sau đó rút tiền, phần lớn WBTC (1999.999 ... ), vì vậy bước trước đó yêu cầu quay trở lại WBTC để bổ sung tài sản trong nhóm.

• Cuối cùng, hacker chỉ giữ đơn vị nhỏ nhất (1 e-8) của hEthWbtc, không thể đề cập hoàn toàn ở đây, vì cần phải để lại một chút, như một tính toán của liquidityIndex, nó sẽ dựa trên phép cộng hiện có, nếu nó bị xóa, dẫn đến thanh khoảnIndex trở thành 0, bạn không thể làm cho tỷ lệ trong nhóm mất cân bằng.

• Hủy hầu hết wBTC đã đổi lấy hEthWbtc ở bước trước, thêm wBTC còn lại từ khoản vay flash trước đó và trả lại khoản vay flash đã cho nhóm HopeLend, trả tổng cộng 2001,8 WBTC (bao gồm cả lãi suất 1,8 wBTC).

• Quá trình trên phá hủy hầu hết hEthWbtc, chỉ để lại 1 đơn vị nhỏ nhất (1 e-8) hEthWbtc trong tài khoản hacker, do đó tổng số tiền hETHWBTC bị giảm và có 2001,8 wBTC trong nhóm cho vay, tại thời điểm đó chỉ số thanh khoản đạt mức đáng kinh ngạc 126.000.000. Điều này liên quan đến kiến thức rằng sự quan tâm của người dùng tiền gửi về cơ bản đến từ sự tăng trưởng thanh khoản trong nhóm và nhóm cho vay sẽ tự động điều chỉnh lãi suất vay và tiền gửi theo lãi suất tiền gửi và tỷ lệ sử dụng.

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021101/5iww6yvocq828lnk.png!webp)

Ở đây, khi nhóm nhận được thanh khoản bổ sung từ lãi suất cho vay nhanh (1,8 WBTC), bảy mươi phần trăm (126.000.000) được bao gồm trong liquidityIndex (liquidityIndex), được sử dụng để tính giá trị chiết khấu trên mỗi đơn vị tiền gửi (hEthWbt).

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021101/0y2avv1q0k0d6dvq.png!webp)

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021101/he1rfuj0gcks7icu.png!webp)

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021101/z8wqinijs1xrxj4q.png!webp)

Vì mỏ trống trước khi hack, totalLiquidity chỉ là 1 sau khi trả nợ, số tiền là 126000000 và liquidityIndex ban đầu là 1, dẫn đến kết quả 126000001.

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021225/4obpc8c6fmseyxxt.png!webp)

3. Tiếp tục khuếch đại tỷ lệ chiết khấu

Các tin tặc tiếp tục mượn 2.000 WBTC từ HopeLend cho các khoản vay flash và trả lại thêm 1,8 WBTC mỗi lần, cho phép mỗi LiquidityIndex tích lũy 126.000.000.

Các tin tặc lặp lại quá trình này 60 lần và cuối cùng chỉ số thanh khoản đạt 7.560.000.001 và giá trị chiết khấu của 1 đơn vị hEthWBTC nhỏ nhất do kẻ tấn công nắm giữ có thể đạt 75,6 WBTC (khoảng 2,14 triệu USD).

Điều này cho phép tin tặc thao túng hEthWBTC, làm sai lệch giá trị của nó.

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021225/6c3vhd5dzcqouduz.png!webp)

4. Làm rỗng các nhóm cho vay khác nơi tồn tại tiền để hình thành thu nhập

Những kẻ tấn công sau đó đã đặt cọc 1 đơn vị hEthWBTC nhỏ nhất và cho vay một lượng lớn tài sản từ năm nhóm mã thông báo khác của HopeLond.

Bao gồm:

  • 175.4 - WETH
  • 145, 522.220985 - USDT
  • 123, 406.134999 - USDC
  • 844, 282.284002229528476039 - HY VỌNG
  • 220, 617.821736563540747967 - stHOPE

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021225/xloltizb5ua2puhd.png!webp)

Các mã thông báo này đã được trao đổi cho WBTC và WETH thông qua Uniswap dưới dạng tiền thu được và sau khi khấu trừ các khoản phí khác nhau, hacker cuối cùng đã kiếm được lợi nhuận khoảng 263 WETH (không bao gồm 263,9 WETH đã hối lộ tải trọng).

Tại sao tin tặc có thể vay số tiền lớn từ các nhóm khác:

Khi vay hoặc rút tiền gửi, hợp đồng cho vay sẽ kiểm tra tình trạng tài sản thế chấp của người dùng để đảm bảo khoản vay không vượt quá tài sản thế chấp.

Vì tỷ lệ chiết khấu đã bị tin tặc thao túng và tỷ lệ chiết khấu được tính bằng giá trị tài sản thế chấp trong hệ số thu nhập bình thường hóa, giá trị tài sản thế chấp của một đơn vị hEthWBTC trong tay anh ta cao tới 75,6 WBTC.

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021225/l92lr3astj8pxwg6.png!webp)

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021225/fz7hdciyi6ismgwr.png!webp)

Mỗi khi họ vay tiền từ các nhóm khác, hacker dễ dàng vượt qua xác minh tài sản thế chấp.

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021356/8n7rgjpvl64lytjz.png!webp)

Tại thời điểm này, những kẻ tấn công đã đầu tư tổng cộng 2000+ 1,8* 60 WBTC vào HopeLend để thao túng thanh khoảnIndex, chỉ còn lại 1 đơn vị hEtthWBTC.

5. Khai thác các điểm lỗ hổng nghiêm trọng (lỗi chia số nguyên) để rút tiền mặt

Để loại bỏ wBTC đầu tư trước đó, những kẻ tấn công đã triển khai một hợp đồng tấn công khác: 0x 5 a 63 e... 844 e 74 và gọi phương thức withdrawAllBtc() ở đó

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021356/gxsep176zr1ulz6y.png!webp)

Quá trình lỗ hổng bảo mật như sau:

(1) Khoản tiền gửi đầu tiên 151.20000002 wBTC, theo chỉ số thanh khoản hiện tại (1 đơn vị nhỏ nhất hEthWBTC = 75,6 wBTC), kẻ tấn công nhận được 2 đơn vị hEthWBTC nhỏ nhất.

(2) Lấy ra (rút) 113,4 wBTC, tính ngược lại cổ phiếu hEthWBTC tương ứng của nó và đốt hEthWBTC.

(3) 113,4 wBTC cần phá hủy 1,9999999998 đơn vị hEthWBTC nhỏ nhất, nhưng do độ chính xác của hàm div, chỉ có một đơn vị hEthWBTC nhỏ nhất bị phá hủy, vì vậy nó trở thành một lỗ hổng có thể khai thác và tin tặc vẫn có thể giữ 1 đơn vị hEthWBTC nhỏ nhất.

Lỗ hổng nghiêm trọng

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021356/i8sobsuj4gkdna0o.png!webp)

Phương pháp đốt cháy của hEthWBTC gọi rayDiv phân chia có độ chính xác cao.

! [CertiK: Phân tích cuộc tấn công cho vay trên nền tảng cho vay phi tập trung HopeLend] (https://piccdn.0daily.com/202310/22021356/xw84ns4thoyh5i1g.png!webp)

Ở đây:

a = 113400000000 (WBTC dự định sẽ bị xóa)

b = 7560000001000000000000000009655610336 (tỷ lệ chiết khấu)

Mặc dù (a* 1e27 + b / 2) / b = 1,9999999998, phương pháp div tích hợp của Solidity cắt ngắn và trả về 1, tương đương với 11340000000 / 7560000001 vị trí thập phân bị cắt ngắn sau khi chia.

0x5a63 (Attack Contract - Cash Out) tiếp tục nạp 75.60000001 WBTC chính xác để nhận thêm 1 đơn vị tối thiểu hEthWBTC, do đó tiếp tục giữ 2 đơn vị tối thiểu hEthWBTC.

Trong vòng lặp này, 113.40000000000 wBTC được rút và 75.600000001 wBTC được gửi, mỗi kẻ tấn công có thể nhận được 37,8 wBTC từ không khí.

Sau 58 chu kỳ, những kẻ tấn công đã rút tất cả wBTC đã đầu tư trả trước và trả lại khoản vay flash của Aave một cách suôn sẻ.

Kết luận

Vì nhóm cho vay hEthWBTC không được khởi tạo, kẻ tấn công có thể dễ dàng thao túng liquidityIndex để tăng nó lên mức tối đa và tỷ lệ rút tiền được khuếch đại rất nhiều như một ước số, giúp dễ dàng lấy ra khoản đầu tư trước đó vào một khối do lỗi cắt ngắn của phép chia số nguyên.

Trong một nhóm cho vay hoạt động tốt, không dễ để tăng đáng kể tỷ lệ chiết khấu do lãi suất cho vay tăng nhẹ do thanh khoản hiện có trong nhóm.

Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • Bình luận
  • Chia sẻ
Bình luận
0/400
Không có bình luận
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)