Sebuah kelemahan berupa kerusakan memori pada komponen decoder Brotli buatan Google bersarang di dalam berbagai aplikasi yang mengekstrak data terkompresi Brotli, mencakup Bun, modul Python Brotli dan brotlicffi, hingga proksi Envoy yang dikonfigurasi untuk mengekstrak data Brotli.
Diberi kode pelacakan CVE-2026-111497, celah keamanan ini memungkinkan data terkompresi yang dirancang secara khusus untuk menimpa area di luar batas buffer dan merusak memori sistem, yang berpotensi memicu kerusakan aplikasi, kebocoran memori, hingga eksekusi kode berbahaya oleh peretas.
Para periset dari Imperva berhasil memperlihatkan bahwa kode tak bertanggung jawab dapat dieksekusi pada versi kompilasi Node.js tertentu yang belum ditambal. Namun, demonstrasi serupa belum pernah dibuktikan pada perangkat lunak lain yang terdampak, dan saat ini belum ditemukan laporan insiden serangan langsung di dunia nyata.
Kerentanan ini pertama kali diumumkan ke ranah publik pada 21 Oktober ketika pihak Node.js bersama Google meluncurkan tambalan resmi, disusul rilis perbaikan untuk produk-produk lain secara bertahap. Dikarenakan kekutu tersebut berakar langsung di decoder milik Google dan setiap pengembang menyematkan salinan mandiri dari kode tersebut, maka setiap ekosistem terpaksa memperbarui pustakanya masing-masing secara terpisah.
Brotli sendiri merupakan format kompresi ciptaan Google yang diadopsi secara luas di seluruh penjuru internet untuk mengecilkan ukuran data peramban dan lalu lintas jaringan. Karena cacat logika ini berada pada baris kode bahasa C yang bertugas mengekstrak berkas Brotli, bahaya keamanan otomatis menjalar ke perangkat lunak apa pun yang memanfaatkan ulang kode dasar tersebut, mulai dari runtime bahasa pemrograman, sistem proksi, sampai pustaka modul Python.
Daftar Perangkat Lunak yang Terdampak
Suatu sistem hanya terancam apabila sistem itu mengurai muatan kompresi Brotli yang bersumber dari pihak luar tanpa verifikasi ketat. Di dalam Node.js dan Bun, skenario kerentanan tercipta ketika fungsi bawaan fetch() menerima respons bermuatan Content-Encoding: br, atau manakala modul pembaca badan permintaan seperti Express 5 dan body-parser 2 memproses data unggahan berformat Brotli. Server dasar Node.js HTTP secara mandiri sejatinya tidak melakukan dekode terhadap isi badan data permintaan.
Adapun untuk Envoy dan Istio, ancaman ini hanya akan aktif apabila konfigurasi dekompresi Brotli sengaja diaktifkan secara eksplisit, misalnya melalui aturan filter Envoy. Pada sistem yang mematikan fitur tersebut, celah eksploitasi mustahil untuk diakses.
Sementara di lingkungan bahasa Python, bahaya kerentanan hadir hanya dengan terpasangnya paket pustaka Brotli atau brotlicffi ke dalam sistem. Begitu salah satu dari kedua paket terinstal, klien protokol HTTP populer seperti requests, urllib3, httpx, serta aiohttp akan langsung mendekode respons Brotli secara otomatis tanpa meminta konfirmasi pengguna, sehingga aplikasi rentan dieksploitasi kendati berkas kode aplikasi Anda tidak pernah secara langsung mengimpor Brotli.
Pemasangan Web Application Firewall (WAF) terbukti hanya memberikan proteksi yang sifatnya parsial. Pengelola Vercel, yang telah menerapkan aturan pengamanan firewall baru tepat pada tanggal pengumuman isu keamanan, mengonfirmasi secara gamblang bahwa proteksi firewall tersebut sama sekali tidak memfilter "respons yang ditarik oleh fungsi komputasi Anda dari server eksternal lain." Terhadap jalur lalu lintas data keluar-masuk tersebut, satu-satunya cara guna menyumbat lubang keamanan hanyalah memperbarui runtime inti atau pustaka terkait secara langsung.
Sejauh mana kerentanan ini dapat dimanfaatkan sepenuhnya tergantung pada karakteristik masing-masing perangkat lunak. Tim peretas Imperva Red Team, yang menamai proyek riset mereka sebagai Node2Shell, berhasil menjalankan kode kendali pada versi kompilasi resmi Node.js 24.22.0 yang belum dimodifikasi untuk arsitektur Linux ARM64, dengan menyusupkannya via respons fetch masuk maupun sebagai muatan permintaan Express. Eksploitasi teknis ini memerlukan beberapa kali upaya percobaan, belum pernah dirilis ke publik, dan tidak pernah diuji pada arsitektur sistem operasi lainnya.
Pihak OpenAI, melalui divisi Codex Security yang pertama kali menemukan celah ini, menguraikan isu ini sebagai celah yang memicu eksekusi kode jarak jauh tanpa otentikasi di pustaka Brotli, serta mencantumkan Node.js, Bun, dan Envoy sebagai perangkat lunak terdampak. Dalam catatan resmi mereka, eksploitasi dapat berlangsung lewat dua arah komunikasi.
Sampai sekarang belum ada aktivitas eksploitasi massal yang terdeteksi di alam bebas. Laporan audit dari badan siber CISA tertanggal 23 Oktober mengklasifikasikan status eksploitasi aktif pada status "nihil" dan status otomatisasi di level "tidak," sementara Red Hat turut menyatakan belum tersedia bukti konsep (PoC) publik yang dapat diandalkan untuk mengeksekusi kode peretas.
Penilaian terhadap skala bahaya berbeda-beda tergantung pihak yang menerbitkan skor. Google, yang mengeluarkan nomor registrasi CVE, memberikan nilai 9.2 atau kritis berlandaskan matriks pengukuran CVSS 4.0. Komunitas Node.js mengelompokkannya sebagai ancaman tingkat tinggi, sedangkan Red Hat menilainya pada skor 8.1 atau kategori penting.
Proses perbaikan kerentanan ini menyimpan rangkaian sejarah yang tidak lazim. Skrip perbaikan yang menambal celah tersebut sejatinya telah diunggah ke repositori kode sumber Brotli sejak 27 Februari, tetapi tidak pernah dirilis ke versi publik Brotli mana pun sampai tanggal 21 Oktober. Perwakilan OpenAI menerangkan bahwa sumber utama kendala "sebenarnya telah dituntaskan di dalam kode sumber Brotli pada Februari, namun pada masa itu tidak ada yang menyadari bahwa hal tersebut memicu kerentanan keamanan dan memang belum terdapat paket rilis terkini dari Brotli."
Tim Node.js memberikan apresiasi penuh kepada Khai Tran dan Sylvie Mayer dari Codex Security OpenAI atas laporan celah keamanannya, beserta dua pemelihara proyek, Matteo Collina dan Antoine du Hamel, atas perilisan paket penambalnya.
Segera perbarui perangkat lunak ke versi aman dari tabel terkait, kemudian lakukan mulai ulang (restart) pada seluruh layanan dan bangun kembali citra kontainer dari awal, mengingat proses sistem yang sedang berjalan akan terus mempertahankan modul decoder lawas sampai layanan dimuat ulang.
Bagi pengelola infrastruktur yang belum berkesempatan memperbarui sistem, hentikan segala proses dekompresi data Brotli dari sumber yang mencurigakan. Lembar rilis pengungkapan OpenAI bersama firma keamanan Aikido sama-sama menganjurkan tindakan mitigasi.
Perlu dicatat bahwa tindakan menghapus opsi br dari parameter header permintaan Accept-Encoding semata tidak memadai, mengingat server tujuan bebas mengirimkan kompresi data Brotli terlepas dari jenis header yang diminta oleh klien. Khusus bagi ekosistem Node.js, belum ada solusi sementara alternatif yang dirilis, sehingga pembaruan versi runtime menjadi satu-satunya jalan keluar mutlak.
Paket bawaan sistem operasi juga menerima perbaikan dengan waktu rilis yang berlainan. Komunitas Debian telah memperbarui pustaka brotli khusus untuk Debian 13 (trixie) pada tanggal 23 Oktober lewat versi 1.1.0-2+deb13u1. Di sisi lain, repositori Amazon Linux 2023 masih mencatat status paket pustaka brotli dan Node.js 24 mereka dalam antrean tunggu pembaruan hingga tanggal 22 Oktober.
Alat pemindai dependensi keamanan kemungkinan besar belum dapat mendeteksi paket Python yang bermasalah secara tepat. Berkas laporan CVE resmi hanya menyasar repositori pusat Brotli milik Google, bukan paket distribusi PyPI, serta papan peringatan keamanan GitHub masih menandai ketiadaan paket terdampak, yang berakibat langsung pada pembacaan Dependabot. Entri penasihat keamanan baru untuk kedua pustaka Python, yakni PYSEC-2026-4322 dan PYSEC-2026-4323, baru didaftarkan resmi pada 23 Oktober, sehingga pemeriksaan versi yang terpasang wajib dikerjakan mandiri.
