Bitget App
Trade smarter
Buka
BerandaDaftar
Bitget>
Berita>
Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya?

Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya?

BlockBeats2025/11/04 06:24
Oleh: BlockBeats
ARB+5.21%D+1.94%BAL+1.97%
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.


Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya? image 0


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.


Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya? image 1


Dalam perhitungan pertukaran pool:


Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya? image 2


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


Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya? image 3


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


Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya? image 4


Operasi penskalaan:


Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya? image 5


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


Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya? image 6


Tahap 2: Memicu Kerugian Presisi (Kerentanan Inti)


Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya? image 7


Tahap 3: Memanfaatkan Harga BPT yang Ditekan untuk Mendapatkan Keuntungan


Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya? image 8


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.


Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya? image 9


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:


Analisis teknis: Balancer diretas sebesar 120 juta dolar, di mana letak celah keamanannya? image 10


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.
PoolX: Raih Token Baru
APR hingga 12%. Selalu aktif, selalu dapat airdrop.
Kunci sekarang!

Kamu mungkin juga menyukai

Berita trending

Lainnya
1
Harmonic yang Didukung Paradigm Meluncurkan Pembangunan Blok Gaya HFT untuk Meningkatkan Performa Validator Solana
2
BlackRock Membawa Bitcoin ETF ke Australia dengan Peluncuran Dana Crypto yang Akan Segera Hadir: Laporan

Harga kripto

Lainnya
Bitcoin
Bitcoin
BTC
$103,796.2
+3.62%
Ethereum
Ethereum
ETH
$3,441.77
+8.57%
Tether USDt
Tether USDt
USDT
$1
+0.04%
XRP
XRP
XRP
$2.36
+10.83%
BNB
BNB
BNB
$955.05
+4.80%
Solana
Solana
SOL
$161.88
+7.23%
USDC
USDC
USDC
$1
+0.00%
TRON
TRON
TRX
$0.2896
+2.97%
Dogecoin
Dogecoin
DOGE
$0.1669
+6.14%
Cardano
Cardano
ADA
$0.5425
+6.99%
Cara menjual PI
Bitget listing PI - Beli atau jual PI dengan cepat di Bitget!
Trading sekarang
Belum menjadi Bitgetter?Paket sambutan senilai 6200 USDT untuk para Bitgetter baru!
Daftar sekarang
Trade smarter