Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya?
Masalah utama dari serangan kali ini terletak pada logika protokol dalam menangani transaksi bernilai kecil.
Judul Asli: 《Analisis Teknis Kerentanan Balancer yang Dicuri $120M》
Sumber Asli: ExVul Security
Pendahuluan
Pada 3 November 2025, protokol Balancer di beberapa blockchain publik seperti Arbitrum dan Ethereum mengalami serangan hacker, menyebabkan kerugian aset sebesar 120 juta dolar AS. Inti serangan berasal dari kerugian presisi dan kerentanan ganda manipulasi nilai invarian.
Infrastruktur Chainlink telah lama mempertahankan standar tertinggi di bidang Web3, sehingga menjadi pilihan alami bagi X Layer yang berkomitmen menyediakan alat tingkat institusi bagi para pengembang.
Masalah kunci dalam serangan ini terletak pada logika protokol dalam menangani transaksi bernilai kecil. Ketika pengguna melakukan pertukaran dengan jumlah kecil, protokol akan memanggil fungsi _upscaleArray, yang menggunakan mulDown untuk pembulatan ke bawah. Begitu saldo dalam transaksi dan jumlah input berada pada batas pembulatan tertentu (misalnya di kisaran 8-9 wei), akan terjadi kesalahan presisi relatif yang signifikan.
Kesalahan presisi ini diteruskan ke proses perhitungan nilai invarian D dalam protokol, menyebabkan nilai D menyusut secara tidak normal. Perubahan nilai D secara langsung menurunkan harga BPT (Balancer Pool Token) dalam protokol Balancer. Hacker memanfaatkan harga BPT yang ditekan ini, melakukan arbitrase melalui jalur transaksi yang telah dirancang sebelumnya, dan akhirnya menyebabkan kerugian aset yang sangat besar.
Pemanfaatan kerentanan Tx:
Transfer aset Tx:
Analisis Teknis
Pintu Masuk Serangan
Pintu masuk serangan adalah kontrak Balancer: Vault, dengan fungsi masuk batchSwap, yang secara internal memanggil onSwap untuk pertukaran token.

Dari parameter dan batasan fungsi, dapat diperoleh beberapa informasi:
1. Penyerang harus memanggil fungsi ini melalui Vault, tidak dapat memanggilnya secara langsung.
2. Fungsi secara internal akan memanggil _scalingFactors() untuk mendapatkan faktor skala dan melakukan operasi penskalaan.
3. Operasi penskalaan terpusat di _swapGivenIn atau _swapGivenOut.
Analisis Pola Serangan
Mekanisme Perhitungan Harga BPT
Dalam model pool stabil Balancer, harga BPT adalah referensi penting yang menentukan berapa banyak BPT yang didapat pengguna dan berapa banyak aset yang didapat setiap BPT.

Dalam perhitungan pertukaran pool:

Bagian yang berperan sebagai patokan harga BPT adalah nilai invarian D, sehingga untuk memanipulasi harga BPT harus memanipulasi D. Berikut analisis proses perhitungan D:

Pada kode di atas, proses perhitungan D bergantung pada array balances yang telah diskalakan. Artinya, harus ada operasi yang mengubah presisi balances ini, sehingga menyebabkan kesalahan perhitungan D.
Akar Kerugian Presisi

Operasi penskalaan:

Seperti terlihat di atas, saat menggunakan _upscaleArray, jika saldo sangat kecil (misalnya 8-9 wei), pembulatan ke bawah oleh mulDown akan menyebabkan kerugian presisi yang signifikan.
Penjelasan Rinci Proses Serangan
Tahap 1: Menyesuaikan ke Batas Pembulatan

Tahap 2: Memicu Kerugian Presisi (Kerentanan Inti)

Tahap 3: Memanfaatkan Harga BPT yang Ditekan untuk Mendapatkan Keuntungan

Seperti terlihat di atas, penyerang menggunakan Batch Swap untuk melakukan beberapa pertukaran dalam satu transaksi:
1. Pertukaran pertama: BPT → cbETH (menyesuaikan saldo)
2. Pertukaran kedua: wstETH (8) → cbETH (memicu kerugian presisi)
3. Pertukaran ketiga: aset dasar → BPT (mengambil keuntungan)
Semua pertukaran ini terjadi dalam satu transaksi batch swap, berbagi status saldo yang sama, namun setiap pertukaran akan memanggil _upscaleArray untuk mengubah array balances.
Ketiadaan Mekanisme Callback
Proses utama dimulai oleh Vault, bagaimana hal ini menyebabkan akumulasi kerugian presisi? Jawabannya ada pada mekanisme transmisi array balances.

