- Mozilla membangun pipeline untuk menemukan bug keamanan nyata dalam skala besar di Firefox dengan meningkatkan performa model dan menyempurnakan harness guna meningkatkan sinyal serta mengurangi noise pada laporan keamanan buatan AI
- Pada rilis Firefox 150, 271 bug yang diidentifikasi oleh Claude Mythos Preview telah diperbaiki, dan perbaikan terkait juga disertakan di 149.0.2, 150.0.1, dan 150.0.2
- Bug perwakilan yang diungkap mencakup primitive objek palsu akibat penghapusan inisialisasi struct WebAssembly GC di JIT, UAF pada proses induk melalui race condition IPC, masalah deserialisasi NaN, bug rehash XSLT berusia 20 tahun, dan overflow bitfield layout 16-bit menggunakan
rowspan=0
- Sebagian besar bug yang diungkap adalah pelarian sandbox, dengan asumsi proses konten yang telah dikompromikan menaikkan hak akses ke proses induk yang memiliki privilese, sehingga analisis AI dapat menjangkau permukaan serangan yang sulit ditemukan hanya dengan fuzzing
- Mozilla menambahkan harness agentic di atas infrastruktur fuzzing yang sudah ada untuk membuang dugaan yang tidak dapat direproduksi dan memverifikasi hipotesis dengan test case, serta berencana mengintegrasikannya ke continuous integration agar pemindaian dilakukan saat patch masuk ke tree
Perubahan dalam bug keamanan Firefox yang terungkap oleh model AI
- Hingga beberapa bulan lalu, laporan bug keamanan buatan AI yang masuk ke proyek open source sering tampak meyakinkan tetapi salah, sehingga menciptakan biaya asimetris bagi maintainer
- Di Firefox, situasinya berubah besar dalam waktu singkat, dan alasan utamanya adalah peningkatan performa model serta perbaikan teknik untuk mengarahkan, memperluas, dan menggabungkan model dengan harness guna meningkatkan sinyal dan menyaring noise
- Mozilla biasanya tetap merahasiakan laporan bug terperinci selama beberapa bulan bahkan setelah advisory keamanan dan distribusi perbaikan dirilis, tetapi kali ini memutuskan untuk membuka sebagian laporan dengan mempertimbangkan urgensi dan perhatian di seluruh ekosistem
- Laporan yang diungkap dipilih dari berbagai subsistem browser; pemilihannya agak acak, tetapi kedalaman dan keragaman laporan menunjukkan bahwa para defender perlu menerapkan teknik ini
Bug perwakilan yang diungkap
- 2024918
- Karena pemeriksaan kesetaraan yang salah, JIT menghapus inisialisasi struct WebAssembly GC yang masih hidup sebagai optimisasi, dan ini dapat menciptakan primitive objek palsu yang berpotensi terhubung ke pembacaan dan penulisan arbitrer pada kode yang telah melalui fuzzing ekstensif oleh peneliti internal maupun eksternal
- 2024437
- Bug berusia 15 tahun pada elemen
<legend>, yang dipicu lewat kombinasi cermat edge case dari area browser yang saling berjauhan seperti batas kedalaman stack rekursif, properti expando, dan cycle collection
- 2021894
- Race condition IPC dapat dieksploitasi secara andal sehingga proses konten yang telah dikompromikan dapat memanipulasi reference count IndexedDB pada proses induk, menimbulkan UAF dan potensi pelarian sandbox
- 2022034
- NaN mentah dapat terlihat seperti pointer objek JS bertag saat melintasi batas IPC, sehingga deserialisasi double dapat berujung pada primitive objek palsu di proses induk dan pelarian sandbox
- 2024653
- Test case kompleks yang menggabungkan nested event loop, listener
pagehide, dan garbage collection memicu UAF pada setter properti elemen <object>
- 2022733
- Dengan mendorong ribuan hash sertifikat ke WebTransport, race condition pada loop penyalinan dengan reference count tinggi diperbesar, lalu memicu UAF pada proses induk melalui IPC dari proses konten yang telah dikompromikan
- 2023958
- Dengan mencegat pemanggilan fungsi DNS glibc dan mensimulasikan server DNS berbahaya, edge case fallback dari UDP ke TCP direproduksi untuk memicu pembacaan buffer berlebih dan kebocoran memori stack proses induk saat parsing HTTPS RR dan ECH
- 2025977
- Ini adalah bug XSLT berusia 20 tahun di mana pemanggilan
key() yang reentrant memicu rehash hash table dan membebaskan backing store, tetapi pointer entri mentah tetap dipakai; ini juga salah satu dari beberapa masalah XSLT sec-high yang telah diperbaiki
- 2027298
- Setelah mem-patch color picker untuk mensimulasikan pilihan pengguna yang sulit diotomatisasi, nested event loop dijalankan lewat event input sinkron untuk masuk ulang ke actor teardown dan menyebabkan callback dibebaskan saat sedang di-unwind, sehingga memicu UAF pada proses konten
- 2023817
- Proses konten yang telah dikompromikan dapat mengirim gambar wallpaper arbitrer untuk didekodekan oleh proses induk, dan bila digabungkan dengan kerentanan decoder gambar hipotetis dapat berujung pada pelarian sandbox
- Diperlukan penalaran yang sulit diotomatisasi untuk menilai tingkat kepercayaan input pada proses induk
- 2029813
- Pada RLBox, teknologi sandboxing granular Firefox 95, sandbox dapat dilewati dengan memanfaatkan celah pada logika validasi yang menyalin nilai dari sisi tak tepercaya ke sisi tepercaya
- 2026305
- Dengan test case yang sangat kecil yang memanfaatkan makna khusus
rowspan=0 pada tabel HTML, lebih dari >65535 baris ditambahkan untuk melewati clamping dan menyebabkan overflow pada bitfield layout 16-bit, dan bug ini luput dari fuzzer selama bertahun-tahun
Pelarian sandbox dan lapisan pertahanan
- Sebagian besar bug yang diungkap adalah pelarian sandbox, dan untuk berkembang menjadi kompromi rantai penuh Firefox, bug-bug ini harus digabungkan dengan exploit lain
- Laporan semacam ini mengasumsikan bahwa proses sandbox yang merender konten situs sudah lebih dulu dikompromikan oleh bug terpisah, lalu kode mesin yang dikendalikan penyerang berupaya menaikkan hak akses ke proses induk yang memiliki privilese
- Saat membuat pelarian sandbox, model dapat mem-patch source code Firefox selama kode yang dimodifikasi hanya berjalan di dalam proses sandbox
- Jenis bug ini sulit ditemukan dengan fuzzing, dan Mozilla telah mengembangkan teknik seperti IPC fuzzing with snapshots, tetapi analisis AI mampu menjangkau permukaan penting ini dengan jauh lebih menyeluruh
- Bagian yang tidak ditemukan model juga penting
- Dalam beberapa tahun terakhir, peneliti keamanan telah mengirim beberapa laporan tentang pemicu prototype pollution pada proses induk berprivilese untuk melarikan diri dari sandbox proses
- Alih-alih memperbaiki masalah satu per satu, Mozilla menerapkan perubahan arsitektur untuk membekukan prototype secara default
- Dalam log harness terlihat banyak jejak percobaan jalur pelarian ini yang terhalang oleh desain, yang mengonfirmasi efek langsung dari pekerjaan hardening sebelumnya
Membangun pipeline penguatan keamanan dengan harness
- Dalam beberapa tahun terakhir, Mozilla secara internal melakukan eksperimen audit kode LLM untuk menganalisis statis kode berisiko tinggi dengan model seperti GPT 4 dan Sonnet 3.5
- Eksperimen awal menunjukkan potensi, tetapi rasio false positive terlalu tinggi sehingga sulit diperluas skalanya
- Situasi berubah dengan hadirnya harness agentic yang dapat mendeteksi masalah keamanan secara andal
- Dapat menemukan bug nyata
- Dapat membuang dugaan yang tidak dapat direproduksi
- Dengan antarmuka dan instruksi yang tepat, dapat membuat serta menjalankan test case yang dapat direproduksi untuk memverifikasi hipotesis bug kode secara dinamis
- Setelah memperbaiki issue awal yang dikirim Anthropic pada Februari, Mozilla membangun harness sendiri di atas infrastruktur fuzzing yang sudah ada
- Pada awalnya, eksperimen skala kecil dimulai dengan Claude Opus 4.6 untuk mencari pelarian sandbox
- Bahkan model ini saja sudah mengidentifikasi cukup banyak kerentanan yang sebelumnya tidak diketahui, yang memerlukan penalaran kompleks atas kode engine browser multiproses
- Pada awalnya mereka mengamati proses langsung dari terminal sambil menyesuaikan prompt dan logika secara real time
- Setelah operasinya stabil, pekerjaan diparalelkan ke beberapa VM ephemeral, dan tiap VM mencari bug di file target tertentu lalu mencatat hasilnya ke bucket
- Hanya menemukan subsistem saja tidak cukup
- Perlu diintegrasikan dengan seluruh siklus hidup bug keamanan, termasuk apa yang dicari, di mana melihat, dan bagaimana menangani hasilnya
- Ini termasuk deduplikasi terhadap issue yang ada, pelacakan bug, triage, hingga distribusi perbaikan
- Model adalah elemen primitive inti yang menggerakkan harness, tetapi agar berguna dalam skala besar diperlukan pipeline menyeluruh
- Harness memiliki potensi untuk digunakan ulang lintas proyek, tetapi pipeline berbeda untuk tiap proyek tergantung makna codebase, alat, dan prosesnya
- Diperlukan banyak iterasi dengan loop umpan balik yang erat bersama proses para engineer Firefox menangani bug yang masuk
Claude Mythos Preview dan dampak pergantian model
- Setelah pipeline end-to-end tersedia, mengganti ke model lain saat model baru muncul menjadi hal yang sederhana
- Mozilla menemukan berbagai bug serius juga dengan model terbuka, dan berkat pipeline ini dapat langsung memanfaatkannya saat mendapat kesempatan mengevaluasi Claude Mythos Preview
- Upgrade model meningkatkan efektivitas seluruh pipeline
- Lebih baik menemukan bug potensial
- Lebih baik membuat test case proof-of-concept yang membuktikan bug
- Lebih baik merangkum patologi dan dampaknya
- Selain memperbaiki 271 bug yang diidentifikasi Claude Mythos Preview pada rilis Firefox 150, perbaikan terkait juga disertakan di 149.0.2, 150.0.1, dan 150.0.2
- Secara internal, bug terus ditemukan juga dengan metode lain, dan seperti proyek lain, laporan eksternal juga meningkat tajam dalam beberapa bulan terakhir
- Semua bug memerlukan perhatian cermat agar dapat diperbaiki dengan benar, dan dalam beberapa bulan terakhir banyak pekerjaan serta jam kerja panjang dijalani untuk mengejar skala yang belum pernah terjadi sebelumnya ini
- Lebih dari 100 orang berpartisipasi memberi kontribusi kode untuk merilis Firefox yang paling aman, dan selain penulisan serta review patch, mereka juga membangun dan memperluas pipeline, melakukan triage, menguji perbaikan, dan mengelola proses rilis tiap bug
Pelajaran utama
- Siapa pun yang membuat perangkat lunak kini dapat menemukan bug dan memperkuat kode dengan model modern dan harness
- Dapat dimulai dari prompt sederhana, lalu diamati dan diiterasi
- Prompt awal tidak jauh berbeda dari pendekatan yang ditunjukkan dalam video ini
- Seiring iterasi, banyak orchestration dan alat ditambahkan untuk mengoptimalkan dan memperluas pipeline, tetapi inti loop internalnya adalah “temukan bug di bagian kode ini dan buat test case-nya”
- Potensi bug di Firefox belum sepenuhnya habis ditemukan, tetapi mereka puas dengan lintasan saat ini
- Pemindaian saat ini umumnya berfokus pada area kode tertentu yang ditentukan, yaitu file dan fungsi, dengan campuran penilaian manusia dan sinyal otomatis
- Dalam waktu dekat, mereka berencana mengintegrasikan analisis ini ke sistem continuous integration agar pemindaian dilakukan saat patch masuk ke tree
- Model fleksibel terhadap format konteks yang diberikan, dan pemindaian berbasis patch diperkirakan dapat bekerja setara atau bahkan lebih baik daripada pemindaian berbasis file
- Saat ini penuh risiko, tetapi juga peluang besar, dan semua pihak perlu bergerak bersama untuk membuat internet lebih aman
Pertanyaan yang sering diajukan
-
Alasan angka “271 bug” berbeda dari jumlah advisory keamanan
- Di halaman advisory keamanan, bug laporan internal dikelompokkan menjadi CVE “rollup” yang membundel beberapa bug di bawahnya
- Halaman web tersebut dibuat dari yaml di repositori foundation-security-advisories, yang merupakan lokasi resmi penetapan CVE
- Sebagian browser tidak membuat pengenal CVE untuk issue yang ditemukan secara internal, tetapi Mozilla mengungkapkannya agar informasi tersedia setransparan mungkin
- Firefox 150 memiliki 3 rollup internal
- CVE-2026-6784: 154 bug
- CVE-2026-6785: 55 bug
- CVE-2026-6786: 107 bug
- Jumlah tiga rollup internal adalah 316, lebih banyak daripada 271 bug yang diumumkan ditemukan dengan Claude Mythos Preview
- Alasannya adalah tim keamanan Mozilla menyerang Firefox setiap hari untuk menemukan bug baru, dan caranya merupakan gabungan sistem fuzzing, inspeksi manual, serta pipeline agentic baru yang memanfaatkan berbagai model
- Pada rilis April, total 423 bug keamanan diperbaiki
- 271 bug yang diumumkan dua minggu lalu
- 41 bug laporan eksternal
- 111 sisanya ditemukan secara internal dan secara kasar terbagi menjadi tiga kategori
- Bug yang ditemukan pipeline ini menggunakan Claude Mythos Preview tetapi diperbaiki di rilis lain, bukan Firefox 150
- Bug yang ditemukan pipeline ini menggunakan model lain
- Bug yang ditemukan dengan teknik lain seperti fuzzing
- Anthropic juga mendapat kredit langsung untuk 3 CVE yang terpisah dari pekerjaan terbaru ini
- CVE-2026-6746
- CVE-2026-6757
- CVE-2026-6758
- Ketiganya adalah perbaikan bug yang dikirim Anthropic Frontier Red Team ke Mozilla beberapa bulan lalu, dan masing-masing diberi CVE unik sesuai prosedur umum
-
Arti peringkat tingkat keparahan keamanan
- Mozilla menggunakan security severity ratings dari critical hingga low untuk menunjukkan tingkat urgensi bug
- sec-critical dan sec-high diberikan pada kerentanan yang dapat dipicu oleh tindakan pengguna biasa seperti mengunjungi halaman web
- Tidak ada perbedaan teknis antara sec-critical dan sec-high, tetapi sec-critical hanya dipakai untuk issue yang telah diungkap publik atau diketahui telah dieksploitasi dalam serangan nyata
- sec-moderate diberikan pada kerentanan yang aslinya akan dinilai sec-high tetapi memerlukan langkah yang tidak normal dan rumit dari korban
- sec-low diberikan pada bug yang mengganggu tetapi jauh dari membahayakan pengguna, seperti crash yang aman
- Peringkat untuk 271 bug yang diumumkan pada Firefox 150 adalah sebagai berikut
- sec-high 180 bug
- sec-moderate 80 bug
- sec-low 11 bug
- Mozilla paling memprioritaskan bug critical/high, tetapi juga umum memprioritaskan bug keamanan moderate dan low untuk memperbaiki masalah correctness dan pertahanan berlapis
-
Perbedaan sec-high atau sec-critical dengan exploit nyata
- Bug sec-high atau sec-critical tidak otomatis berarti exploit yang praktis
- Dalam sebagian besar kasus, satu bug critical/high saja tidak cukup untuk mengompromikan Firefox
- Firefox memiliki arsitektur pertahanan berlapis; misalnya, bahkan jika bug JIT dieksploitasi, hasilnya biasanya hanya remote code execution di proses yang disandbox dan diisolasi per situs
- Penyerang nyata biasanya harus merangkai beberapa exploit untuk melewati satu atau lebih lapisan sandboxing serta mitigasi tingkat OS seperti ASLR demi menaikkan hak akses
- Mozilla umumnya tidak membuat exploit untuk memverifikasi apakah bug benar-benar bisa digunakan penyerang nyata
- Klasifikasi sec-high didasarkan pada gejala crash yang dapat diprediksi seperti use-after-free atau masalah memori out-of-bounds yang dilaporkan oleh AddressSanitizer
- Threat model mengasumsikan bahwa dengan upaya yang cukup, bug semacam ini mungkin dapat dieksploitasi
- Pendekatan ini mengurangi risiko false negative dalam analisis kemungkinan eksploitasi dan memungkinkan sumber daya lebih difokuskan untuk menemukan serta memperbaiki lebih banyak kerentanan
1 komentar
Opini di Lobste.rs
Semoga mereka juga merilis prompt dan fitur-fitur lain yang dipakai untuk pekerjaan ini
Akan bagus kalau prompt disertakan dalam laporan bug atau catatan perbaikan agar bisa direproduksi
Karena model non-Mythos juga disebutkan, sebagian dari pekerjaan ini tampaknya bisa langsung berguna bagi orang lain juga
Pada dasarnya cukup bilang, “Tinjau proyek ini dari sudut pandang isu keamanan, mulai dari (file), lalu daftarkan semua jalur yang mungkin,” lalu untuk tiap item lanjutkan dengan, “Verifikasi laporan ini dan buatkan proof of concept.”
Sekarang, dengan Opus, justru lebih sulit untuk tidak menemukan sesuatu dengan cara seperti ini
Apa pun pendapat orang, ini benar-benar mengesankan
Mereka menemukan 271 isu keamanan dengan Mythos, dan total 423 secara keseluruhan
Di antaranya 180 berkategori keparahan tinggi, dan beberapa isu keamanan itu sudah berumur 20 tahun
Tulisannya memberi kesan seolah Mythos menemukan “271 bug” pada kode yang sebelumnya dipindai dengan 4.6 dengan cara yang sama, tetapi artikelnya sendiri tidak mengatakan itu secara persis
Saya juga penasaran apakah harness penelitian mereka berubah pada saat yang sama
Bagian “salah satu dari beberapa isu sec-high yang kami perbaiki terkait XSLT” tampaknya dimasukkan karena kontroversi penghapusan XSLT
Yang paling membuat saya penasaran di sini adalah berapa banyak false positive yang juga dilaporkan
Saya penasaran apakah model itu melaporkan potensi kerentanan sekitar dua kali lebih banyak, dan yang ditampilkan di sini hanya yang sudah terkonfirmasi
Saya juga tidak tahu apakah model itu mereproduksinya sendiri sebelum melapor
Kalau melihat isu-isu yang dipublikasikan, tampak ada komentar yang mencoba mereproduksinya, meski itu juga bisa saja dilakukan oleh bot yang sudah ada sebelumnya
Saya kurang tahu bagaimana Firefox biasanya menangani hal seperti ini, atau bagaimana mereka melakukannya sekarang bersama AI, jadi penjelasan yang lebih rinci akan sangat menarik