Analisis awal insiden serangan Balancer V2

Pada 3 November, protokol Balancer V2 dan proyek fork-nya diserang di beberapa rantai, mengakibatkan kerugian serius lebih dari $120M. BlockSec memberikan peringatan awal [1] dan memberikan kesimpulan analisis awal [2]. Ini adalah kejadian serangan yang sangat kompleks. Analisis awal kami menunjukkan bahwa penyebab utama adalah manipulasi variabel tetap (invariant) oleh penyerang, yang mengakibatkan distorsi perhitungan harga BPT (Balancer Pool Token ) – yaitu token LP dari pool – yang memungkinkannya untuk mendapatkan keuntungan melalui satu operasi batchSwap di suatu kolam stabil (stable pool).

Pengetahuan Latar Belakang

1. Skala (scaling) dan pembulatan (rounding)

Untuk menyamakan jumlah desimal dari berbagai token, kontrak Balancer akan:

  • upscale:memperbesar saldo dan jumlah ke presisi internal yang seragam sebelum melakukan perhitungan;
  • downscale:Mengembalikan hasil ke presisi asli dan melakukan pembulatan yang terarah (misalnya, sisi input biasanya membulatkan ke atas untuk memastikan kolam tidak kurang; jalur output sering kali memiliki pemotongan ke bawah).

Kesimpulan: Dalam transaksi yang sama, arah pembulatan yang tidak simetris pada tahap yang berbeda dapat menghasilkan penyimpangan kecil sistematis ketika dieksekusi berulang kali dalam langkah yang sangat kecil.

2. D dan harga BPT

Serangan ini mempengaruhi protokol Composable Stable Pool Balancer V2 [3] serta protokol fork. Stable Pool digunakan untuk aset yang diharapkan dapat mempertahankan rasio pertukaran mendekati 1:1 (atau melakukan pertukaran pada kurs yang diketahui), memungkinkan pertukaran besar dilakukan tanpa menyebabkan guncangan harga yang signifikan, sehingga secara signifikan meningkatkan efisiensi penggunaan dana antara aset yang serupa atau terkait.

  • Pool ini menggunakan Stable Math (model StableSwap berbasis Curve), invariant D mewakili “nilai total virtual” dari kolam.
  • BPT (Pool Token LP ) harga mendekati:

Dari rumus di atas, dapat dilihat bahwa jika D dapat dibuat lebih kecil di buku (bahkan jika dana sebenarnya tidak hilang), maka harga BPT dapat menjadi lebih murah. BTP mewakili bagian dari Pool, yang digunakan untuk menghitung berapa banyak Reserve di Pool yang dapat diperoleh saat menarik likuiditas, jadi jika penyerang dapat memperoleh lebih banyak BPT, akhirnya mereka dapat mendapatkan keuntungan saat menarik likuiditas.

Analisis Serangan

Sebagai contoh dari transaksi serangan di Arbitrum, operasi batchSwap dapat dibagi menjadi tiga tahap:

Tahap pertama: Penyerang menukar BPT menjadi aset dasar untuk secara akurat menyesuaikan saldo salah satu token (cbETH) ke titik kritis batas pembulatan (jumlah = 9). Langkah ini menciptakan kondisi untuk kehilangan presisi tahap berikutnya.

Tahap kedua: Penyerang menggunakan jumlah yang dirancang dengan cermat (= 8) untuk bertukar antara aset dasar lain (wstETH) dan cbETH. Karena jumlah token yang diskalakan dibulatkan ke bawah, Δx yang dihitung sedikit lebih kecil (dari 8.918 menjadi 8), yang mengakibatkan Δy tertekan dan membuat invariant D (dari model StableSwap Curve) menjadi lebih kecil. Karena harga BPT = D / totalSupply, harga BPT ditekan secara artifisial.

Tahap ketiga: Penyerang akan menukarkan aset dasar kembali ke BPT, sambil menyeimbangkan kolam yang dipulihkan, memanfaatkan harga BPT yang tertekan untuk mendapatkan keuntungan – memperoleh lebih banyak Token BPT.

Akhirnya, penyerang memanfaatkan transaksi keuntungan lainnya untuk menarik likuiditas, sehingga dapat memanfaatkan BPT yang diperoleh lebih banyak untuk mendapatkan aset dasar lainnya di Pool (cbETH dan wstETH) untuk meraih keuntungan.

Serangan transaksi:

Perdagangan menguntungkan:

Referensi:

[1]

[2]

[3]

BPT-0.44%
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Posting ulang
  • Bagikan
Komentar
0/400
Tidak ada komentar
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)