Menganalisis kode di atas, meskipun setiap kali memanggil onSwap Vault akan membuat array currentBalances baru, namun dalam Batch Swap:
1. Setelah pertukaran pertama, saldo diperbarui (namun karena kerugian presisi, nilai yang diperbarui mungkin tidak akurat)
2. Pertukaran kedua dihitung berdasarkan hasil pertukaran pertama
3. Kerugian presisi terakumulasi, akhirnya menyebabkan nilai invarian D menyusut secara signifikan
Masalah Kunci:

Kesimpulan
Serangan terhadap Balancer kali ini dapat dirangkum menjadi beberapa alasan berikut:
1. Fungsi penskalaan menggunakan pembulatan ke bawah: _upscaleArray menggunakan mulDown untuk penskalaan, ketika saldo sangat kecil (misalnya 8-9 wei), akan terjadi kerugian presisi relatif yang signifikan.
2. Perhitungan nilai invarian sangat sensitif terhadap presisi: Perhitungan nilai invarian D bergantung pada array balances yang telah diskalakan, kerugian presisi akan langsung diteruskan ke perhitungan D, menyebabkan D menyusut.
3. Tidak ada verifikasi perubahan nilai invarian: Dalam proses pertukaran, tidak ada verifikasi apakah perubahan nilai invarian D berada dalam rentang yang wajar, sehingga penyerang dapat berulang kali memanfaatkan kerugian presisi untuk menekan harga BPT.
4. Akumulasi kerugian presisi dalam Batch Swap: Dalam satu batch swap, kerugian presisi dari beberapa pertukaran akan terakumulasi, akhirnya membesar menjadi kerugian finansial yang sangat besar.
Dua masalah ini, yaitu kerugian presisi + kurangnya verifikasi, ditambah dengan desain cermat penyerang terhadap kondisi batas, menyebabkan kerugian kali ini.
Disclaimer: Konten pada artikel ini hanya merefleksikan opini penulis dan tidak mewakili platform ini dengan kapasitas apa pun. Artikel ini tidak dimaksudkan sebagai referensi untuk membuat keputusan investasi.
Kamu mungkin juga menyukai
Jaksa AS menuntut hukuman penjara lima tahun untuk pendiri Samourai Wallet
Jaksa penuntut Amerika Serikat menuntut hukuman penjara selama 60 bulan untuk kedua pendiri Samourai Wallet, Keonne Rodriguez dan William Lonergan Hill, karena menjalankan bisnis pengiriman uang tanpa izin. Jaksa menuduh bahwa Rodriguez dan Lonergan mengoperasikan layanan crypto mixing yang membantu mencuci setidaknya $237 juta hasil kejahatan selama hampir satu dekade. Rodriguez dijadwalkan akan dijatuhi hukuman pada 6 November, sementara hukuman untuk Hill dijadwalkan pada 7 November.

Harga Bitcoin ditargetkan $92K saat pembeli baru memasuki mode 'kapitulasi'
Berachain mendistribusikan hard fork binary untuk mengatasi eksploitasi Balancer V2
Berachain Foundation mengumumkan bahwa mereka telah mendistribusikan binary hard fork darurat kepada para validator. Para validator menghentikan jaringan pada hari Senin setelah eksploitasi di Balancer V2 mengungkapkan kerentanan pada bursa desentralisasi asli Berachain.

Lebih dari $1,3 miliar posisi crypto dilikuidasi saat bitcoin turun di bawah $104.000 dan mengguncang pasar yang 'rapuh'
Bitcoin telah turun di bawah $104.000, memicu likuidasi setidaknya $1,37 billions, terutama pada posisi long, menurut data CoinGlass. Analis menunjuk pada ketakutan yang masih tersisa dari penurunan tajam 10 Oktober, arus keluar dari ETF, penutupan pemerintah AS, dan berkurangnya likuiditas global sebagai kemungkinan pemicu penurunan ini.

