Kerentanan ini memungkinkan penyerang merusak memori dan berpotensi mengeksekusi kode arbitrer melalui muatan WebAssembly yang cacat.
“Sistem AI otonom Aisle mengungkap kerentanan kondisi batas yang halus ini selama penelaahan mendalam keamanan WebAssembly kami, yang mengungkapkan risiko keamanan memori yang signifikan bagi sekitar 180 juta pengguna Firefox,” ujar Stanislav Fort, pendiri dan kepala ilmuwan di AISLE, dalam sebuah postingan blog.
Ia menambahkan, “Mozilla bergerak cepat untuk menerapkan perbaikan. Peramban modern merupakan salah satu platform yang paling aman dan dirancang dengan sangat ketat yang ada, dan temuan ini menyoroti pentingnya penelitian keamanan berkelanjutan yang digerakkan oleh AI untuk menjaga keamanannya bagi pengguna di seluruh dunia.”
Kesalahan kode tersembunyi yang mengekspos pengguna Firefox
Inti dari kerentanan ini (CVE-2025-13016) adalah kesalahan aritmatika pointer yang halus dalam implementasi garbage-collection (GC) WebAssembly Firefox, khususnya dalam kelas StableWasmArrayObjectElements, di mana tipe pointer yang tidak cocok menyebabkan penyalinan data array inline yang salah.
Kode yang rentan ini menggunakan pointer beralamat byte (uint8_t*) untuk menentukan berapa banyak data yang akan disalin, tetapi data tersebut disalin ke buffer yang diketik sebagai uint16_t. Ketika templat diinstansiasi untuk nilai 16-bit, std::copy() menginterpretasikan rentang berbasis byte sebagai jumlah elemen yang diketik, alih-alih byte.
Akibatnya, buffer yang dimaksudkan untuk menampung N elemen 16-bit justru menerima 2N elemen, yang melampaui memori tumpukan dan merusak struktur data yang berdekatan. Masalah ini diperparah oleh kelemahan kedua: operasi penyalinan tidak membaca dari lokasi memori yang benar.
Alih-alih menggunakan pointer khusus untuk wilayah data array, kode tersebut diambil dari inlineStorage(), lokasi yang diawali dengan metadata objek internal.
Artinya, byte pertama yang disalin ke buffer sama sekali bukan isi array, melainkan informasi struktural tentang objek WebAssembly itu sendiri. Hal ini menimbulkan ketidakpastian tambahan dan meningkatkan kemungkinan memori yang rusak dapat dimanfaatkan sebagai senjata selama eksploitasi.
Kondisi yang dibutuhkan penyerang untuk mengeksploitasi bug Firefox
Tidak semua jalur eksekusi di Firefox menyentuh rutin yang cacat ini, sehingga kerentanannya tidak terdeteksi begitu lama.
Masalah ini hanya terjadi ketika Firefox kembali ke jalur yang lebih lambat dan mendukung GC untuk menangani larik WebAssembly, khususnya selama proses konversi larik tersebut menjadi string.
Dalam urutan yang umum, kode WebAssembly pertama-tama memanipulasi larik, misalnya larik char16_t. Firefox kemudian mencoba mengonversi larik tersebut menjadi string menggunakan operasi jalur cepat yang dirancang untuk menghindari pengumpulan sampah. Namun, ketika kondisi tertentu yang umumnya disebabkan oleh tekanan memori menyebabkan jalur cepat tersebut gagal, peramban beralih ke rutin fallback yang diizinkan GC.
Di dalam fallback inilah Firefox memanggil konstruktor StableWasmArrayObjectElements yang rentan, yang mengeksekusi operasi penyalinan yang cacat dan akhirnya membuat tumpukan meluap, merusak memori di sebelahnya.
Dalam skenario serangan praktis, penyerang dapat dengan sengaja membuat modul WebAssembly berbahaya untuk memanipulasi urutan ini demi keuntungan mereka.
Dengan membuat array dengan ukuran tertentu, secara sengaja mendorong browser ke tekanan memori untuk memaksa pengumpulan sampah, dan berulang kali memicu proses konversi array ke string, penyerang dapat dengan andal mendorong Firefox ke jalur fallback yang rentan.
Hal ini menciptakan lingkungan terkendali di mana kerusakan memori yang dihasilkan dapat diarahkan ke target yang dipilih di tumpukan.
Strategi mitigasi untuk kerentanan Firefox
Organisasi dapat mengurangi risiko kerentanan dengan menerapkan patch Firefox terbaru dan menerapkan langkah-langkah pertahanan berlapis tambahan untuk membatasi akses penyerang, menahan potensi eksploitasi, dan memperketat keamanan browser:
– Prioritaskan penerapan Firefox 145 atau yang lebih baru (atau ESR 140.5+) di semua sistem dan verifikasi kepatuhan versi di seluruh organisasi.
– Terapkan kebijakan manajemen peramban perusahaan untuk membatasi fitur berisiko tinggi, memperketat kontrol sandboxing, dan mengunci konfigurasi keamanan penting.
– Nonaktifkan WebAssembly untuk sementara di lingkungan di mana patching tidak dapat dilakukan segera, terutama pada titik akhir dengan paparan tinggi.
– Pantau log peramban, sinyal EDR, dan analisis kerusakan untuk kesalahan memori terkait WebAssembly atau perilaku proses Firefox yang tidak biasa.
– Gunakan pertahanan tingkat jaringan seperti pemfilteran DNS, gateway web aman, dan alat reputasi domain untuk memblokir konten web berbahaya atau mencurigakan.
– Terapkan isolasi peramban atau segmentasikan aktivitas penjelajahan berisiko tinggi untuk membendung ancaman dari pengguna yang secara teratur mengakses situs yang tidak tepercaya.
– Perkuat pertahanan titik akhir dan sistem operasi dengan menerapkan pengaturan mitigasi eksploitasi, sandboxing aplikasi, dan kontrol akses dengan hak istimewa paling rendah yang ketat.

