Blog Keamanan Siber

Celah Brotli Node.js: Versi Aman dan Langkah Pembaruan

Ditulis oleh Merakit Indonesia

6 menit baca

Celah Brotli Node.js: Versi Aman dan Langkah Pembaruan
Daftar isi· 7 bagian
  1. 1Apa yang diperbaiki pada 21 Oktober
  2. 2Versi terdampak dan versi aman
  3. 3Status eksploitasi
  4. 4Apa artinya bagi tim pengembang dan operasi?
  5. 5Pertanyaan yang sering muncul
  6. 6Penutup
  7. 7Sumber

Proyek Node.js merilis versi 22.23.4, 24.22.1, dan 26.12.1 pada 21 Oktober 2026 untuk menutup celah Brotli dengan nomor CVE-2026-111497. Data terkompresi yang sengaja dirusak dapat menimpa memori dan, menurut Node.js, berujung pada eksekusi kode dari jarak jauh. Aplikasi yang mengurai data Brotli dari pihak luar perlu diperbarui.

Apa yang diperbaiki pada 21 Oktober

Rilis keamanan Node.js pada 21 Oktober 2026 memperbaiki 10 celah: empat berkategori High, tiga Medium, dan tiga Low. Pembaruan tersedia untuk tiga jalur yang masih didukung, yaitu 22.x, 24.x, dan 26.x. Dalam pengumuman resmi Node.js, CVE-2026-111497 termasuk kategori High dan berlaku untuk ketiga jalur itu. Menurut lilting.ch, Node.js sudah memberi pra-pengumuman pada 14 Oktober yang menyebut jalur terdampak dan tingkat keparahan tertinggi High, sehingga tim yang memantau pengumuman itu dapat bersiap lebih awal.

Empat celah High tersebut mencakup dua jenis masalah lain. Dua di antaranya menyangkut pemeriksaan nama host pada sertifikat TLS ketika alamat IP ditulis dengan cara tidak lazim, dan satu menyangkut fungsi dns.resolve yang memotong nama host berisi karakter NUL. Rilis yang sama juga memperbarui sertifikat akar akibat kompromi pada satu CA perantara milik eMudhra. Artikel ini berfokus pada celah Brotli karena itulah yang paling dekat dengan eksekusi kode.

Dua celah lain layak dicatat oleh tim yang memakai Node.js untuk menghubungi layanan lain. CVE-2026-106069 muncul karena alamat seperti 0127.0.0.1 dibaca sebagai oktal oleh aturan WHATWG yang diikuti tls.checkServerIdentity(), sedangkan resolver sistem operasi, terutama di macOS, dapat membacanya sebagai desimal. Server dapat lolos pemeriksaan dengan sertifikat yang diterbitkan untuk alamat IP lain. Adapun CVE-2026-105482 merupakan perbaikan lanjutan atas celah sebelumnya yang hanya menutup dns.lookup().

Cara kerja celah Brotli

Brotli adalah format kompresi yang lazim dipakai untuk memperkecil respons web. Menurut Node.js, dekoder Brotli bawaan memperlakukan perpindahan blok yang tidak sah sebagai kebutuhan sementara akan data tambahan, bukan sebagai kesalahan format yang permanen. Akibatnya, dekoder terus menambahkan data ke penyangga internal berukuran delapan byte dan menulis melewati ujungnya.

Penyerang yang dapat menyuplai data Brotli untuk diurai lewat modul node:zlib berpotensi membuat proses macet, membocorkan isi memori, atau menjalankan kode. Celah ini dilaporkan oleh OpenAI Codex Security (Khai Tran dan Sylvie Mayer) dan diperbaiki oleh mcollina dan aduh95.

Ada dua jalur masuk yang perlu dikenali. Pertama, aplikasi membaca respons berkompresi Brotli lewat fungsi fetch() bawaan. Kedua, middleware mengurai badan permintaan berkompresi Brotli. Menurut laporan The Hacker News, Express 5 membuka jalur kedua lewat pengurai badan permintaannya (express.json(), express.urlencoded(), express.text(), dan express.raw()) bila dipasang pada sebuah rute. Server HTTP polos tidak mengurai badan Brotli hanya karena menerimanya.

Versi terdampak dan versi aman

Celah ini berlaku untuk jalur 22.x, 24.x, dan 26.x sebelum versi perbaikan. Node.js menegaskan bahwa versi yang sudah habis masa dukungannya selalu terdampak oleh rilis keamanan, dan The Hacker News menyebut jalur 20.x ke bawah tidak menerima perbaikan.

Tabel versi Node.js: jalur 26, 24, dan 22 terdampak dengan versi aman 26.12.1, 24.22.1, dan 22.23.4, sedangkan Node.js 20 ke bawah habis masa dukungan

Node.js tidak menerbitkan solusi sementara di dalam runtime untuk celah ini. Satu-satunya cara menutupnya adalah memasang versi perbaikan. Jalur 24.x dan 22.x berstatus LTS sehingga paling sering dipakai di lingkungan produksi, sedangkan jalur 26.x adalah rilis terbaru.

Status eksploitasi

Pada 23 Oktober 2026, firma keamanan Imperva memperlihatkan prototipe serangan bernama Node2Shell. Menurut The Hacker News, prototipe itu menjalankan kode pada image resmi Node.js 24.22.0 untuk Linux arm64, tanpa pengawas galat (debugger) atau build khusus. Percobaan tidak berhasil di setiap kali jalan dan butuh beberapa upaya. Imperva hanya menguji konfigurasi itu, jadi arsitektur lain serta jalur 22.x dan 26.x belum diuji. Pada Node.js 24.22.1, data yang sama ditolak dan tidak ada kode yang berjalan.

