Kerentanan overflow integer bahasa Move: risiko validasi keamanan yang dirujuk

Bahasa Move kembali menunjukkan kerentanan tinggi: overflow integer dapat menyebabkan Node crash

Baru-baru ini, peneliti keamanan menemukan celah integer overflow baru saat menganalisis Aptos Moveevm secara mendalam. Celah ini ada dalam proses verifikasi keamanan referensi bahasa Move, yang dapat menyebabkan Node mengalami crash.

Numen Cyber menemukan kerentanan tinggi lainnya pada bahasa move secara eksklusif

Bahasa Move akan melakukan verifikasi kode sebelum mengeksekusi bytecode, yang terbagi menjadi 4 langkah. Kerentanan ini muncul pada langkah reference_safety. Langkah ini terutama digunakan untuk memverifikasi keamanan referensi, termasuk memeriksa apakah ada referensi yang menggantung, apakah akses referensi yang dapat diubah aman, dan lain-lain.

Numen Cyber menemukan kerentanan tinggi lain dalam bahasa move

Proses verifikasi akan menjelajahi setiap blok dasar dan melakukan analisis. Blok dasar adalah urutan kode yang tidak memiliki instruksi cabang kecuali untuk titik masuk dan keluar. Bahasa Move mengidentifikasi blok dasar dengan mencari instruksi cabang dan loop.

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move

Saat memverifikasi keamanan referensi, sebuah struktur AbstractState akan dipertahankan, yang berisi informasi tentang borrow graph dan locals. Proses verifikasi akan menjalankan kode blok dasar, menghasilkan state setelah eksekusi, kemudian menggabungkannya dengan state sebelum eksekusi, memperbarui status blok dan menyebarkannya ke blok-blok selanjutnya.

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move secara eksklusif

Kelemahan muncul dalam fungsi join_. Fungsi ini digunakan untuk menggabungkan state sebelum dan sesudah eksekusi, memperbarui locals dan grafik peminjaman. Ketika jumlah panjang parameter dan panjang variabel lokal lebih dari 256, penggunaan tipe u8 untuk mengiterasi locals dapat menyebabkan overflow integer.

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Numen Cyber menemukan kerentanan tinggi lainnya di bahasa move

Numen Cyber menemukan kerentanan tinggi lainnya pada bahasa move

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Numen Cyber menemukan lagi celah berbahaya dalam bahasa move

Numen Cyber menemukan kerentanan tinggi lainnya pada bahasa move

Numen Cyber menemukan lagi celah berbahaya pada bahasa move

Numen Cyber menemukan kerentanan tinggi lainnya pada bahasa move

Dengan memanfaatkan overflow ini, kita dapat mengubah state dari basic block. Dalam kode yang memiliki loop, jika basic block yang sama dieksekusi beberapa kali, mungkin akan mengakses indeks locals yang tidak ada, yang dapat menyebabkan panic dan mengakibatkan node crash.

Peneliti menyediakan kode PoC yang memicu overflow integer dengan mengatur parameter tertentu dan jumlah variabel lokal, yang akhirnya menyebabkan panic.

Numen Cyber menemukan celah berbahaya lain dalam bahasa move

Kerentanan ini menunjukkan bahwa bahkan bahasa yang mengutamakan keamanan seperti Move dapat memiliki celah. Disarankan agar perancang bahasa Move menambahkan lebih banyak pemeriksaan keamanan saat runtime, dan tidak hanya mengandalkan pemeriksaan di tahap verifikasi. Ini juga menyoroti pentingnya audit kode.

MOVE2.04%
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
  • 2
  • Posting ulang
  • Bagikan
Komentar
0/400
BlockchainDecodervip
· 08-08 08:49
Pengujian kutipan terlalu lemah
Lihat AsliBalas0
Hash_Banditvip
· 08-06 01:22
Masalah keamanan harus diperhatikan
Lihat AsliBalas0
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)