Modul keamanan kutipan Move language memiliki kerentanan overflow integer yang dapat menyebabkan serangan DoS.

robot
Pembuatan abstrak sedang berlangsung

Analisis Kerentanan Overflow Integer di Modul Keamanan Referensi Bahasa Move

Baru-baru ini, saat kami mendalami Aptos Moveevm, kami menemukan kerentanan overflow integer yang baru. Proses pemicu kerentanan ini cukup menarik, di bawah ini kami akan menganalisis kerentanan ini secara mendalam, dan sekaligus membahas beberapa konsep inti dalam bahasa Move.

Bahasa Move melakukan verifikasi unit kode sebelum mengeksekusi bytecode, dan proses ini terdiri dari empat langkah. Kerentanan yang dibahas dalam artikel ini muncul pada langkah reference_safety.

Modul reference_safety terutama bertanggung jawab untuk memverifikasi keamanan referensi dalam kode, termasuk memeriksa apakah ada referensi yang menggantung, apakah akses referensi yang dapat diubah aman, dan apakah akses referensi penyimpanan global sesuai.

Numen Cyber menemukan lagi celah berbahaya di bahasa move

Dalam proses verifikasi keamanan yang dirujuk, sistem akan menganalisis setiap blok dasar. Blok dasar adalah urutan kode yang tidak memiliki instruksi cabang kecuali untuk masuk dan keluar. Bahasa Move mengidentifikasi 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, sedangkan referensi dapat diubah digunakan untuk memodifikasi data. Desain ini membantu meningkatkan keamanan dan keterbacaan kode.

Proses utama untuk memverifikasi keamanan referensi mencakup: memindai blok dasar dalam fungsi, menganalisis instruksi bytecode, dan menentukan apakah semua operasi referensi sah. Proses ini menggunakan struktur AbstractState, yang mencakup borrow graph dan locals, bersama-sama memastikan keamanan referensi dalam fungsi.

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move

Selama proses verifikasi, akan dibandingkan status sebelum dan sesudah eksekusi blok dasar (pre state dan post state), dan hasilnya akan digabung untuk memperbarui status blok. Jika status berubah dan blok saat ini memiliki tepi belakang yang menunjuk pada dirinya sendiri (menunjukkan adanya siklus), maka blok dasar tersebut akan dieksekusi ulang, hingga status tidak lagi berubah atau terjadi kesalahan.

Kelemahan muncul dalam proses penilaian apakah hasil join telah berubah. Ketika jumlah panjang parameter fungsi dan panjang variabel lokal melebihi 256, penggunaan tipe u8 untuk indeks lokal dapat menyebabkan overflow integer. Meskipun bahasa Move memiliki proses untuk memeriksa jumlah locals, namun hanya memeriksa jumlah variabel lokal dan tidak termasuk panjang parameter.

Numen Cyber menemukan kerentanan tinggi lain pada bahasa move

Kerentanan integer overflow ini dapat menyebabkan serangan penolakan layanan (DoS). Penyerang dapat membangun blok kode berulang yang memanfaatkan overflow untuk mengubah status blok, sehingga peta locals baru berbeda dari sebelumnya. Ketika fungsi execute_block dijalankan lagi, jika indeks yang perlu diakses oleh instruksi tidak ada dalam peta locals AbstractState yang baru, maka akan menyebabkan panic, yang dapat membuat seluruh node crash.

Untuk mendemonstrasikan kerentanan ini, kami menyediakan PoC yang dapat direproduksi di git. PoC ini mencakup blok dasar dengan instruksi cabang tanpa syarat, yang dapat memicu fungsi execute_block dan join beberapa kali. Dengan mengatur parameter dan jumlah variabel lokal dengan hati-hati, panjang peta locals baru dapat dikurangi menjadi 8, dan kemudian memicu panic saat eksekusi kedua.

Numen Cyber menemukan lagi kerentanan tinggi dalam bahasa move

Kekurangan ini sekali lagi membuktikan bahwa tidak ada kode yang sepenuhnya aman. Meskipun bahasa Move telah menjalani pemeriksaan statis yang ketat sebelum eksekusi, masih mungkin untuk dilewati oleh celah overflow. Ini juga menekankan pentingnya audit kode, serta perlunya menambahkan pemeriksaan keamanan waktu berjalan dalam desain bahasa.

Sebagai pemimpin dalam penelitian keamanan bahasa Move, kami akan terus menyelidiki masalah keamanan Move dan menyarankan perancang bahasa untuk menambahkan lebih banyak kode pemeriksaan dalam runtime Move untuk mencegah situasi yang tidak terduga. Saat ini, bahasa Move terutama melakukan pemeriksaan keamanan pada tahap verifikasi, tetapi kami percaya itu belum cukup. Setelah verifikasi dilanggar, kurangnya penguatan keamanan yang memadai pada tahap eksekusi dapat mengakibatkan masalah yang lebih serius.

Numen Cyber menemukan lagi kerentanan tinggi dalam bahasa move secara eksklusif

Numen Cyber menemukan kerentanan tinggi lainnya pada bahasa move

Numen Cyber menemukan kerentanan tinggi lainnya pada bahasa move secara eksklusif

Numen Cyber menemukan celah berisiko tinggi lainnya dalam bahasa move

Penemuan eksklusif Numen Cyber: bahasa move memiliki celah berbahaya lainnya

Numen Cyber menemukan kerentanan tinggi lainnya dalam bahasa move

Numen Cyber menemukan celah berbahaya lain dalam bahasa move

Numen Cyber menemukan kerentanan tinggi lainnya di bahasa move

Numen Cyber menemukan celah berbahaya lainnya dalam bahasa move

Numen Cyber menemukan celah berbahaya lainnya di bahasa move

Numen Cyber menemukan celah berbahaya lain dalam bahasa move

Lihat Asli
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Hadiah
  • 5
  • Bagikan
Komentar
0/400
FUD_Whisperervip
· 07-08 18:40
Mengapa masih banyak celah seperti ini, membuat suasana hati?
Lihat AsliBalas0
LadderToolGuyvip
· 07-06 19:13
Ternyata banyak juga bug overflow.
Lihat AsliBalas0
MetaverseMigrantvip
· 07-06 17:57
Sekali lagi membuat saya merasa seperti kembali ke tahun 2021 saat menguji Solana.
Lihat AsliBalas0
ETHReserveBankvip
· 07-06 17:45
move tidak menarik lagi
Lihat AsliBalas0
RuntimeErrorvip
· 07-06 17:32
Sudah melihat masalahnya sejak awal.
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)