Re-entrenter kerentanan lagi? Analisis serangan di Stars Arena

latar belakang

Menurut peringatan keamanan sistem Slow MistEye, pada 7 Oktober 2023, Stars Arena, protokol sosial on-chain Avalanche, diserang, mengakibatkan kerugian sekitar $2.9 juta. Tim keamanan Slow Mist secara singkat menganalisis serangan tersebut dan membagikan hasilnya di bawah ini.

Informasi terkait

Alamat Penyerang:

Kontrak Serangan:

Perdagangan Serang:

Inti serangan

Seorang penyerang mengeksploitasi kerentanan reentrancy untuk mengutak-atik harga yang sesuai dengan bagian depositnya. Selanjutnya, ketika menjual, manipulasi harga serupa disebabkan oleh ketergantungan pada manipulasi perhitungan harga yang berbahaya. Dengan menghitung secara tepat harga saham yang diperbarui pada reentrant, penyerang mencuri dana dalam kontrak.

Analisis transaksi

Kita dapat menemukan bahwa ada panggilan reentrancy dalam transaksi serangan, dan kita menganalisis metode panggilan langkah demi langkah dengan mendekompilasi kode.

! [Re-entrancy lagi?] Analisis serangan terhadap Stars Arena] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-98a298d9bb-dd1a6f-69ad2a.webp)

Penyerang pertama-tama membuat kontrak serangan (0x7f283 dan 0xdd9af), memanggil metode 0xe9ccf3a3 dari kontrak Stars Arena: Saham melalui kontrak serangan, dan kemudian menyetor 1 token AVAX.

! [Re-entrancy lagi?] Analisis serangan Arena Bintang] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-fccaa140dd-dd1a6f-69ad2a.webp)

Menurut jejak langkah demi langkah dari kode yang didekompilasi, metode 0xe9ccf3a3 yang digunakan pertama kali oleh penyerang adalah fungsi seperti deposit yang memanggil metode 0x326c dan 0x2058. Metode 0x326c adalah panggilan yang dikembalikan hanya sebagai parameter, sedangkan metode 0x2058 mirip dengan fungsi yang menangani pembelian atau pertukaran beberapa jenis token, dan metode ini menggunakan jumlah dan alamat token AVAX yang diteruskan oleh 0xe9ccf3a3 untuk menghitung operasi berikutnya dan perhitungan pembagian dan biaya.

! [Re-entrancy lagi?] Analisis serangan Arena Bintang] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-9279aef172-dd1a6f-69ad2a.webp)

Mengikuti logika panggilan baris 92 dari metode 0x2058, dapat ditemukan bahwa metode 0x1a9b adalah fungsi perhitungan, dan hasil yang dihitung adalah nilai yang mirip dengan harga, dan nilai pengembaliannya adalah v24 / 0xde0b6b3a7640000 atau _initialPrice yang baru dihitung.

109, 110, dan 116 baris berikutnya dari metode 0x307c dan 0x30ef memiliki panggilan ke panggilan tingkat rendah, dan panggilan 0x30ef masih merupakan panggilan eksternal ke g1, yaitu alamat kontrak serangan 0xdd9af masuk. Fungsi ini tidak memiliki batasan reentrant-lock, dan setelah panggilan luar dijalankan, metode ini hanya akan mengeksekusi penilaian if berikutnya untuk memperbarui parameter field0.length dan field0. Tidak ada keraguan bahwa reentrancy sedang terjadi di sini.

! [Re-entrancy lagi?] Analisis serangan Arena Bintang] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-3c9611d0bb-dd1a6f-69ad2a.webp)

Mari kita lihat data yang dibangun penyerang dalam panggilan reentrancy.

! [Re-entrancy lagi?] Analisis serangan terhadap Stars Arena] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-ce911c42e9-dd1a6f-69ad2a.webp)

Reentrancy di luar memanggil metode 0x5632b2e4 dan melewati empat parameter yang dibangun oleh penyerang, yang mengubah 153005ce00 menjadi 91000000000000 dengan desimal.

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 tidak diperbarui. Dengan cara ini, penyerang melewati penilaian dalam metode 0x5632b2e4 dan memodifikasi keadaan empat parameter msg.sender berikut, yaitu, kontrak serangan 0xdd9af, yang akan dibangun ketika panggilan eksternal dibuat.

! [Re-entrancy lagi?] Analisis serangan Arena Bintang] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-53695512db-dd1a6f-69ad2a.webp)

Setelah melakukan ini, penyerang memanggil sellShares untuk menjual sahamnya, memperoleh 266.102,97278 AVAX.

! [Re-entrancy lagi?] Analisis serangan terhadap Stars Arena] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-54e5a2f231-dd1a6f-69ad2a.webp)

Masuk lebih dalam ke fungsi sellShares, fungsi ini awalnya memanggil metode 0x1a9b, yang disebut dalam metode 0x2058 sebelumnya, yang merupakan fungsi yang menangani pembelian atau pertukaran beberapa jenis token. Kita dapat melihat bahwa metode 0x2329 dalam metode 0x1a9b memperbarui pemilik _9f[g0] , dan parameter ini telah dimodifikasi menjadi 91000000000000 yang dibangun oleh penyerang pada reentrancy.

! [Re-entrancy lagi?] Analisis serangan Arena Bintang] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-60823d09ab-dd1a6f-69ad2a.webp)

Kembali ke metode 0x1a9b, hitung ulang berdasarkan nilai yang dibangun sebelumnya dengan jahat (lihat catatan untuk jumlah yang dihitung).

! [Re-entrancy lagi?] Analisis serangan terhadap Stars Arena] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-764b869b64-dd1a6f-69ad2a.webp)

Setelah perhitungan di atas, harga yang sesuai dengan bagian yang baru dihitung telah berubah, dan hasilnya adalah 274.333,061476814e18. Setelah serangkaian biaya dibebankan, penyerang menggunakan konstruksi berbahaya untuk memanipulasi harga tanpa memodifikasi saham, menjual saham, dan berhasil menghasilkan keuntungan.

Ringkasan

Inti dari serangan ini adalah pembaruan ketergantungan perhitungan harga yang disebabkan oleh serangan reentrancy, yang mengarah ke manipulasi harga berbahaya yang serupa. Tim keamanan Slow Mist menyarankan bahwa tim proyek harus mencoba diaudit oleh beberapa perusahaan keamanan sebelum menerapkan kontrak. Pada saat yang sama, saat pengkodean, itu harus memenuhi spesifikasi pengkodean Checks-Effects-Interactions sebanyak mungkin, dan menambahkan penguncian anti-reentrancy.

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.
  • Hadiah
  • Komentar
  • Bagikan
Komentar
0/400
Tidak ada komentar
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)