Penemuan baru bahasa Move tentang kerentanan overflow integer
Baru-baru ini, peneliti keamanan menemukan kerentanan integer overflow baru saat menganalisis bahasa Move secara mendalam. Kerentanan ini terjadi dalam proses verifikasi keamanan referensi bahasa Move, yang dapat menyebabkan node mengalami crash.
Bahasa Move melakukan verifikasi kode sebelum mengeksekusi bytecode, yang dibagi menjadi empat langkah. Kerentanan ini ada di langkah reference_safety. Verifikasi keamanan referensi terutama memeriksa apakah ada referensi yang menggantung, apakah akses referensi yang dapat diubah aman, dan apakah akses referensi penyimpanan global aman, dll.
Proses verifikasi akan menganalisis setiap blok dasar. Blok dasar adalah urutan kode tanpa instruksi cabang selain dari titik masuk dan keluar. Move mengidentifikasi blok dasar dengan menjelajahi bytecode, mencari instruksi cabang dan instruksi loop.
Proses utama untuk memverifikasi keamanan referensi adalah: menjalankan kode untuk setiap blok dasar, menghasilkan status setelah eksekusi, kemudian menggabungkan status sebelum dan sesudah eksekusi, memperbarui status blok dan menyebarkannya ke blok berikutnya. Proses ini akan diulang terus-menerus sampai status tidak lagi berubah atau terjadi kesalahan.
Kerentanan muncul selama proses status penggabungan. Jika panjang parameter fungsi ditambah panjang variabel lokal lebih dari 256, itu akan menyebabkan overflow tipe u8. Meskipun ada pemeriksaan kode untuk jumlah variabel lokal, tetapi tidak termasuk panjang parameter.
Dengan memanfaatkan overflow ini, Anda dapat mengubah status blok, sehingga status baru dan lama menjadi berbeda. Saat blok dasar dieksekusi lagi, mengakses indeks yang tidak ada dalam status baru akan menyebabkan program crash.
Peneliti telah memberikan kode bukti konsep yang dapat memicu kerentanan ini yang menyebabkan node crash. Ini menunjukkan bahwa bahkan bahasa dengan tipe statis pun dapat memiliki masalah keamanan, sehingga audit kode sangat penting. Disarankan agar bahasa Move menambahkan lebih banyak pemeriksaan keamanan pada saat runtime, bukan hanya pada tahap verifikasi.
Penemuan celah ini sekali lagi menunjukkan bahwa tidak ada kode yang sepenuhnya aman. Bahkan bahasa tipe kuat pun dapat memiliki celah. Peneliti keamanan akan terus menganalisis bahasa Move, mencari lebih banyak masalah potensial.
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.
9 Suka
Hadiah
9
7
Posting ulang
Bagikan
Komentar
0/400
BlockchainRetirementHome
· 5jam yang lalu
Apakah Move akan dingin?
Lihat AsliBalas0
MemeEchoer
· 5jam yang lalu
Sudah crash lagi, ini sudah kali berapa hari ini?
Lihat AsliBalas0
AirdropBlackHole
· 5jam yang lalu
Gelombang tren ini sudah berada di pihaknya~ move lagi meledak
Lihat AsliBalas0
UncleLiquidation
· 5jam yang lalu
Sekali lagi harus memperbaiki panci ya
Lihat AsliBalas0
MidnightSnapHunter
· 5jam yang lalu
move sudah dingin
Lihat AsliBalas0
ApeWithNoChain
· 6jam yang lalu
move sudah crash lagi? Sudah tidak layak diharapkan...
Penemuan baru dalam bahasa Move tentang kerentanan overflow integer yang dapat menyebabkan Node crash
Penemuan baru bahasa Move tentang kerentanan overflow integer
Baru-baru ini, peneliti keamanan menemukan kerentanan integer overflow baru saat menganalisis bahasa Move secara mendalam. Kerentanan ini terjadi dalam proses verifikasi keamanan referensi bahasa Move, yang dapat menyebabkan node mengalami crash.
Bahasa Move melakukan verifikasi kode sebelum mengeksekusi bytecode, yang dibagi menjadi empat langkah. Kerentanan ini ada di langkah reference_safety. Verifikasi keamanan referensi terutama memeriksa apakah ada referensi yang menggantung, apakah akses referensi yang dapat diubah aman, dan apakah akses referensi penyimpanan global aman, dll.
Proses verifikasi akan menganalisis setiap blok dasar. Blok dasar adalah urutan kode tanpa instruksi cabang selain dari titik masuk dan keluar. Move mengidentifikasi blok dasar dengan menjelajahi bytecode, mencari instruksi cabang dan instruksi loop.
Proses utama untuk memverifikasi keamanan referensi adalah: menjalankan kode untuk setiap blok dasar, menghasilkan status setelah eksekusi, kemudian menggabungkan status sebelum dan sesudah eksekusi, memperbarui status blok dan menyebarkannya ke blok berikutnya. Proses ini akan diulang terus-menerus sampai status tidak lagi berubah atau terjadi kesalahan.
Kerentanan muncul selama proses status penggabungan. Jika panjang parameter fungsi ditambah panjang variabel lokal lebih dari 256, itu akan menyebabkan overflow tipe u8. Meskipun ada pemeriksaan kode untuk jumlah variabel lokal, tetapi tidak termasuk panjang parameter.
Dengan memanfaatkan overflow ini, Anda dapat mengubah status blok, sehingga status baru dan lama menjadi berbeda. Saat blok dasar dieksekusi lagi, mengakses indeks yang tidak ada dalam status baru akan menyebabkan program crash.
Peneliti telah memberikan kode bukti konsep yang dapat memicu kerentanan ini yang menyebabkan node crash. Ini menunjukkan bahwa bahkan bahasa dengan tipe statis pun dapat memiliki masalah keamanan, sehingga audit kode sangat penting. Disarankan agar bahasa Move menambahkan lebih banyak pemeriksaan keamanan pada saat runtime, bukan hanya pada tahap verifikasi.
Penemuan celah ini sekali lagi menunjukkan bahwa tidak ada kode yang sepenuhnya aman. Bahkan bahasa tipe kuat pun dapat memiliki celah. Peneliti keamanan akan terus menganalisis bahasa Move, mencari lebih banyak masalah potensial.