Lewati ke isi

Keamanan/Cyber SecurityBerita

Celah Brotli Node.js CVE-2026-111497 Sudah Dieksploitasi

CVE-2026-111497 di dekoder Brotli Node.js sudah masuk katalog KEV CISA. Cek versi Node.js-mu dan naikkan ke 26.12.1, 24.22.1, atau 22.23.4.

Terbit 5 menit baca

Jawaban singkat

CVE-2026-111497 adalah out-of-bounds write di dekoder Brotli bawaan Node.js yang bisa berujung eksekusi kode. Node.js menambalnya 21 Oktober 2026 di versi 26.12.1, 24.22.1, dan 22.23.4, lalu CISA memasukkannya ke katalog KEV pada 27 Oktober karena sudah dieksploitasi.

Daftar isi
  1. Apa sebenarnya celah ini?
  2. Siapa saja yang terdampak?
  3. Langkah menambal Node.js di server
  4. 1. Cek versi yang berjalan
  5. 2. Upgrade sesuai cara pasang
  6. 3. Restart proses aplikasi
  7. 4. Pasang pengaman sementara bila belum bisa upgrade
  8. 5. Periksa komponen lain yang membundel Brotli
  9. Kenapa status KEV membuat ini mendesak?
  10. Pertanyaan yang sering diajukan

Apakah aplikasi Node.js di servermu sudah naik versi sejak akhir Oktober? Kalau belum, ini saatnya. Celah CVE-2026-111497 di dekoder Brotli bawaan Node.js sudah masuk katalog Known Exploited Vulnerabilities (KEV) milik CISA pada 27 Oktober 2026, artinya ada bukti celah ini dipakai menyerang di dunia nyata.

Jawaban singkatnya: naikkan Node.js ke v26.12.1, v24.22.1, atau v22.23.4 sesuai lini yang kamu pakai. Ketiganya dirilis Node.js pada 21 Oktober 2026. Lini 20.x ke bawah sudah end of life dan tidak mendapat perbaikan.

CVE-2026-111497

Kritis · CVSS 9.2
Produk terdampak
Node.js (dekoder Brotli bawaan)
Versi terdampak
lini 26.x, 24.x, 22.x sebelum versi perbaikan
Versi aman
26.12.1, 24.22.1, 22.23.4
Status
Dieksploitasi, patch tersedia
Diumumkan
21 Oktober 2026
Detail di NVD

Apa sebenarnya celah ini?

Brotli adalah format kompresi buatan Google yang banyak dipakai di web (header Content-Encoding: br). Node.js membundel pustaka Brotli untuk modul node:zlib.

Menurut pengumuman keamanan Node.js, data Brotli yang sengaja dibuat rusak bisa membuat dekoder menulis melewati batas buffer internal berukuran delapan byte. Penyebabnya, sebuah block switch yang tidak valid dianggap sebagai "butuh input lagi", bukan kesalahan format. Dekoder pun terus menambahkan byte ke buffer itu.

Akibatnya, penyerang yang bisa mengirim data Brotli ke aplikasi yang mendekompresinya dapat merusak memori proses. Dampaknya bisa berupa crash, bocornya isi memori, atau eksekusi kode dari jarak jauh. Node.js menilai celah ini High, sedangkan skor CVSS v4.0 dari Google sebagai CNA adalah 9.2. Celah ini dilaporkan peneliti dari OpenAI Codex Security.

Di media keamanan, celah ini juga dijuluki Node2Shell atau Brotli2Shell.

Siapa saja yang terdampak?

Bukan hanya Node.js. Bug-nya ada di pustaka Brotli itu sendiri, jadi proyek lain yang membundel Brotli ikut kena. Proyek Brotli Google merilis perbaikan 1.2.1, 1.1.1, dan 1.0.10 di hari yang sama dengan Node.js, dan Bun merilis perbaikannya keesokan harinya.

Di aplikasi Node.js, jalur yang perlu kamu waspadai menurut analisis Corgea antara lain:

  • Kode yang memanggil zlib.brotliDecompress(), zlib.brotliDecompressSync(), atau zlib.createBrotliDecompress().
  • fetch() bawaan Node.js yang otomatis mendekompresi respons Brotli dari server lain, termasuk server yang dikuasai penyerang.
  • Express 5 atau body-parser 2.x yang menerima body permintaan dengan Content-Encoding: br.
KomponenVersi perbaikan
Node.js 26.x26.12.1
Node.js 24.x24.22.1
Node.js 22.x22.23.4
Node.js 20.x ke bawahTidak ditambal (end of life), wajib migrasi
Pustaka Brotli (google/brotli)1.2.1, 1.1.1, atau 1.0.10
Bun1.4.4 atau lebih baru (menurut Corgea)
Paket Python Brotli1.2.1 atau lebih baru (menurut Corgea)

