Celah Kerusakan Memori pada Dekoder Brotli Mengancam Node.js, Bun, hingga Python

Sebuah kerentanan kerusakan memori pada komponen dekoder Brotli rancangan Google ditemukan pada berbagai aplikasi yang memproses data terkompresi Brotli, termasuk runtime Bun, pustaka Python Brotli dan brotlicffi, serta proksi Envoy yang dikonfigurasi untuk mendekompresi format tersebut.

Didaftarkan sebagai CVE-2026-111497, celah ini memungkinkan data terkompresi yang dirancang khusus menulis melampaui batas akhir buffer penampung dan merusak memori internal program. Kondisi ini berpotensi memicu berhentinya aplikasi secara tiba-tiba, kebocoran data memori, hingga eksekusi kode berbahaya.

Peneliti keamanan dari Imperva mendemonstrasikan bahwa eksekusi kode dapat berjalan pada build Node.js yang belum menerima perbaikan. Namun, pembuktian serupa belum berhasil didemonstrasikan pada perangkat lunak lain yang terdampak, serta belum ditemukan laporan serangan aktif di dunia nyata.

Kerentanan ini diumumkan ke publik pada 21 Oktober, saat pengembang Node.js dan tim Google meluncurkan tambalan perbaikan yang kemudian disusul oleh produk lain. Karena sumber masalah berada pada modul dekoder Google sementara tiap program membawa salinan kodenya sendiri, setiap pengembang wajib memperbarui salinan kode di sistemnya secara terpisah.

Format Brotli digunakan luas di internet untuk memampatkan berkas web dan lalu lintas data. Masalah keamanan ini berakar pada kode C pengurai aliran data Brotli, sehingga risiko merembet ke seluruh perangkat lunak yang menggunakan basis kode tersebut, mulai dari lingkungan eksekusi bahasa, sistem proksi, hingga dependensi Python.

Daftar Perangkat Lunak Terdampak Celah

Sistem berada dalam kondisi rentan jika mendekode data kompresi Brotli dari entitas luar yang tidak tepercaya. Pada Node.js dan Bun, eksploitasi dapat terjadi saat fungsi bawaan fetch() menerima respons bertajuk Content-Encoding: br, atau ketika modul pembaca tubuh permintaan seperti Express 5 dan body-parser 2 memproses unggahan Brotli. Server HTTP bawaan Node.js murni tidak mendekode tubuh permintaan HTTP secara otomatis.

Infrastruktur Envoy dan Istio hanya terpengaruh jika fitur dekompresi Brotli diaktifkan secara manual melalui penyaring Envoy filter. Jika pengaturan tersebut dinonaktifkan, jalur kerentanan tidak dapat diakses.

Di ekosistem Python, ancaman muncul akibat terpasangnya modul eksternal Brotli atau brotlicffi. Begitu salah satu paket terpasang, pustaka klien HTTP seperti requests, urllib3, httpx, dan aiohttp otomatis membongkar respons Brotli tanpa intervensi pengguna, sehingga aplikasi dapat terpapar meski tidak memanggil kode Brotli secara langsung.

Dinding api aplikasi web (WAF) hanya memberi mitigasi terbatas. Penyedia komputasi Vercel, yang menerapkan aturan firewall baru pada hari pelaporan celah, menegaskan aturan tersebut tidak mampu menyaring respons data yang diunduh fungsi komputasi dari server eksternal. Untuk lalu lintas keluar tersebut, memperbarui versi runtime atau pustaka adalah satu-satunya solusi penutup celah.

Tingkat bahaya eksploitasi bergantung pada karakteristik perangkat lunak. Tim Red Team Imperva melalui proyek Node2Shell berhasil menjalankan kode pada build resmi Node.js 24.22.0 tanpa modifikasi di sistem Linux ARM64 melalui respons fetch maupun badan permintaan Express. Prosedur ini memerlukan beberapa kali percobaan, belum dirilis ke publik, dan tidak diuji pada versi build lain.

OpenAI melalui divisi Codex Security yang melaporkan kerentanan ini mendeskripsikannya sebagai celah yang memungkinkan eksekusi kode jarak jauh tanpa otentikasi di modul Brotli, serta mengelompokkan Node.js, Bun, dan Envoy sebagai perangkat lunak terdampak.

Hingga kini belum ada insiden peretasan aktif. Penilaian CISA pada 23 Oktober mencatat level eksploitasi pada kategori “tidak ada” dengan indikator otomatisasi “tidak”. Tim keamanan Red Hat juga menyatakan ketiadaan bukti konsep serangan publik yang stabil untuk eksekusi kode berbahaya.

Skor keparahan bervariasi antarlembaga. Google memberi peringkat keparahan 9.2 atau kritis berdasarkan standar CVSS 4.0. Pengelola Node.js mengklasifikasikannya pada tingkatan tinggi, sedangkan tim keamanan Red Hat menetapkan skor 8.1 dengan kategori penting.

Kronologi perbaikan celah ini terbilang tidak biasa. Kode sumber penambal kelemahan sebenarnya telah dimasukkan ke repositori Brotli sejak 27 Februari, tetapi tidak diluncurkan ke rilis resmi hingga 21 Oktober. Perwakilan OpenAI menerangkan masalah utama telah diperbaiki pada Februari, tetapi saat itu tidak disadari bahwa kondisi tersebut memicu celah keamanan serius, ditambah ketiadaan pembaruan rilis resmi Brotli selama periode berjalan.

Pengelola Node.js menyampaikan penghargaan kepada Khai Tran dan Sylvie Mayer dari Codex Security OpenAI atas temuan celah ini, serta mengapresiasi Matteo Collina dan Antoine du Hamel yang merumuskan kode tambalannya.

Pengguna diinstruksikan memperbarui sistem ke versi perbaikan, menyalakan ulang seluruh layanan, dan membangun kembali citra kontainer karena proses yang sedang berjalan mempertahankan kode lama di memori hingga sistem direstart.

Bagi sistem yang belum dapat menerapkan pembaruan, tindakan pencegahan terbaik adalah menghentikan sementara dekompresi data Brotli dari sumber tidak tepercaya, sebagaimana dianjurkan OpenAI dan Aikido. Menghapus parameter br dari tajuk Accept-Encoding tidak cukup efektif karena server tetap dapat membalas dengan kompresi Brotli. Pada Node.js, tidak ada langkah mitigasi sementara resmi sehingga pembaruan runtime menjadi solusi mutlak.

Pembaruan paket sistem operasi dirilis dalam rentang berlainan. Komunitas Debian memperbarui pustaka brotli untuk Debian 13 (trixie) pada 23 Oktober lewat versi 1.1.0-2+deb13u1, sementara repositori Amazon Linux 2023 masih mencatatkan paket brotli serta Node.js 24 dalam status menunggu perbaikan per 22 Oktober.

Pemindai dependensi otomatis kemungkinan belum mendeteksi risiko pada paket pustaka Python karena pendaftaran CVE utama merujuk ke repositori Google Brotli dan bukan rilis PyPI, sementara GitHub Advisory belum menandai dependensi Dependabot terkait. Informasi peringatan PYSEC-2026-4322 dan PYSEC-2026-4323 baru ditambahkan pada 23 Oktober, sehingga pengguna disarankan memeriksa versi secara manual.