Menurut peringatan keamanan sistem SlowMist MistEye, pada tanggal 7 Oktober 2023, Stars Arena, protokol sosial pada rantai Avalanche, diserang, menyebabkan kerugian sekitar US$2,9 juta. Tim keamanan SlowMist menganalisis secara singkat insiden serangan tersebut dan membagikan hasilnya sebagai berikut.
Informasi Terkait
Alamat penyerang:
Kontrak serangan:
Transaksi serangan:
Inti Serangan
Penyerang mengeksploitasi kerentanan re-entrancy untuk merusak harga yang sesuai dengan bagian depositnya. Belakangan, saat menjual, manipulasi harga serupa terjadi karena ketergantungan perhitungan harga pada manipulasi jahat. Dengan menghitung secara akurat harga saham yang diperbarui saat masuk kembali, penyerang mencuri dana dari kontrak.
Analisis Transaksi
Kami dapat menemukan bahwa ada panggilan masuk kembali dalam transaksi serangan, dan kami secara bertahap menganalisis metode pemanggilan dengan mendekompilasi kodenya.
Penyerang pertama-tama membuat kontrak serangan (0x7f283 dan 0xdd9af), yang disebut metode 0xe9ccf3a3 dari Stars Arena: Membagikan kontrak melalui kontrak serangan, dan kemudian menyetor 1 token AVAX.
Menurut pelacakan langkah demi langkah dari kode yang didekompilasi, metode 0xe9ccf3a3 yang pertama kali digunakan oleh penyerang adalah fungsi yang mirip dengan deposit, yang memanggil metode 0x326c dan 0x2058. Metode 0x326c hanya berupa panggilan yang dikembalikan sebagai parameter, sedangkan metode 0x2058 mirip dengan fungsi yang menangani pembelian atau penukaran token tertentu. Metode ini menggunakan jumlah token AVAX dan alamat yang diteruskan di 0xe9ccf3a3 untuk melakukan operasi selanjutnya , bagikan dan biaya.hitung.
Mengikuti logika pemanggilan baris 92 dari metode 0x2058, kita dapat menemukan bahwa metode 0x1a9b adalah fungsi perhitungan. Hasil perhitungan adalah nilai yang mirip dengan harga, dan nilai kembaliannya adalah v24 / 0xde0b6b3a7640000 atau _initialPrice yang baru dihitung.
Ada panggilan panggilan tingkat rendah dalam metode 0x307c dan 0x30ef pada baris 109, 110 dan 116, dan panggilan 0x30ef masih merupakan panggilan eksternal ke g1, yang merupakan alamat kontrak serangan 0xdd9af yang masuk. Fungsi ini tidak memiliki batasan kunci anti-masuk kembali, dan setelah panggilan eksternal dijalankan, metode ini akan menjalankan penilaian if berikutnya untuk memperbarui parameter field0.length dan field0. Tidak ada keraguan bahwa masuk kembali terjadi di sini.
Mari kita lihat data yang dibuat oleh penyerang dalam panggilan masuk kembali.
Panggilan eksternal yang masuk kembali adalah metode 0x5632b2e4, dan 4 parameter yang dibuat oleh penyerang diteruskan. Parameter ini diubah menjadi 91000000000 melalui konversi heksadesimal.
Seperti disebutkan di atas, panggilan eksternal ke metode 0x5632b2e4 dijalankan sebelum penilaian if (g0 == _getMyShares[address(g1)][msg.sender]) . Saat ini, nilai field0.lengt adalah 0 dan belum diperbarui. Penyerang hanya menggunakan metode ini untuk melewati penilaian dalam metode 0x5632b2e4 dan mengubah empat status parameter msg.sender berikut, yang merupakan kontrak serangan 0xdd9af, ke data yang dibuat saat panggilan eksternal dilakukan.
Setelah operasi di atas, penyerang memanggil sellShares untuk menjual sahamnya dan memperoleh 266,102.97278 AVAX.
Masuk jauh ke dalam fungsi sellShares, fungsi tersebut pertama kali disebut metode 0x1a9b, dan pada metode sebelumnya ada pemanggilan 0x2058, yaitu fungsi yang menangani pembelian atau penukaran token tertentu. Kita dapat menemukan bahwa metode 0x2329 dalam metode 0x1a9b akan memperbarui pemilik_9f [g0] , dan parameter ini telah diubah menjadi 91000000000 yang dibuat oleh penyerang saat masuk kembali.
Kembali ke metode 0x1a9b dan hitung ulang berdasarkan nilai yang dibuat secara jahat sebelumnya (lihat komentar untuk jumlah penghitungan).
Setelah dilakukan perhitungan di atas maka harga saham yang baru dihitung tersebut mengalami perubahan, dan hasil perhitungannya adalah 274,333.061476814e18. Setelah serangkaian pengumpulan biaya, penyerang menggunakan konstruksi jahat untuk memanipulasi harga tanpa mengubah saham, menjual saham tersebut, dan berhasil memperoleh keuntungan.
Ringkasan
Inti dari serangan ini terletak pada pembaruan ketergantungan penghitungan harga yang disebabkan oleh serangan reentrancy, yang pada gilirannya menyebabkan manipulasi harga berbahaya serupa. Tim keamanan SlowMist merekomendasikan bahwa pihak proyek harus mencoba yang terbaik untuk menjalani audit oleh beberapa perusahaan keamanan sebelum menerapkan dan merilis kontrak; pada saat yang sama, spesifikasi pengkodean Pemeriksaan-Efek-Interaksi harus dipenuhi sebanyak mungkin saat pengkodean, dan kunci anti masuk kembali harus ditambahkan.
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
Slow Mist: Analisis singkat tentang Stars Arena yang diretas
latar belakang
Menurut peringatan keamanan sistem SlowMist MistEye, pada tanggal 7 Oktober 2023, Stars Arena, protokol sosial pada rantai Avalanche, diserang, menyebabkan kerugian sekitar US$2,9 juta. Tim keamanan SlowMist menganalisis secara singkat insiden serangan tersebut dan membagikan hasilnya sebagai berikut.
Informasi Terkait
Alamat penyerang:
Kontrak serangan:
Transaksi serangan:
Inti Serangan
Penyerang mengeksploitasi kerentanan re-entrancy untuk merusak harga yang sesuai dengan bagian depositnya. Belakangan, saat menjual, manipulasi harga serupa terjadi karena ketergantungan perhitungan harga pada manipulasi jahat. Dengan menghitung secara akurat harga saham yang diperbarui saat masuk kembali, penyerang mencuri dana dari kontrak.
Analisis Transaksi
Kami dapat menemukan bahwa ada panggilan masuk kembali dalam transaksi serangan, dan kami secara bertahap menganalisis metode pemanggilan dengan mendekompilasi kodenya.
Penyerang pertama-tama membuat kontrak serangan (0x7f283 dan 0xdd9af), yang disebut metode 0xe9ccf3a3 dari Stars Arena: Membagikan kontrak melalui kontrak serangan, dan kemudian menyetor 1 token AVAX.
Menurut pelacakan langkah demi langkah dari kode yang didekompilasi, metode 0xe9ccf3a3 yang pertama kali digunakan oleh penyerang adalah fungsi yang mirip dengan deposit, yang memanggil metode 0x326c dan 0x2058. Metode 0x326c hanya berupa panggilan yang dikembalikan sebagai parameter, sedangkan metode 0x2058 mirip dengan fungsi yang menangani pembelian atau penukaran token tertentu. Metode ini menggunakan jumlah token AVAX dan alamat yang diteruskan di 0xe9ccf3a3 untuk melakukan operasi selanjutnya , bagikan dan biaya.hitung.
Mengikuti logika pemanggilan baris 92 dari metode 0x2058, kita dapat menemukan bahwa metode 0x1a9b adalah fungsi perhitungan. Hasil perhitungan adalah nilai yang mirip dengan harga, dan nilai kembaliannya adalah v24 / 0xde0b6b3a7640000 atau _initialPrice yang baru dihitung.
Ada panggilan panggilan tingkat rendah dalam metode 0x307c dan 0x30ef pada baris 109, 110 dan 116, dan panggilan 0x30ef masih merupakan panggilan eksternal ke g1, yang merupakan alamat kontrak serangan 0xdd9af yang masuk. Fungsi ini tidak memiliki batasan kunci anti-masuk kembali, dan setelah panggilan eksternal dijalankan, metode ini akan menjalankan penilaian if berikutnya untuk memperbarui parameter field0.length dan field0. Tidak ada keraguan bahwa masuk kembali terjadi di sini.
Mari kita lihat data yang dibuat oleh penyerang dalam panggilan masuk kembali.
Panggilan eksternal yang masuk kembali adalah metode 0x5632b2e4, dan 4 parameter yang dibuat oleh penyerang diteruskan. Parameter ini diubah menjadi 91000000000 melalui konversi heksadesimal.
Seperti disebutkan di atas, panggilan eksternal ke metode 0x5632b2e4 dijalankan sebelum penilaian if (g0 == _getMyShares[address(g1)][msg.sender]) . Saat ini, nilai field0.lengt adalah 0 dan belum diperbarui. Penyerang hanya menggunakan metode ini untuk melewati penilaian dalam metode 0x5632b2e4 dan mengubah empat status parameter msg.sender berikut, yang merupakan kontrak serangan 0xdd9af, ke data yang dibuat saat panggilan eksternal dilakukan.
Setelah operasi di atas, penyerang memanggil sellShares untuk menjual sahamnya dan memperoleh 266,102.97278 AVAX.
Masuk jauh ke dalam fungsi sellShares, fungsi tersebut pertama kali disebut metode 0x1a9b, dan pada metode sebelumnya ada pemanggilan 0x2058, yaitu fungsi yang menangani pembelian atau penukaran token tertentu. Kita dapat menemukan bahwa metode 0x2329 dalam metode 0x1a9b akan memperbarui pemilik_9f [g0] , dan parameter ini telah diubah menjadi 91000000000 yang dibuat oleh penyerang saat masuk kembali.
Kembali ke metode 0x1a9b dan hitung ulang berdasarkan nilai yang dibuat secara jahat sebelumnya (lihat komentar untuk jumlah penghitungan).
Setelah dilakukan perhitungan di atas maka harga saham yang baru dihitung tersebut mengalami perubahan, dan hasil perhitungannya adalah 274,333.061476814e18. Setelah serangkaian pengumpulan biaya, penyerang menggunakan konstruksi jahat untuk memanipulasi harga tanpa mengubah saham, menjual saham tersebut, dan berhasil memperoleh keuntungan.
Ringkasan
Inti dari serangan ini terletak pada pembaruan ketergantungan penghitungan harga yang disebabkan oleh serangan reentrancy, yang pada gilirannya menyebabkan manipulasi harga berbahaya serupa. Tim keamanan SlowMist merekomendasikan bahwa pihak proyek harus mencoba yang terbaik untuk menjalani audit oleh beberapa perusahaan keamanan sebelum menerapkan dan merilis kontrak; pada saat yang sama, spesifikasi pengkodean Pemeriksaan-Efek-Interaksi harus dipenuhi sebanyak mungkin saat pengkodean, dan kunci anti masuk kembali harus ditambahkan.