Analisis Teknis: Peretasan Balancer sebesar $120M, Apa Kerentanannya?
Masalah utama dari serangan ini terletak pada penanganan transaksi bernilai kecil oleh protokol tersebut.
Original Article Title: " Analisis Teknis Kerentanan Peretasan Balancer $120M"
Original Source: ExVul Security
Kata Pengantar
Pada 3 November 2025, protokol Balancer diserang di beberapa chain termasuk Arbitrum dan Ethereum, yang mengakibatkan kerugian aset sebesar $120 juta. Serangan ini terutama disebabkan oleh kerentanan ganda yang melibatkan kehilangan presisi dan manipulasi Invariant.
Infrastruktur Chainlink telah lama mempertahankan standar tertinggi di ranah Web3, menjadikannya pilihan alami untuk X Layer, yang didedikasikan untuk menyediakan alat tingkat institusional bagi para pengembang.
Masalah utama dalam serangan ini terletak pada logika protokol dalam menangani transaksi kecil. Ketika pengguna melakukan pertukaran dengan jumlah kecil, protokol memanggil fungsi _upscaleArray, yang menggunakan mulDown untuk pembulatan ke bawah. Ketika saldo dalam transaksi dan jumlah input keduanya mencapai batas pembulatan tertentu (misalnya, kisaran 8-9 wei), terjadi kesalahan presisi relatif yang signifikan.
Kesalahan presisi ini diteruskan ke perhitungan nilai Invariant D protokol, menyebabkan pengurangan nilai D yang tidak normal. Fluktuasi nilai D secara langsung menurunkan harga Balancer Pool Token (BPT) dalam protokol Balancer. Peretas memanfaatkan harga BPT yang ditekan ini melalui jalur perdagangan yang telah direncanakan untuk melakukan arbitrase, yang pada akhirnya menyebabkan kerugian aset besar-besaran.
Transaksi yang Dieksploitasi:
https://etherscan.io/tx/0x6ed07db1a9fe5c0794d44cd36081d6a6df103fab868cdd75d581e3bd23bc9742
Transaksi Transfer Aset:
https://etherscan.io/tx/0xd155207261712c35fa3d472ed1e51bfcd816e616dd4f517fa5959836f5b48569
Analisis Teknis
Vektor Serangan
Titik masuk serangan adalah kontrak Balancer: Vault, dengan fungsi masuk yang sesuai adalah fungsi batchSwap, yang secara internal memanggil onSwap untuk pertukaran token.

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

Dalam perhitungan pertukaran pool:

Bagian yang berfungsi sebagai jangkar Harga BPT adalah nilai D yang tidak dapat diubah, yang berarti mengendalikan Harga BPT memerlukan pengendalian D. Mari kita analisis lebih lanjut proses perhitungan D:

Pada kode di atas, proses perhitungan D bergantung pada array saldo yang telah diskalakan. Ini berarti diperlukan operasi untuk mengubah presisi saldo-saldo ini, yang menyebabkan perhitungan D menjadi salah.
Akar Masalah Kehilangan Presisi

Operasi Penskalaan:

Seperti yang ditunjukkan di atas, saat melewati _upscaleArray, jika saldo sangat kecil (misalnya, 8-9 wei), pembulatan ke bawah pada mulDown akan menyebabkan kehilangan presisi yang signifikan.
Rincian Proses Serangan
Fase 1: Penyesuaian ke Batas Pembulatan

Fase 2: Memicu Kehilangan Presisi (Kerentanan Inti)

Fase 3: Mengeksploitasi Harga BPT yang Tertekan untuk Keuntungan

Di atas, penyerang menggunakan Batch Swap untuk melakukan beberapa pertukaran dalam satu transaksi:
1. Pertukaran Pertama: BPT → cbETH (penyesuaian saldo)
2. Pertukaran Kedua: wstETH (8) → cbETH (memicu kehilangan presisi)
3. Pertukaran Ketiga: Aset Dasar → BPT (pengambilan keuntungan)
Semua pertukaran ini terjadi dalam transaksi batch swap yang sama, berbagi status saldo yang sama, namun setiap pertukaran memanggil _upscaleArray untuk memodifikasi array saldo.
Ketiadaan Mekanisme Callback
Proses utama dimulai oleh Vault. Bagaimana ini menyebabkan akumulasi kehilangan presisi? Jawabannya terletak pada mekanisme pengoperan array saldo.

Melihat kode di atas, meskipun Vault membuat array currentBalances baru setiap kali onSwap dipanggil, dalam Batch Swap:
1. Setelah swap pertama, saldo diperbarui (tetapi karena kehilangan presisi, nilai yang diperbarui mungkin tidak akurat)
2. Swap kedua melanjutkan perhitungan berdasarkan hasil swap pertama
3. Kehilangan presisi terakumulasi, akhirnya menyebabkan nilai invariant D menurun secara signifikan
Masalah Utama:

Ringkasan
Serangan pada Balancer dapat dirangkum karena alasan berikut:
1. Fungsi Penskalaan Menggunakan Pembulatan ke Bawah: _upscaleArray menggunakan mulDown untuk penskalaan, yang menyebabkan kehilangan presisi relatif yang signifikan ketika saldo sangat kecil (misalnya, 8-9 wei).
2. Perhitungan Nilai Invariant Sangat Sensitif terhadap Presisi: Perhitungan nilai invariant D bergantung pada array saldo yang telah diskalakan, dan kehilangan presisi secara langsung mempengaruhi perhitungan D, menyebabkan D menurun.
3. Tidak Ada Validasi Perubahan Nilai Invariant: Selama proses swap, tidak ada validasi untuk memastikan bahwa perubahan nilai invariant D berada dalam rentang yang wajar, sehingga penyerang dapat berulang kali mengeksploitasi kehilangan presisi untuk menekan harga BPT.
4. Akumulasi Kehilangan Presisi dalam Batch Swap: Dalam batch swap yang sama, kehilangan presisi dari beberapa swap terakumulasi dan akhirnya menyebabkan kerugian finansial yang signifikan.
Kedua masalah ini—kehilangan presisi dan kurangnya validasi—dikombinasikan dengan desain kondisi batas yang cermat oleh penyerang, menyebabkan kerugian 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
Basic Attention Token (BAT) Akan Menguat? Pola Bullish yang Muncul Ini Mengindikasikan Ya!

Crypto Tertinggal Dibandingkan Kelas Aset Lain Meski Kondisi Makro Mendukung

LSEG Menangkan GLEIF Global vLEI Hackathon untuk Memajukan Identitas Digital di Crypto

Berkas Strategi untuk IPO Saham Abadi Berdenominasi Euro untuk Meningkatkan Kepemilikan Bitcoin

