Kerentanan overflow integer ditemukan di modul keamanan referensi bahasa Move
Baru-baru ini, sebuah penelitian mendalam menemukan sebuah kerentanan overflow integer baru dalam bahasa Move. Kerentanan ini ada dalam proses verifikasi keamanan referensi, yang melibatkan beberapa konsep dan mekanisme inti dari bahasa Move.
Bahasa Move akan melakukan verifikasi kode sebelum mengeksekusi bytecode, yang terbagi menjadi empat langkah. Kerentanan yang baru ditemukan ini muncul dalam langkah reference_safety. Langkah ini bertanggung jawab untuk memverifikasi keamanan referensi, termasuk memeriksa apakah ada referensi yang menggantung, keamanan akses referensi yang dapat diubah, serta keamanan akses referensi penyimpanan global, dan sebagainya.
Inti dari verifikasi keamanan adalah menganalisis blok dasar dalam setiap fungsi. Blok dasar adalah urutan kode yang tidak memiliki instruksi cabang kecuali untuk titik masuk dan keluar. Bahasa Move mengidentifikasi blok dasar dengan menjelajahi bytecode, mencari semua instruksi cabang dan instruksi loop.
Selama proses verifikasi, sistem akan memelihara struktur AbstractState yang berisi informasi grafik pinjaman dan lokal, untuk memastikan keamanan referensi yang digunakan dalam fungsi. Proses verifikasi akan menjalankan kode blok dasar, menghasilkan status setelah eksekusi, kemudian menggabungkan status sebelum dan sesudah eksekusi, memperbarui status blok dan menyebarkannya ke blok berikutnya.
Kelemahan muncul pada fungsi join_. Ketika panjang parameter fungsi ditambah panjang variabel lokal melebihi 256, penggunaan tipe u8 untuk variabel lokal dapat menyebabkan overflow integer. Meskipun bahasa Move memiliki mekanisme untuk memeriksa jumlah locals, tetapi hanya memeriksa jumlah variabel lokal dan tidak termasuk panjang parameter.
Kerentanan overflow ini dapat menyebabkan serangan penolakan layanan. Penyerang dapat membangun blok kode loop yang memanfaatkan overflow untuk mengubah status blok. Ketika blok dasar dieksekusi lagi, jika indeks yang diperlukan oleh instruksi tidak ada dalam peta locals yang baru, itu akan menyebabkan sistem crash.
Untuk mendemonstrasikan kerentanan ini, peneliti menyediakan bukti konsep (PoC). Dengan mengatur parameter tertentu dan jumlah variabel lokal, integer overflow dapat dipicu, yang menyebabkan sistem panic.
Kerentanan ini mengungkapkan bahwa bahkan bahasa yang dirancang dengan ketat sekalipun dapat memiliki potensi masalah keamanan. Ini menekankan pentingnya audit kode, serta perlunya mempertimbangkan lebih banyak kasus batas dalam desain bahasa. Untuk bahasa Move, disarankan untuk menambahkan lebih banyak pemeriksaan keamanan pada saat runtime, bukan hanya mengandalkan mekanisme keamanan pada tahap verifikasi.
Dengan penggunaan luas bahasa Move di bidang Web3, penelitian mendalam dan penemuan potensi kerentanan semacam itu sangat penting untuk meningkatkan keamanan seluruh ekosistem. Para pengembang dan peneliti keamanan perlu tetap waspada, terus memantau, dan meningkatkan kinerja keamanan bahasa Move.
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.
14 Suka
Hadiah
14
9
Posting ulang
Bagikan
Komentar
0/400
GateUser-aa7df71e
· 08-19 18:48
Satu proyek lagi akan gagal, kelebihan pasti akan runtuh.
Lihat AsliBalas0
TokenVelocity
· 08-17 11:11
Bekerja keras selama dua tahun menghidupi semua orang, kehilangan segalanya, hanya aku yang terus melangkah maju, 3000 hari mimpi berwirausaha terbangun.
Lihat AsliBalas0
GateUser-0717ab66
· 08-16 22:28
Siapa yang meluap siapa sb
Lihat AsliBalas0
ForumLurker
· 08-16 22:27
move lagi bikin masalah ya?
Lihat AsliBalas0
TokenTaxonomist
· 08-16 22:23
secara statistik, ini adalah jalan buntu evolusi lain untuk bergerak... tidak terkejut sejujurnya
Lihat AsliBalas0
SolidityStruggler
· 08-16 22:20
Kebocoran overflow sangat mengganggu...
Lihat AsliBalas0
RiddleMaster
· 08-16 22:10
Ini adalah kerentanan overflow lagi, tidak ada akhirnya.
Modul keamanan referensi Move menemukan kerentanan overflow integer yang dapat menyebabkan serangan konstruktif atau menyebabkan sistem crash.
Kerentanan overflow integer ditemukan di modul keamanan referensi bahasa Move
Baru-baru ini, sebuah penelitian mendalam menemukan sebuah kerentanan overflow integer baru dalam bahasa Move. Kerentanan ini ada dalam proses verifikasi keamanan referensi, yang melibatkan beberapa konsep dan mekanisme inti dari bahasa Move.
Bahasa Move akan melakukan verifikasi kode sebelum mengeksekusi bytecode, yang terbagi menjadi empat langkah. Kerentanan yang baru ditemukan ini muncul dalam langkah reference_safety. Langkah ini bertanggung jawab untuk memverifikasi keamanan referensi, termasuk memeriksa apakah ada referensi yang menggantung, keamanan akses referensi yang dapat diubah, serta keamanan akses referensi penyimpanan global, dan sebagainya.
Inti dari verifikasi keamanan adalah menganalisis blok dasar dalam setiap fungsi. Blok dasar adalah urutan kode yang tidak memiliki instruksi cabang kecuali untuk titik masuk dan keluar. Bahasa Move mengidentifikasi blok dasar dengan menjelajahi bytecode, mencari semua instruksi cabang dan instruksi loop.
Selama proses verifikasi, sistem akan memelihara struktur AbstractState yang berisi informasi grafik pinjaman dan lokal, untuk memastikan keamanan referensi yang digunakan dalam fungsi. Proses verifikasi akan menjalankan kode blok dasar, menghasilkan status setelah eksekusi, kemudian menggabungkan status sebelum dan sesudah eksekusi, memperbarui status blok dan menyebarkannya ke blok berikutnya.
Kelemahan muncul pada fungsi join_. Ketika panjang parameter fungsi ditambah panjang variabel lokal melebihi 256, penggunaan tipe u8 untuk variabel lokal dapat menyebabkan overflow integer. Meskipun bahasa Move memiliki mekanisme untuk memeriksa jumlah locals, tetapi hanya memeriksa jumlah variabel lokal dan tidak termasuk panjang parameter.
Kerentanan overflow ini dapat menyebabkan serangan penolakan layanan. Penyerang dapat membangun blok kode loop yang memanfaatkan overflow untuk mengubah status blok. Ketika blok dasar dieksekusi lagi, jika indeks yang diperlukan oleh instruksi tidak ada dalam peta locals yang baru, itu akan menyebabkan sistem crash.
Untuk mendemonstrasikan kerentanan ini, peneliti menyediakan bukti konsep (PoC). Dengan mengatur parameter tertentu dan jumlah variabel lokal, integer overflow dapat dipicu, yang menyebabkan sistem panic.
Kerentanan ini mengungkapkan bahwa bahkan bahasa yang dirancang dengan ketat sekalipun dapat memiliki potensi masalah keamanan. Ini menekankan pentingnya audit kode, serta perlunya mempertimbangkan lebih banyak kasus batas dalam desain bahasa. Untuk bahasa Move, disarankan untuk menambahkan lebih banyak pemeriksaan keamanan pada saat runtime, bukan hanya mengandalkan mekanisme keamanan pada tahap verifikasi.
Dengan penggunaan luas bahasa Move di bidang Web3, penelitian mendalam dan penemuan potensi kerentanan semacam itu sangat penting untuk meningkatkan keamanan seluruh ekosistem. Para pengembang dan peneliti keamanan perlu tetap waspada, terus memantau, dan meningkatkan kinerja keamanan bahasa Move.