Modul keamanan referensi bahasa Move memiliki kerentanan overflow integer
Baru-baru ini, peneliti keamanan menemukan kerentanan serius berupa overflow integer saat menganalisis bahasa Move secara mendalam. Kerentanan ini terdapat dalam modul verifikasi keamanan referensi, yang dapat menyebabkan serangan penolakan layanan. Artikel ini akan menjelaskan secara detail tentang prinsip dan dampak kerentanan ini.
Latar Belakang Kerentanan
Bahasa Move melakukan verifikasi kode sebelum mengeksekusi bytecode, yang mencakup pemeriksaan keamanan referensi. Proses ini dibagi menjadi beberapa langkah, dan kerentanan yang ditemukan kali ini terjadi pada tahap verifikasi reference_safety.
Proses utama verifikasi keamanan adalah:
Membagi kode menjadi blok dasar
Analisis setiap blok dasar
Menggabungkan analisis sebelum dan sesudah
Menyebarkan hasil ke blok berikutnya
Di mana digunakan struktur AbstractState untuk merepresentasikan status analisis, yang mencakup informasi locals dan grafik pinjaman.
Rincian Kerentanan
Kekurangan muncul di dalam fungsi join_ yang menganalisis status gabungan. Fungsi ini menggunakan tipe u8 untuk iterasi locals, tetapi jika jumlah panjang parameter dan panjang variabel lokal melebihi 256, akan terjadi overflow integer.
Secara spesifik:
menggunakan self.iter_locals() untuk mengiterasi locals di dalam fungsi join_
iter_locals() mengembalikan iterator tipe u8
Jika panjang parameter + panjang variabel lokal > 256, iterator akan meluap
Meskipun Move memiliki proses untuk memverifikasi jumlah locals, tetapi hanya memeriksa jumlah variabel lokal, tidak termasuk panjang parameter.
Eksploitasi Kerentanan
Penyerang dapat membangun blok kode loop, menggunakan overflow untuk mengubah status blok:
Atur jumlah parameter dan variabel lokal lebih dari 256
Setelah eksekusi pertama, panjang peta locals baru akan meluap menjadi lebih kecil
Menjalankan kembali, mengakses indeks locals yang tidak ada akan menyebabkan panic
Ini mungkin menyebabkan penolakan layanan node.
Dampak Kerentanan
Kerentanan ini dapat menyebabkan:
Pengverifikasi bytecode Move crash
Node blockchain yang bergantung pada Move menolak layanan
Melewati beberapa pemeriksaan keamanan
Saran Perbaikan
Menambahkan pemeriksaan panjang parameter dalam pemeriksaan batas locals.
Gunakan tipe integer yang lebih besar seperti u16 untuk mengiterasi locals
Menambahkan pemeriksaan keamanan tambahan saat runtime
Ringkasan
Kerentanan ini sekali lagi menunjukkan bahwa bahkan bahasa yang dirancang dengan cermat pun dapat memiliki risiko keamanan. Untuk bahasa Move, disarankan agar pemeriksaan keamanan yang diperlukan juga ditambahkan di luar tahap verifikasi, selama waktu eksekusi. Peneliti keamanan akan terus menganalisis bahasa Move secara mendalam untuk menemukan 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.
22 Suka
Hadiah
22
6
Posting ulang
Bagikan
Komentar
0/400
BackrowObserver
· 08-11 11:51
move sekali lagi mengalami kegagalan
Lihat AsliBalas0
MidnightTrader
· 08-10 07:32
Ini kode siapa lagi yang ditulis oleh pemula, saya menyerah.
Lihat AsliBalas0
MevShadowranger
· 08-10 07:30
Sekali lagi bermain dengan overflow bilangan bulat
Lihat AsliBalas0
WagmiOrRekt
· 08-10 07:29
还好我之前 tutup semua posisi Move了
Lihat AsliBalas0
CommunityWorker
· 08-10 07:27
move akan meledak lagi? Kenapa panik?
Lihat AsliBalas0
CryingOldWallet
· 08-10 07:26
Ada celah lagi? move juga tidak menarik lagi, kan?
Kerentanan overflow integer pada modul keamanan referensi Move dapat menyebabkan Node menolak layanan
Modul keamanan referensi bahasa Move memiliki kerentanan overflow integer
Baru-baru ini, peneliti keamanan menemukan kerentanan serius berupa overflow integer saat menganalisis bahasa Move secara mendalam. Kerentanan ini terdapat dalam modul verifikasi keamanan referensi, yang dapat menyebabkan serangan penolakan layanan. Artikel ini akan menjelaskan secara detail tentang prinsip dan dampak kerentanan ini.
Latar Belakang Kerentanan
Bahasa Move melakukan verifikasi kode sebelum mengeksekusi bytecode, yang mencakup pemeriksaan keamanan referensi. Proses ini dibagi menjadi beberapa langkah, dan kerentanan yang ditemukan kali ini terjadi pada tahap verifikasi reference_safety.
Proses utama verifikasi keamanan adalah:
Di mana digunakan struktur AbstractState untuk merepresentasikan status analisis, yang mencakup informasi locals dan grafik pinjaman.
Rincian Kerentanan
Kekurangan muncul di dalam fungsi join_ yang menganalisis status gabungan. Fungsi ini menggunakan tipe u8 untuk iterasi locals, tetapi jika jumlah panjang parameter dan panjang variabel lokal melebihi 256, akan terjadi overflow integer.
Secara spesifik:
Meskipun Move memiliki proses untuk memverifikasi jumlah locals, tetapi hanya memeriksa jumlah variabel lokal, tidak termasuk panjang parameter.
Eksploitasi Kerentanan
Penyerang dapat membangun blok kode loop, menggunakan overflow untuk mengubah status blok:
Ini mungkin menyebabkan penolakan layanan node.
Dampak Kerentanan
Kerentanan ini dapat menyebabkan:
Saran Perbaikan
Ringkasan
Kerentanan ini sekali lagi menunjukkan bahwa bahkan bahasa yang dirancang dengan cermat pun dapat memiliki risiko keamanan. Untuk bahasa Move, disarankan agar pemeriksaan keamanan yang diperlukan juga ditambahkan di luar tahap verifikasi, selama waktu eksekusi. Peneliti keamanan akan terus menganalisis bahasa Move secara mendalam untuk menemukan lebih banyak masalah potensial.