Rilis keamanan Node.js 21 Oktober itu sebenarnya menambal sepuluh celah sekaligus (sebagian media menyebut sembilan), termasuk tiga celah High lain terkait dns.resolve dan validasi hostname sertifikat TLS. Satu kali upgrade menutup semuanya.

Langkah menambal Node.js di server

1. Cek versi yang berjalan

node -v

Kalau aplikasi berjalan di container, cek di dalam container-nya, bukan di host:

docker exec nama-container node -v

Kalau hasilnya di bawah 26.12.1, 24.22.1, atau 22.23.4 pada lininya, server kamu rentan. Perhatikan juga bahwa Node.js tidak mengubah angka process.versions.brotli pada rilis ini, jadi patokan tetap versi Node.js-nya.

2. Upgrade sesuai cara pasang

Kalau memakai paket NodeSource atau repositori distro:

sudo apt-get update
sudo apt-get install --only-upgrade nodejs

Kalau memakai nvm, pasang versi perbaikan lalu jadikan default:

nvm install 22.23.4
nvm alias default 22.23.4

Untuk aplikasi di Docker, ganti tag image dasar ke versi perbaikan (misalnya node:22.23.4 atau node:24.22.1), build ulang image, lalu jalankan ulang container. Image lama yang tersimpan di registry tetap rentan sampai dibangun ulang.

3. Restart proses aplikasi

Upgrade binary tidak mengubah proses yang sudah berjalan. Restart aplikasi, misalnya pm2 restart all bila kamu memakai PM2, lalu cek ulang dengan node -v dan log aplikasi.

4. Pasang pengaman sementara bila belum bisa upgrade

Sambil menunggu jadwal upgrade, kamu bisa menolak permintaan yang body-nya dikompresi Brotli di reverse proxy. Contoh di Nginx, di dalam blok server:

if ($http_content_encoding ~* "br") {
    return 415;
}

Ini hanya menutup jalur permintaan masuk. Respons Brotli yang diambil aplikasi lewat fetch() dari server lain tidak ikut terlindungi, jadi upgrade tetap wajib.

5. Periksa komponen lain yang membundel Brotli

Cari runtime atau pustaka lain di servermu yang memakai Brotli, misalnya Bun atau paket Python Brotli, lalu naikkan ke versi perbaikannya.

Kenapa status KEV membuat ini mendesak?

Katalog KEV hanya memuat celah yang terbukti dieksploitasi. CISA memberi tenggat 10 November 2026 bagi instansi federal AS untuk menambalnya, dan tenggat itu sudah lewat. Penjelasan lebih lengkap soal cara memakai daftar ini untuk menentukan prioritas ada di artikel katalog KEV CISA.

Bagi bisnis yang menjalankan API, webhook, atau backend toko online di Node.js, aplikasi yang menghadap internet adalah sasaran paling mudah. Masukkan upgrade runtime ke dalam rutinitas patch management supaya kejadian serupa tidak menunggu sampai ada berita eksploitasi. Kalau kamu menjalankan Node.js dengan PM2, panduan menjalankan aplikasi Node.js di VPS bisa jadi rujukan cara restart yang aman.

Pertanyaan yang sering diajukan

Apakah aplikasi yang tidak memakai Brotli secara langsung tetap rentan?

Bisa. fetch() bawaan Node.js dan beberapa framework mendekompresi Brotli secara otomatis, jadi jalur serangan bisa muncul tanpa kamu menulis kode zlib sendiri. Cara paling aman adalah upgrade Node.js.

Masih memakai Node.js 20, apa yang harus dilakukan?

Lini 20.x sudah end of life dan tidak mendapat perbaikan untuk celah ini. Rencanakan migrasi ke 22.x atau 24.x, lalu pasang versi perbaikannya.

Apakah cukup memblok Content-Encoding br di reverse proxy?

Tidak. Itu hanya pengaman sementara untuk permintaan masuk. Respons Brotli dari server lain yang diambil aplikasi tetap bisa memicu celah.

Apakah image Docker yang sudah jalan otomatis ikut aman setelah upgrade di host?

Tidak. Node.js di dalam container berasal dari image-nya sendiri. Build ulang image dengan tag versi perbaikan lalu jalankan ulang container.

Kapan CVE-2026-111497 masuk katalog KEV?

CISA memasukkannya ke katalog KEV pada 27 Oktober 2026 karena ada bukti eksploitasi aktif.

Checklist singkat:

  • node -v menunjukkan 26.12.1, 24.22.1, 22.23.4, atau lebih baru.
  • Image Docker berbasis Node.js sudah dibangun ulang.
  • Proses aplikasi sudah di-restart.
  • Bun, paket Python Brotli, dan komponen lain yang membundel Brotli sudah diperbarui.
  • Server yang masih di Node.js 20 sudah dijadwalkan migrasi.

Sumber & referensi

Baca juga