Celah CVE-2026-111497 di dekoder Brotli buatan Google ternyata tidak berhenti di Node.js. Peneliti dari Aikido dan sejumlah vendor kini memastikan bug yang sama ikut terbawa ke paket Python Brotli dan brotlicffi di PyPI, runtime Bun, proxy Envoy, service mesh Istio, serta pemindai cdxgen. Google memberi skor 9.2 (kritis, CVSS 4.0), sedangkan Red Hat menilainya 8.1.
Bug ini berupa out-of-bounds write. Data terkompresi yang dirakit khusus bisa membuat dekoder menulis melewati batas buffer, dengan akibat crash, kebocoran memori, atau eksekusi kode. Tim Codex Security dari OpenAI yang melaporkannya. Tim Red Team milik Imperva sudah membuktikan eksekusi kode pada satu build Node.js 24.22.0 untuk Linux ARM64, tetapi tidak merilis exploit. Sampai 23 Oktober, CISA belum mencatat adanya serangan nyata.
Python rentan walau Brotli tidak pernah diimpor
Bagian yang paling mudah terlewat ada di Python. Paket Brotli versi 1.2.0 ke bawah dan brotlicffi 1.2.0.x ke bawah mengompilasi dekoder yang sama dengan yang dibundel Node.js. Pengembang tidak perlu memanggilnya di kode sendiri. Begitu paket itu terpasang, urllib3, requests, httpx (dengan extra brotli), aiohttp, dan Scrapy otomatis membuka respons berkompresi Brotli dari server mana pun yang mereka hubungi.
Menurut Aikido, paket Brotli diunduh sekitar 82,8 juta kali per bulan dan sering masuk sebagai dependensi turunan. Advisori PyPI untuk kedua paket (PYSEC-2026-4322 dan PYSEC-2026-4323) baru terbit 23 Oktober, sehingga pemindai dependensi yang belum diperbarui bisa saja belum menandainya. Akar masalahnya sebenarnya sudah diperbaiki di kode sumber Brotli sejak 27 Februari, tetapi tidak ada yang menyadari itu perbaikan keamanan dan tidak ada rilis yang memuatnya sampai 21 Oktober.
Versi terdampak dan versi aman
Pustaka Brotli versi C 1.0.3 sampai 1.2.0 terdampak dan sudah diperbaiki di 1.0.10, 1.1.1, dan 1.2.1. Paket Python Brotli aman mulai 1.2.1, sedangkan brotlicffi mulai 1.2.1.0. Bun 1.4.3 ke bawah rentan dan sudah ditambal di 1.4.4. Envoy memperbaikinya di 1.40.0, 1.39.3, 1.38.6, 1.37.8, dan 1.36.12, sementara Istio di 1.31.2, 1.30.6, dan 1.29.9. Keduanya hanya terdampak bila dekompresi Brotli diaktifkan. Untuk Node.js, versi amannya sama seperti yang dibahas di rilis keamanan Node.js 21 Oktober. Debian sudah menambal Debian 13 pada 23 Oktober.
Yang perlu dilakukan sekarang
Cek setiap lingkungan Python dan image kontainer, termasuk lockfile seperti poetry.lock, uv.lock, dan requirements.txt, untuk mencari Brotli atau brotlicffi. Perbarui ke versi aman, lalu bangun ulang image dan restart layanan, karena proses yang masih berjalan tetap memakai dekoder lama.
Bila belum bisa memperbarui, Aikido menyarankan mencopot kedua paket itu agar klien HTTP kembali ke gzip dan deflate. Menolak permintaan dengan header Content-Encoding br di sisi edge membantu untuk data masuk, tetapi tidak melindungi respons yang diambil aplikasi dari server luar. Menghapus br dari Accept-Encoding juga tidak cukup, sebab server tetap bisa mengirim Brotli. Prioritaskan layanan yang sering memanggil API atau situs pihak ketiga, seperti scraper, bot, dan integrasi webhook.
Sumber: Aikido, The Hacker News. Gambar: Aikido
