Kerentanan overflow integer baru ditemukan dalam verifikasi keamanan rujukan bahasa Move

robot
Pembuatan abstrak sedang berlangsung

Analisis Kerentanan Overflow Integer dalam Verifikasi Keamanan Referensi Bahasa Move

Baru-baru ini, saat melakukan penelitian mendalam tentang bahasa Move, kami menemukan kerentanan overflow integer baru. Kerentanan ini ada dalam proses verifikasi keamanan referensi, dan proses pemicunya cukup menarik. Artikel ini akan menganalisis kerentanan ini secara mendalam dan membahas beberapa pengetahuan latar belakang terkait bahasa Move.

Bahasa Move melakukan verifikasi unit kode sebelum menjalankan bytecode, yang dibagi menjadi empat langkah. Kerentanan ini muncul pada langkah reference_safety.

Modul verifikasi referensi keamanan mendefinisikan fungsi transfer yang digunakan untuk memverifikasi keamanan referensi dari proses utama. Konten yang diperiksa termasuk verifikasi tidak ada referensi yang mengambang, apakah akses ke referensi yang dapat diubah aman, dan apakah akses ke referensi penyimpanan global aman, dan lain-lain.

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move secara eksklusif

Fungsi entri validasi keamanan yang dirujuk akan memanggil analyze_function untuk memverifikasi setiap blok dasar. Blok dasar merujuk pada urutan kode yang tidak memiliki instruksi cabang selain instruksi masuk dan keluar. Bahasa Move menentukan blok dasar dengan menjelajahi bytecode, mencari semua instruksi cabang dan urutan instruksi loop.

Bahasa Move mendukung dua jenis referensi: referensi tidak dapat diubah & dan referensi dapat diubah &mut. Referensi tidak dapat diubah digunakan untuk membaca data, referensi dapat diubah digunakan untuk memodifikasi data. Penggunaan jenis referensi yang tepat membantu menjaga keamanan dan mengidentifikasi modul pembacaan.

Modul keamanan referensi akan memindai instruksi bytecode blok dasar dalam fungsi per unit fungsi, memverifikasi semua operasi referensi adalah sah. Proses verifikasi terutama melibatkan struktur AbstractState, yang mencakup grafik pinjaman dan lokal, untuk memastikan keamanan referensi dalam fungsi.

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move

Selama proses verifikasi, state sebelum dan sesudah eksekusi blok dasar akan dibandingkan, dan hasil join_result akan digunakan untuk menggabungkan pre state dan post state. Jika terjadi perubahan dan blok saat ini memiliki edge mundur yang menunjuk pada dirinya sendiri (menunjukkan adanya loop), maka akan kembali ke awal loop dan melanjutkan eksekusi blok dasar tersebut, sampai post state sama dengan pre state atau terhenti karena kesalahan.

Kerentanan terjadi dalam proses penentuan apakah hasil join telah berubah. Ketika jumlah panjang parameter dan panjang variabel lokal melebihi 256, penggunaan tipe u8 untuk iterasi locals dapat menyebabkan overflow integer. Meskipun Move memiliki proses pemeriksaan jumlah locals, modul check bounds hanya memeriksa locals dan tidak mencakup panjang parameter.

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Kerentanan overflow integer ini dapat menyebabkan serangan Denial of Service (DoS). Penyerang dapat membangun blok kode loop dan memanfaatkan overflow untuk mengubah state blok, sehingga peta locals baru berbeda dari sebelumnya. Ketika fungsi execute_block dijalankan lagi, analisis urutan instruksi bytecode dalam basic block akan mengakses peta locals baru. Jika indeks yang diperlukan oleh instruksi tidak ada dalam peta locals AbstractState yang baru, ini akan menyebabkan DoS.

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Untuk memverifikasi celah ini, PoC dapat direproduksi di git. Blok kode dalam PoC berisi instruksi cabang tanpa syarat, yang setiap kali menjalankan instruksi terakhir akan melompat kembali ke instruksi pertama, menyebabkan pemanggilan fungsi execute_block dan join dilakukan berulang kali.

Numen Cyber menemukan celah berbahaya lain dalam bahasa move

Kerentanan ini menunjukkan bahwa bahkan bahasa yang mengutamakan keamanan seperti Move pun bisa memiliki risiko keamanan. Ini menekankan pentingnya audit kode, sekaligus menyarankan desainer bahasa Move untuk menambahkan lebih banyak pemeriksaan kode saat runtime untuk mencegah situasi yang tidak diinginkan. Saat ini, Move terutama melakukan pemeriksaan keamanan pada tahap verifikasi, tetapi begitu verifikasi dilewati, kurangnya penguatan keamanan yang memadai pada tahap runtime dapat menyebabkan masalah yang lebih serius.

Sebagai pemimpin penelitian keamanan bahasa Move, kami akan terus menyelidiki masalah keamanan Move dan akan membagikan lebih banyak temuan di kemudian hari.

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move

Numen Cyber menemukan celah berbahaya lainnya pada bahasa move secara eksklusif

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move secara eksklusif

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move

MOVE-3.27%
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
BagHolderTillRetirevip
· 07-22 09:41
Bug ini sangat luar biasa, overflow menyebabkan crash.
Lihat AsliBalas0
MetaverseVagabondvip
· 07-21 19:40
Kerentanan overflow muncul lagi, menyedihkan
Lihat AsliBalas0
HeavenAndEarthAreBlevip
· 07-20 02:27
Sialan dia
Lihat AsliBalas0
MemeTokenGeniusvip
· 07-20 00:50
Aduh, bug ini benar-benar meledak.
Lihat AsliBalas0
GamefiHarvestervip
· 07-20 00:43
Belum diperbaiki tepat waktu? Sucker besi tunggu untuk dipermainkan.
Lihat AsliBalas0
SerumSurfervip
· 07-20 00:40
Wah, ada bug lagi. Ayo pergi~
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)