Modul keamanan referensi bahasa Move memiliki kerentanan overflow integer
Baru-baru ini, sebuah kerentanan serius berupa overflow integer ditemukan ada di modul keamanan referensi bahasa Move. Kerentanan ini dapat menyebabkan serangan penolakan layanan, yang menimbulkan ancaman potensial terhadap keamanan bahasa Move.
Bahasa Move akan melakukan verifikasi kode sebelum mengeksekusi bytecode, yang dibagi menjadi beberapa langkah. Kerentanan ini muncul pada langkah reference_safety, yang bertanggung jawab untuk memverifikasi keamanan referensi, termasuk memeriksa apakah ada referensi yang menggantung, dan apakah akses referensi yang dapat diubah aman.
Akar permasalahan terletak pada masalah overflow integer yang terjadi saat merujuk modul keamanan. Ketika jumlah parameter fungsi dan jumlah variabel lokal melebihi 256, penggunaan tipe u8 untuk mengiterasi variabel lokal dapat menyebabkan overflow integer. Overflow ini dapat dimanfaatkan untuk menghindari pemeriksaan keamanan, yang pada akhirnya dapat mengakibatkan serangan penolakan layanan.
Secara khusus, proses eksploitasi kerentanan adalah sebagai berikut:
Membuat sebuah blok kode Move yang berisi loop, sehingga dapat dieksekusi beberapa kali.
Atur banyak parameter fungsi dan variabel lokal, sehingga jumlah totalnya melebihi 256.
Pada eksekusi pertama, karena overflow integer, panjang peta locals yang baru akan menjadi nilai yang sangat kecil.
Dalam eksekusi berikutnya, mencoba mengakses indeks variabel lokal yang tidak ada, menyebabkan panic dan program crash.
Kerentanan ini mengungkapkan bahwa bahkan dalam bahasa yang mengutamakan keamanan seperti Move, masih mungkin ada celah keamanan yang terabaikan. Ini mengingatkan kita akan pentingnya audit kode, serta perlunya pertimbangan keamanan yang lebih komprehensif dalam desain bahasa.
Bagi pengguna dan pengembang bahasa Move, disarankan untuk selalu memperhatikan pembaruan keamanan resmi. Selain itu, saat menulis kode Move, juga perlu memperhatikan pengendalian jumlah parameter fungsi dan variabel lokal, agar terhindar dari situasi batas semacam ini.
Dari sudut pandang yang lebih makro, celah ini juga mencerminkan bahwa hanya mengandalkan verifikasi statis mungkin tidak cukup untuk menjamin keamanan yang sepenuhnya. Di masa depan, bahasa Move mungkin perlu menambahkan lebih banyak pemeriksaan dinamis pada saat runtime untuk mencegah masalah keamanan serupa.
Secara keseluruhan, penemuan kerentanan ini sekali lagi membuktikan pentingnya penelitian keamanan yang berkelanjutan untuk meningkatkan keamanan teknologi blockchain. Seiring dengan semakin luasnya penggunaan bahasa Move di bidang Web3, kami berharap dapat melihat lebih banyak langkah perbaikan keamanan diperkenalkan, untuk membangun ekosistem kontrak pintar yang lebih kuat dan dapat diandalkan.
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.
17 Suka
Hadiah
17
9
Bagikan
Komentar
0/400
FUDwatcher
· 07-11 15:51
Kerugian yang meluap, saya masih membicarakan Move minggu lalu
Lihat AsliBalas0
PriceOracleFairy
· 07-10 20:42
omg bergerak terkena rekt oleh overflow u8 dasar... bagaimana para auditor melewatkan ini smh
Ancaman kerentanan overflow integer modul keamanan yang dirujuk oleh bahasa Move terhadap keamanan kode
Modul keamanan referensi bahasa Move memiliki kerentanan overflow integer
Baru-baru ini, sebuah kerentanan serius berupa overflow integer ditemukan ada di modul keamanan referensi bahasa Move. Kerentanan ini dapat menyebabkan serangan penolakan layanan, yang menimbulkan ancaman potensial terhadap keamanan bahasa Move.
Bahasa Move akan melakukan verifikasi kode sebelum mengeksekusi bytecode, yang dibagi menjadi beberapa langkah. Kerentanan ini muncul pada langkah reference_safety, yang bertanggung jawab untuk memverifikasi keamanan referensi, termasuk memeriksa apakah ada referensi yang menggantung, dan apakah akses referensi yang dapat diubah aman.
Akar permasalahan terletak pada masalah overflow integer yang terjadi saat merujuk modul keamanan. Ketika jumlah parameter fungsi dan jumlah variabel lokal melebihi 256, penggunaan tipe u8 untuk mengiterasi variabel lokal dapat menyebabkan overflow integer. Overflow ini dapat dimanfaatkan untuk menghindari pemeriksaan keamanan, yang pada akhirnya dapat mengakibatkan serangan penolakan layanan.
Secara khusus, proses eksploitasi kerentanan adalah sebagai berikut:
Membuat sebuah blok kode Move yang berisi loop, sehingga dapat dieksekusi beberapa kali.
Atur banyak parameter fungsi dan variabel lokal, sehingga jumlah totalnya melebihi 256.
Pada eksekusi pertama, karena overflow integer, panjang peta locals yang baru akan menjadi nilai yang sangat kecil.
Dalam eksekusi berikutnya, mencoba mengakses indeks variabel lokal yang tidak ada, menyebabkan panic dan program crash.
Kerentanan ini mengungkapkan bahwa bahkan dalam bahasa yang mengutamakan keamanan seperti Move, masih mungkin ada celah keamanan yang terabaikan. Ini mengingatkan kita akan pentingnya audit kode, serta perlunya pertimbangan keamanan yang lebih komprehensif dalam desain bahasa.
Bagi pengguna dan pengembang bahasa Move, disarankan untuk selalu memperhatikan pembaruan keamanan resmi. Selain itu, saat menulis kode Move, juga perlu memperhatikan pengendalian jumlah parameter fungsi dan variabel lokal, agar terhindar dari situasi batas semacam ini.
Dari sudut pandang yang lebih makro, celah ini juga mencerminkan bahwa hanya mengandalkan verifikasi statis mungkin tidak cukup untuk menjamin keamanan yang sepenuhnya. Di masa depan, bahasa Move mungkin perlu menambahkan lebih banyak pemeriksaan dinamis pada saat runtime untuk mencegah masalah keamanan serupa.
Secara keseluruhan, penemuan kerentanan ini sekali lagi membuktikan pentingnya penelitian keamanan yang berkelanjutan untuk meningkatkan keamanan teknologi blockchain. Seiring dengan semakin luasnya penggunaan bahasa Move di bidang Web3, kami berharap dapat melihat lebih banyak langkah perbaikan keamanan diperkenalkan, untuk membangun ekosistem kontrak pintar yang lebih kuat dan dapat diandalkan.