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
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.

