Kerentanan kerusakan memori pada komponen dekoder Brotli milik Google bersarang di berbagai aplikasi pengolah data terkompresi Brotli, termasuk runtime Bun, pustaka Python Brotli dan brotlicffi, serta proksi Envoy yang dikonfigurasi mendekompresi format tersebut.

Diberi label resmi CVE-2026-111497, celah ini memungkinkan data terkompresi yang dimanipulasi melampaui batas akhir buffer dan merusak memori program. Situasi tersebut berpotensi memicu kegagalan sistem mendadak, kebocoran data memori, hingga eksekusi kode biner kendali penyerang.

Peneliti keamanan dari Imperva berhasil membuktikan eksekusi kode pada salah satu versi build Node.js yang belum menerima perbaikan. Namun, pembuktian serupa belum diperagakan pada perangkat lunak lain, dan belum tercatat adanya insiden serangan nyata di dunia luar.

Masalah ini pertama kali diumumkan pada 21 Oktober ketika tim pengembang Node.js serta Google merilis paket pembaruan, diikuti bertahap oleh produk lainnya. Karena cacat logika terletak pada dekoder dasar rancangan Google dan setiap aplikasi menyematkan salinannya sendiri, para pengembang wajib memutakhirkan salinan dekoder tersebut secara mandiri.

Brotli merupakan algoritma kompresi ciptaan Google untuk mereduksi ukuran lalu lintas web. Celah keamanan ini berakar pada kode bahasa C murni pemroses aliran data Brotli, sehingga terbawa ke perangkat lunak apa pun yang memanfaatkan ulang kode sumber tersebut, mulai runtime bahasa, peladen proksi, hingga pustaka ekosistem Python.

Daftar Perangkat Lunak Terdampak

Sistem terancam bahaya apabila mendekode data Brotli dari pihak luar tak tepercaya. Di Node.js dan Bun, risiko muncul saat fungsi fetch() membaca respons server dengan header Content-Encoding bernilai br, atau saat pustaka Express versi 5 serta body-parser versi 2 membongkar kiriman unggahan Brotli. Server HTTP bawaan Node.js standar sebenarnya tidak mengekstrak isi badan permintaan HTTP otomatis.

Proksi Envoy dan Istio hanya terdampak jika konfigurasi dekompresi Brotli diaktifkan secara eksplisit, misalnya via filter perutean. Jika opsi dekompresi dinonaktifkan, celah kerusakan memori mustahil dieksploitasi.

Di ekosistem Python, potensi bahaya muncul akibat terpasangnya paket Brotli maupun brotlicffi di lingkungan virtual. Begitu salah satu terinstal, modul klien HTTP seperti requests, urllib3, httpx, dan aiohttp otomatis mendekode setiap respons Brotli jaringan, sehingga aplikasi terpapar meski kodenya tak pernah mengimpor paket Brotli.

Firewall aplikasi web (WAF) hanya memberi perlindungan terbatas. Penyedia Vercel, yang menerapkan filter firewall pada hari pengumuman, menegaskan aturan proteksinya tak mampu menyaring respons data yang diambil fungsi serverless dari peladen eksternal lain. Memperbarui runtime platform atau pustaka terkait menjadi satu-satunya penambal permanen.

Tingkat kedalaman eksploitasi bergantung pada karakteristik masing-masing perangkat lunak. Tim Red Team Imperva melalui proyek Node2Shell sukses mengeksekusi kode pada kompilasi Node.js 24.22.0 untuk Linux ARM64, baik melalui respons fetch maupun muatan permintaan server Express. Penetrasi ini butuh percobaan berulang, belum disebarluaskan untuk publik, serta belum diuji coba pada varian build kompilasi sistem lainnya.

OpenAI melalui divisi riset Codex Security yang perdana melaporkan celah ini mengategorikannya sebagai eksekusi kode jarak jauh tanpa otentikasi di dalam modul Brotli, mencakup Node.js, Bun, dan Envoy. Kelemahan ini dapat dimanfaatkan dari dua arah interaksi jaringan sekaligus.

Hingga kini belum ada laporan eksploitasi aktif. Penilaian CISA tertanggal 23 Oktober mencatatkan riwayat eksploitasi nihil dan indikator otomatisasi serangan pada opsi tidak. Red Hat juga mengonfirmasi belum adanya bukti konsep serangan publik yang stabil guna mengeksekusi kode.

Penetapan tingkat keparahan risiko memperlihatkan perbedaan skor. Google menetapkan skor 9.2 (kritis) standar CVSS 4.0. Komunitas Node.js menandainya sebagai ancaman kategori tinggi, sedangkan Red Hat memberikan nilai 8.1 dengan tingkatan penting.

Mitigasi celah mencatat kronologi unik. Pembaruan kode penutup kelemahan telah digabungkan ke repositori utama Brotli sejak 27 Februari, tetapi tak ada peluncuran versi publik Brotli yang mengintegrasikannya hingga rilis 21 Oktober. Perwakilan OpenAI memaparkan bahwa pangkal persoalan dituntaskan pada Februari lalu, namun saat itu tak ada pihak yang menyadari cacat tersebut menimbulkan lubang keamanan genting, ditambah ketiadaan edisi rilis versi terbaru pustaka Brotli.

Pengelola Node.js menyampaikan apresiasi kepada Khai Tran dan Sylvie Mayer dari Codex Security OpenAI atas laporannya, serta Matteo Collina dan Antoine du Hamel atas penanganan tambalan perbaikan.

Pengelola sistem disarankan lekas meningkatkan sistem ke versi aman, memuat ulang layanan, dan membangun kembali seluruh image container, sebab proses aktif terus mempertahankan modul dekoder lama yang rentan hingga dimatikan dan direstart.

Jika belum mampu memperbarui, pencegahan darurat adalah menghentikan proses dekompresi data Brotli dari entitas tak tepercaya, sebagaimana disarankan pengumuman OpenAI dan badan Aikido.

Sekadar membuang parameter br dari header Accept-Encoding tidak memadai, sebab peladen penyedia konten dapat mengirimkan format Brotli terlepas dari preferensi klien. Bagi Node.js, belum ada solusi alternatif (workaround) efektif, sehingga memperbarui paket runtime merupakan jalan keluar mutlak.

Penyediaan tambalan di tingkat distribusi OS memiliki jadwal beragam. Debian telah menambal pustaka brotli varian Debian 13 (trixie) pada 23 Oktober via rilis 1.1.0-2+deb13u1. Sebaliknya, repositori Amazon Linux 2023 per 22 Oktober masih mencantumkan paket brotli dan Node.js 24 dalam antrean pembaruan resmi.

Pemindai ketergantungan paket otomatis kemungkinan belum mampu mendeteksi kerentanan modul Python secara presisi. Dokumentasi CVE hanya mereferensikan repositori utama Brotli Google, bukan PyPI, sementara GitHub Advisory (rujukan Dependabot) sempat menyatakan ketiadaan paket terdampak. Entri penasihat independen Python PYSEC-2026-4322 dan PYSEC-2026-4323 baru terdaftar resmi pada 23 Oktober, sehingga pengembang diimbau memeriksa versi terpasang secara manual.