Sebelumnya sudah ada bukti konsep publik, tetapi menurut laporan itu hanya berhasil menjalankan kode pada build yang sengaja dilemahkan. Pada build biasa, penulisnya hanya mencatat kemacetan proses dan pembacaan terbatas atas memori. Artikel tersebut menulis bahwa belum ada laporan eksploitasi di dunia nyata per 22 Oktober.

Perusahaan platform Vercel menyatakan telah menambah aturan pemblokiran untuk permintaan masuk pada 21 Oktober, dan Imperva menambah aturan pada firewall aplikasinya sendiri. Aturan semacam itu tidak mencakup respons Brotli yang diambil aplikasi dari server lain, sehingga tidak menggantikan pembaruan.

Apa artinya bagi tim pengembang dan operasi?

Banyak layanan di Indonesia berjalan di atas Node.js: API toko daring, gerbang pembayaran, aplikasi layanan publik di dinas, hingga server yang merender halaman web. Pekerjaan pertama adalah mengetahui versi Node.js yang benar-benar berjalan, dan jangan mengandalkan catatan di dokumentasi proyek. Satu mesin sering menyimpan beberapa versi sekaligus lewat pengelola versi seperti nvm.

Empat langkah pembaruan Node.js: inventarisasi, perbarui, bangun ulang kontainer, dan mulai ulang proses

Beberapa hal berikut layak diperhatikan saat menjalankan keempat langkah itu:

  1. Periksa versi dengan node -v di setiap server, tahap CI, dan kontainer. Bandingkan hasilnya dengan 22.23.4, 24.22.1, atau 26.12.1.
  2. Bangun ulang image kontainer. Setiap image membawa salinan Node.js sendiri, jadi pembaruan di mesin induk tidak mengubahnya. Penulis pengujian di lilting.ch mencatat bahwa tag node:24.22.1, node:22.23.4, dan node:26.12.1 sudah terbit pada hari rilis, dan membangun ulang tanpa docker pull dapat tetap memakai versi lama dari tembolok.
  3. Mulai ulang proses yang berjalan lama. Proses yang dimulai sebelum pembaruan masih memakai Node.js lama sampai dihentikan dan dijalankan lagi.
  4. Pindahkan aplikasi dari jalur yang sudah habis masa dukungannya. Untuk Node.js 20 dan yang lebih lama, tidak ada perbaikan resmi.

Bila pembaruan belum dapat dipasang hari ini, kurangi paparan dengan membatasi aplikasi yang menerima badan permintaan berkompresi Brotli dari pihak yang tidak dikenal. Node.js sendiri tidak memberi solusi sementara, sehingga langkah ini hanya penahan. Pengaturan Accept-Encoding: identity pada fetch() juga tidak menolong, karena menurut pengujian lilting.ch fetch() mengurai Brotli berdasarkan tajuk Content-Encoding pada respons.

Tim yang mengelola banyak layanan Node.js dapat memulai dari inventaris sistem yang menghadap internet. Bantuan dari layanan keamanan siber, penataan proses rilis di layanan komputasi awan, atau penyusunan ulang aplikasi lewat pengembangan aplikasi web membantu bila inventaris itu belum ada. Kasus serupa pada platform lain pernah kami bahas di artikel tentang celah kritis PHP2Shell.

Pertanyaan yang sering muncul

Apakah aplikasi saya terdampak bila tidak memakai Brotli?

Risiko terbesar ada pada aplikasi yang mengurai data Brotli dari pihak luar, baik lewat fetch() maupun middleware yang mengurai badan permintaan. Aplikasi yang tidak pernah menerima data Brotli berisiko lebih kecil, tetapi versi Node.js-nya tetap berada di jalur terdampak. Sebaiknya perbarui tanpa menunggu bukti bahwa jalur itu dipakai.

Apakah celah ini sudah dieksploitasi?

Menurut The Hacker News, belum ada laporan eksploitasi di dunia nyata per 22 Oktober 2026. Imperva sudah memperlihatkan eksekusi kode pada konfigurasi uji tertentu, jadi risikonya nyata. Kondisi ini dapat berubah, sehingga memeriksa sumber resmi secara berkala tetap perlu.

Versi mana yang harus saya pasang?

Pasang 22.23.4 untuk jalur 22, 24.22.1 untuk jalur 24, dan 26.12.1 untuk jalur 26. Bila Anda masih memakai Node.js 20 atau lebih lama, rencanakan migrasi ke salah satu jalur yang didukung.

Penutup

Celah Brotli ini menunjukkan bahwa risiko juga datang dari pustaka yang tersembunyi di dalam runtime. Mulailah dari daftar versi Node.js di seluruh server dan image Anda, lalu perbarui yang terdampak. Bila tim Anda membutuhkan pendamping untuk memetakan dan menata pembaruan, Merakit siap berdiskusi.

Sumber

Ringkasan dalam satu gambar

Simpan atau bagikan ke tim Anda.

Unduh
Infografis ringkasan: Celah Brotli Node.js: Versi Aman dan Langkah Pembaruan

Topik

  • Keamanan Siber
  • Node.js
  • Pengembangan Web
  • Kontainer
  • Manajemen Pembaruan

Bagikan artikel ini

Diskusi dengan Tim Merakit

Punya tantangan serupa di organisasi Anda?

Ceritakan kebutuhan Anda. Tim kami bantu memetakan langkah dan solusi yang paling masuk akal, tanpa jargon.