Modul keamanan referensi Move menemukan kerentanan overflow integer baru

robot
Pembuatan abstrak sedang berlangsung

Modul keamanan referensi bahasa Move menemukan kerentanan integer overflow baru

Baru-baru ini, saat melakukan penelitian mendalam tentang bahasa Move, ditemukan sebuah kerentanan overflow integer baru. Kerentanan ini terdapat dalam modul verifikasi keamanan referensi, dan proses pemicunya cukup menarik. Artikel ini akan menganalisis kerentanan ini secara mendalam, sambil memperkenalkan pengetahuan latar belakang terkait bahasa Move.

Numen Cyber menemukan kerentanan tinggi lain dalam bahasa move

Bahasa Move akan memverifikasi unit kode sebelum mengeksekusi bytecode, dan seluruh proses verifikasi dibagi menjadi 4 langkah. Kerentanan yang ditemukan kali ini muncul di langkah reference_safety.

Modul verifikasi keamanan mengacu pada memeriksa apakah ada referensi yang mengambang, apakah akses referensi yang dapat diubah aman, dan apakah akses referensi penyimpanan global aman, dll. Proses verifikasi dimulai dari fungsi analyze_function, yang memverifikasi setiap blok dasar.

Dalam bahasa Move, blok dasar merujuk pada urutan kode yang tidak memiliki instruksi percabangan kecuali untuk masuk dan keluar. Sistem menentukan blok dasar dengan menjelajahi bytecode dan mencari semua urutan instruksi percabangan dan instruksi loop.

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Bahasa Move mendukung dua jenis referensi: referensi tidak dapat diubah (&) dan referensi dapat diubah (&mut). Modul keamanan referensi akan memindai instruksi bytecode di setiap blok dasar dalam fungsi, untuk menentukan apakah semua operasi referensi adalah sah. Proses verifikasi menggunakan struktur AbstractState, yang mencakup dua komponen yaitu borrow graph dan locals, untuk memastikan keamanan referensi dalam fungsi.

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move

Selama proses verifikasi, sistem akan mengeksekusi kode blok dasar untuk menghasilkan post state, kemudian menggabungkan pre state dan post state untuk memperbarui status blok. Jika status berubah dan terdapat siklus, maka blok dasar tersebut akan dieksekusi ulang sampai post state sama dengan pre state atau terjadi kesalahan.

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Kerentanan muncul di dalam fungsi join_. Ketika panjang parameter ditambah panjang variabel lokal melebihi 256, penggunaan tipe u8 untuk iterasi locals akan menyebabkan overflow integer. Meskipun bahasa Move memiliki proses untuk memverifikasi jumlah locals, hanya jumlah variabel lokal yang diperiksa, dan tidak termasuk panjang parameter.

Numen Cyber menemukan celah keamanan tinggi lainnya dalam bahasa move

Overflow integer ini dapat menyebabkan serangan penolakan layanan. Penyerang dapat membangun blok kode loop yang memanfaatkan overflow untuk mengubah state blok. Ketika fungsi execute_block dijalankan lagi, jika indeks yang perlu diakses oleh instruksi tidak ada dalam peta locals AbstractState yang baru, itu akan menyebabkan sistem crash.

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move

Untuk mendemonstrasikan kerentanan ini, kita dapat membangun blok dasar yang berisi instruksi cabang tanpa syarat. Dengan mengatur parameter yang tepat dan jumlah variabel lokal, kita dapat menyebabkan panjang peta locals meluap menjadi 8. Pada eksekusi kedua, mencoba mengakses offset yang tidak ada akan menyebabkan panic.

Numen Cyber menemukan lagi kerentanan tinggi di bahasa move

Numen Cyber menemukan celah berbahaya lain dalam bahasa move

Numen Cyber menemukan celah berbahaya lain dalam bahasa move

Numen Cyber menemukan celah berbahaya lain dalam bahasa move

Numen Cyber menemukan celah berbahaya lain dalam bahasa move

Penemuan eksklusif Numen Cyber, ada lagi kerentanan tinggi dalam bahasa move

Numen Cyber menemukan kerentanan tinggi lain pada bahasa move

Numen Cyber menemukan kerentanan tinggi lainnya pada bahasa move

Kerentanan ini mengingatkan kita bahwa bahkan bahasa yang dirancang dengan hati-hati pun mungkin memiliki risiko keamanan. Untuk bahasa Move, disarankan untuk menambahkan lebih banyak kode pemeriksaan saat runtime untuk mencegah situasi tak terduga. Saat ini, Move utama melakukan pemeriksaan keamanan pada tahap verifikasi, tetapi jika verifikasi dilewati, bisa menyebabkan masalah yang lebih serius.

Sebagai pelopor penelitian keamanan bahasa Move, kami akan terus menjelajahi masalah keamanan terkait untuk berkontribusi pada perkembangan sehat ekosistem Move.

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

MOVE-1.31%
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
  • 6
  • Bagikan
Komentar
0/400
TokenUnlockervip
· 13jam yang lalu
Kok bisa overflow integer lagi?
Lihat AsliBalas0
BearMarketGardenervip
· 20jam yang lalu
move ada masalah lagi ya
Lihat AsliBalas0
RunWithRugsvip
· 08-02 18:07
Kenapa ada celah keamanan lagi?
Lihat AsliBalas0
TestnetFreeloadervip
· 08-02 18:07
Sudah ada Attack Surface lagi, yeay!
Lihat AsliBalas0
JustAnotherWalletvip
· 08-02 18:02
Ada masalah lagi, tim audit disalahkan.
Lihat AsliBalas0
LiquidityNinjavip
· 08-02 18:01
Harus memperbaiki move hehe
Lihat AsliBalas0
  • Sematkan
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)