Phân tích sơ bộ sự kiện tấn công Balancer V2

Vào ngày 3 tháng 11, giao thức Balancer V2 và các dự án fork của nó đã bị tấn công trên nhiều chuỗi, dẫn đến thiệt hại nghiêm trọng hơn $120M. BlockSec đã cảnh báo ngay lập tức [1] và đưa ra kết luận phân tích ban đầu [2]. Đây là một sự kiện tấn công rất phức tạp. Phân tích ban đầu của chúng tôi cho thấy nguyên nhân gốc rễ là do kẻ tấn công đã thao tác với các biến không đổi (invariant), từ đó bóp méo việc tính toán giá của BPT (Balancer Pool Token ) – cũng chính là LP token của pool – cho phép họ thu lợi nhuận từ một thao tác batchSwap trong một pool ổn định (stable pool).

Kiến thức nền

1. Thu nhỏ (scaling) và làm tròn (rounding)

Để thống nhất số chữ số thập phân của các mã thông báo khác nhau, hợp đồng Balancer sẽ:

  • upscale:phóng to số dư và số lượng lên độ chính xác nội bộ thống nhất trước khi tính toán;
  • downscale:Giảm kết quả về độ chính xác gốc và thực hiện làm tròn theo hướng có định hướng (ví dụ, đầu vào thường làm tròn lên để đảm bảo không giảm bớt quỹ; đường xuất thường có cắt cụt xuống).

Kết luận: Trong cùng một giao dịch, hướng làm tròn khác nhau ở các giai đoạn khác nhau không đối xứng, khi thực hiện lặp đi lặp lại trong bước rất nhỏ, sẽ tạo ra sai lệch vi mô hệ thống.

2. D và giá BPT

Những gì bị ảnh hưởng bởi cuộc tấn công lần này là Composable Stable Pool [3] của giao thức Balancer V2 và giao thức fork. Stable Pool được sử dụng cho những tài sản dự kiến có thể duy trì tỷ lệ trao đổi gần 1:1 (hoặc trao đổi với tỷ giá đã biết), cho phép thực hiện các giao dịch lớn mà không gây ra cú sốc giá đáng kể, từ đó nâng cao hiệu quả sử dụng vốn giữa các tài sản tương tự hoặc liên quan.

  • Pool này sử dụng Stable Math (mô hình StableSwap dựa trên Curve), hằng số D đại diện cho “giá trị tổng ảo” của pool.
  • BPT (Pool của Token LP) giá gần như là:

Từ công thức trên có thể thấy rằng nếu có thể làm cho D nhỏ hơn trên sổ sách (dù cho vốn thực tế không bị mất), thì giá BPT có thể rẻ hơn. BTP đại diện cho tỷ lệ phần trăm của Pool, được sử dụng để tính toán số lượng Reserve trong Pool mà có thể nhận được khi rút thanh khoản, do đó nếu kẻ tấn công có thể nhận được nhiều BPT hơn, cuối cùng khi rút thanh khoản sẽ có được lợi nhuận.

Phân tích tấn công

Lấy một giao dịch tấn công trên Arbitrum làm ví dụ, thao tác batchSwap có thể được chia thành ba giai đoạn:

Giai đoạn đầu tiên: Kẻ tấn công sẽ đổi BPT lấy tài sản cơ sở, nhằm điều chỉnh chính xác số dư của một loại token (cbETH) đến ngưỡng làm tròn (số lượng = 9). Bước này tạo điều kiện cho việc mất độ chính xác (precision loss) ở giai đoạn tiếp theo.

Giai đoạn hai: Kẻ tấn công sử dụng số lượng được xây dựng cẩn thận (= 8) để trao đổi giữa một loại tài sản cơ sở khác (wstETH) và cbETH. Do việc làm tròn xuống khi quy đổi số lượng token, Δx tính được hơi nhỏ (từ 8.918 biến thành 8), dẫn đến Δy bị đánh giá thấp và làm cho bất biến D (nguồn từ mô hình StableSwap của Curve) trở nên nhỏ hơn. Do giá BPT = D / totalSupply, giá BPT bị ép thấp.

Giai đoạn ba: Kẻ tấn công sẽ đổi ngược tài sản cơ bản trở lại BPT, đồng thời cân bằng trong hồ phục hồi, kiếm lợi từ giá BPT bị đè thấp – nhận được nhiều Token BPT hơn.

Cuối cùng, kẻ tấn công đã sử dụng một giao dịch có lợi khác để rút thanh khoản, từ đó tận dụng BPT đã thu được để kiếm lợi từ các tài sản cơ bản khác trong Pool là (cbETH và wstETH).

Tấn công giao dịch:

Giao dịch có lợi:

Tham khảo:

[1]

[2]

[3]

BPT-6.64%
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
  • Đăng lại
  • Retweed
Bình luận
0/400
Không có bình luận
  • Gate Fun hotXem thêm
  • Vốn hóa:$4.12KNgười nắm giữ:1
    0.00%
  • Vốn hóa:$4.12KNgười nắm giữ:1
    0.00%
  • Vốn hóa:$4.12KNgười nắm giữ:1
    0.00%
  • Vốn hóa:$4.12KNgười nắm giữ:1
    0.00%
  • Vốn hóa:$4.12KNgười nắm giữ:1
    0.00%
  • Ghim
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)