Ditemukan kerentanan integer overflow baru dalam bahasa Move
Baru-baru ini, sebuah kerentanan overflow integer baru dalam bahasa Move ditemukan. Kerentanan ini ada dalam proses pemeriksaan keamanan referensi pada tahap verifikasi kode, yang dapat menyebabkan serangan penolakan layanan.
Bahasa Move akan melakukan verifikasi kode sebelum mengeksekusi bytecode, yang dibagi menjadi empat langkah. Kerentanan kali ini muncul dalam langkah verifikasi keamanan referensi (reference_safety). Pemeriksaan keamanan referensi terutama memverifikasi apakah ada referensi yang menggantung dalam kode, apakah akses referensi yang dapat diubah aman, dan apakah akses referensi penyimpanan global aman.
Selama proses verifikasi, setiap blok dasar akan dianalisis. Blok dasar adalah urutan kode yang tidak memiliki instruksi cabang kecuali untuk masuk dan keluar. Move mengidentifikasi blok dasar dengan menjelajahi bytecode, mencari instruksi cabang dan loop.
Modul pemeriksaan keamanan referensi akan memindai instruksi bytecode dari setiap blok dasar dalam fungsi, untuk menentukan apakah operasi referensi legal. Proses utama meliputi: menjalankan kode blok dasar, menghasilkan status setelah eksekusi, menggabungkan status sebelum dan sesudah eksekusi untuk memperbarui status blok, dan menyebarkannya ke blok berikutnya.
Kerentanan muncul selama proses status penggabungan. Ketika jumlah parameter fungsi dan jumlah variabel lokal melebihi 256, karena menggunakan tipe u8 untuk penyimpanan, akan terjadi overflow integer. Ini mengakibatkan akses ke variabel lokal yang tidak ada dalam eksekusi berikutnya, yang menyebabkan panic.
Penyerang dapat membangun blok dasar yang berulang, memanfaatkan overflow ini untuk mengubah status blok. Saat dieksekusi lagi, mengakses indeks variabel lokal yang tidak ada akan menyebabkan penolakan layanan.
Vulnerability ini mencerminkan bahwa bahkan bahasa Move yang dirancang dengan ketat dapat memiliki celah keamanan yang dapat dilewati. Disarankan agar perancang bahasa Move menambahkan lebih banyak pemeriksaan saat runtime untuk mencegah situasi tak terduga serupa. Penelitian lebih lanjut tentang keamanan bahasa Move juga perlu diperkuat di masa depan.
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.
Kerentanan integer overflow ditemukan dalam pemeriksaan keamanan referensi bahasa Move, yang dapat menyebabkan denial-of-service attack.
Ditemukan kerentanan integer overflow baru dalam bahasa Move
Baru-baru ini, sebuah kerentanan overflow integer baru dalam bahasa Move ditemukan. Kerentanan ini ada dalam proses pemeriksaan keamanan referensi pada tahap verifikasi kode, yang dapat menyebabkan serangan penolakan layanan.
Bahasa Move akan melakukan verifikasi kode sebelum mengeksekusi bytecode, yang dibagi menjadi empat langkah. Kerentanan kali ini muncul dalam langkah verifikasi keamanan referensi (reference_safety). Pemeriksaan keamanan referensi terutama memverifikasi apakah ada referensi yang menggantung dalam kode, apakah akses referensi yang dapat diubah aman, dan apakah akses referensi penyimpanan global aman.
Selama proses verifikasi, setiap blok dasar akan dianalisis. Blok dasar adalah urutan kode yang tidak memiliki instruksi cabang kecuali untuk masuk dan keluar. Move mengidentifikasi blok dasar dengan menjelajahi bytecode, mencari instruksi cabang dan loop.
Modul pemeriksaan keamanan referensi akan memindai instruksi bytecode dari setiap blok dasar dalam fungsi, untuk menentukan apakah operasi referensi legal. Proses utama meliputi: menjalankan kode blok dasar, menghasilkan status setelah eksekusi, menggabungkan status sebelum dan sesudah eksekusi untuk memperbarui status blok, dan menyebarkannya ke blok berikutnya.
Kerentanan muncul selama proses status penggabungan. Ketika jumlah parameter fungsi dan jumlah variabel lokal melebihi 256, karena menggunakan tipe u8 untuk penyimpanan, akan terjadi overflow integer. Ini mengakibatkan akses ke variabel lokal yang tidak ada dalam eksekusi berikutnya, yang menyebabkan panic.
Penyerang dapat membangun blok dasar yang berulang, memanfaatkan overflow ini untuk mengubah status blok. Saat dieksekusi lagi, mengakses indeks variabel lokal yang tidak ada akan menyebabkan penolakan layanan.
Vulnerability ini mencerminkan bahwa bahkan bahasa Move yang dirancang dengan ketat dapat memiliki celah keamanan yang dapat dilewati. Disarankan agar perancang bahasa Move menambahkan lebih banyak pemeriksaan saat runtime untuk mencegah situasi tak terduga serupa. Penelitian lebih lanjut tentang keamanan bahasa Move juga perlu diperkuat di masa depan.