https://medium.com/@numencyberlabs/bsc-chain-cross-chain-bridge-hacking-analysis-24338f9a80
Deskripsi Singkat Serangan
Peretas (alamat: 0x489a8756c18c0b8b24ec2a2b9ff3d4d447f79bec) mengeksploitasi kerentanan di IAVL TREE, kode pustaka dasar dari mekanisme validasi pesan jembatan lintas rantai, untuk memalsukan pesan penarikan berbahaya, yang menyebabkan jembatan lintas rantai mengirim dua transaksi terpisah ke peretas, masing-masing bernilai 1 juta BNB, dan totalnya sekitar $600 juta USD.
Tanggapan tepat waktu dari CoinSec dalam menahan serangan memungkinkan mereka untuk menyelamatkan sebagian besar aset, dan akibatnya mereka hanya kehilangan sekitar $100 juta. Namun demikian, ini masih dianggap jumlah yang signifikan baik di mata publik maupun BNBChain.
Alamat Transaksi:
https://bscscan.com/tx/0xebf83628ba893d35b496121fb8201666b8e09f3cbadf0e269162baa72efe3b8b
Analisis Metodologi Eksploitasi Kerentanan
Serangan terjadi pada rantai BSC dimana Binance Bridge memberikan nilai likuiditas ke BSC. Dari analisis kami, kami menentukan bahwa komponen kunci di balik serangan itu adalah perpustakaanpohon IAVL pada BSC L1, yang awalnya diimplementasikan oleh COMOS dan digunakan oleh BSC Chain. Eksploitasi semacam ini dikenal sebagai Cross-Chain Attack.
Pohon IAVL digunakan untuk memverifikasi keabsahan pesan yang dikirim ke jembatan Binance Cross-chain.
Biasanya, pohon IAVL secara otomatis menolak pesan yang dipalsukan oleh peretas. Namun, kali ini penyerang menemukan kerentanan dalam proses verifikasi IAVL, yang memungkinkannya mengelabui pohon IAVL agar menerima pesan arbitraru. Hal ini memungkinkan peretas untuk mengekstrak 2M BNB dari jembatan lintas rantai dengan membuat dan memalsukan pesan dengan hati-hati.
Pohon IAVL, seperti namanya, adalah pohon pencarian biner self-balancing yang dinamai penemunya, Georgy Adelson-Velsky dan Evgenii Landis. Tujuan dari struktur datanya adalah untuk menyediakan penyimpanan persisten untuk pasangan kunci-nilai, seperti menyimpan saldo akun) sehingga hash root Merkle deterministik dapat menjadi komputer.
Peretas memanggil fungsi handlePackage dalam kontrak jembatan lintas rantai BSC dan kemudian memanggil kontrak yang telah dikompilasi sebelumnya untuk memverifikasi keabsahan MerkleProof.
Apa itu pra-kompilasi?
Pra-kompilasi memainkan peran yang mirip dengan syscall di sistem operasi. Ketika sistem operasi menerima nomor syscall (nomornya mirip dengan 0x65), itu akan menjalankan panggilan sistem yang sesuai. Biasanya, alamat kontrak dihasilkan saat kontrak diterapkan, lalu langsung ditulis mati 0x65 . Ketika BSC L1 menemukan alamat ini, ia langsung memanggil proses MerkleProof, yaitu memanggil IAVLTree.
Serang Singkatnya
Dengan menyebarkan kontrak, peretas memanggil fungsi handlePackage dari kontrak jembatan lintas rantai BSC
(https://bscscan.com/address/0x0000000000000000000000000000000000002000#kode#L1082 )
untuk memalsukan data bukti, yang melewati checksum pohon IAVL dan dengan demikian membuat jembatan lintas rantai mentransfer 2M BNB ke peretas.
Akhirnya,
Samczsun telah membuat beberapa spekulasi tentang sifat kerentanan ini, tetapi belum dikonfirmasi apakah semua detailnya akurat. Kami saat ini sedang menganalisis serangan itu juga, dan kami akan terus merilis lebih banyak informasi di masa mendatang ketika detail lebih lanjut terungkap. Kami mendorong Anda untuk terus memantau dan mengikuti kami untuk analisis tindak lanjut atas serangan tersebut.