Peringatan Keamanan

Peringatan Keamanan: Rilis Keamanan Node.js Oktober 2026, Celah Brotli CVE-2026-111497 Berpotensi Eksekusi Kode Jarak Jauh

Adam  ·  24 Okt 2026  ·  KUTIM-SA-2026-089  ·  TLP:CLEAR  ·  1 kali dilihat

Peringatan Keamanan: Rilis Keamanan Node.js Oktober 2026, Celah Brotli CVE-2026-111497 Berpotensi Eksekusi Kode Jarak Jauh
Sumber: Artikel ini diterbitkan oleh KUTIM-CSIRT berdasarkan rilis keamanan resmi Node.js tanggal 21 Oktober 2026. Nomor CVE, skor, dan versi terdampak telah kami cocokkan dengan NVD, GitHub Security Advisory, serta pelacak keamanan Ubuntu dan Debian. Hingga artikel ini diterbitkan, BSSN/Id-SIRTII belum menerbitkan edaran untuk kerentanan ini. Dokumen asli: Node.js – October 2026 Security Releases.

KUTIM-CSIRT mengimbau seluruh Perangkat Daerah di lingkungan Pemerintah Kabupaten Kutai Timur yang mengelola aplikasi berbasis Node.js untuk segera memperbarui Node.js ke versi 22.23.4, 24.22.1, atau 26.12.1. Rilis keamanan Oktober 2026 menutup sepuluh kerentanan. Yang paling berbahaya adalah CVE-2026-111497, celah pada dekoder Brotli yang dibundel di Node.js. Celah ini dapat merusak memori proses dan berpotensi berujung pada eksekusi kode jarak jauh (remote code execution, RCE).

Aplikasi yang terdampak tidak hanya backend API. Frontend Next.js, Nuxt, atau Vite yang dijalankan dengan server Node.js, panel admin, bot, worker antrean, dan alat monitoring juga terdampak selama berjalan di atas Node.js versi lama. Node.js versi 20 ke bawah, 23, dan 25 sudah melewati masa dukungan (End-of-Life, EOL), sehingga tidak mendapat perbaikan sama sekali.

Ikhtisar

CVE & TingkatJenis Kerentanan
CVE-2026-111497
Critical
CVSS 4.0: 9,2
(Node.js: High)
Out-of-bounds write pada dekoder Brotli; berpotensi RCE (CWE-787, CWE-252)
CVE-2026-105482
High
CVSS 3.0: 7,4
Nama host berisi karakter NUL terpotong diam-diam oleh dns.resolve*() dan dns.reverse() (CWE-284)
CVE-2026-105483
High
CVSS 3.0: 7,4
Bypass verifikasi nama host TLS bila alamat IP ditulis dengan digit fullwidth (CWE-295)
CVE-2026-106069
High
CVSS 3.0: 7,4
Bypass verifikasi nama host TLS bila alamat IPv4 ditulis dengan angka nol di depan (CWE-295)
CVE-2026-105481
CVE-2026-106072
CVE-2026-106074
Medium
Respons palsu pada koneksi keep-alive; sertifikat DNS SAN diterima untuk alamat IP; nilai randomUUID()/randomInt() berulang pada startup snapshot
CVE-2026-106070
CVE-2026-106071
CVE-2026-106073
Low
zlib.ZipFile mengembalikan isi yang salah; dua celah pada Permission Model (--allow-fs-read/--allow-fs-write)
Tentang perbedaan tingkat keparahan: Node.js menilai CVE-2026-111497 sebagai High, sedangkan catatan CVE dari Google (pemelihara pustaka Brotli) memberi skor CVSS 4.0 9,2 (Critical) dengan vektor AV:N/AC:L/AT:P/PR:N/UI:N: dari jaringan, tanpa hak akses, tanpa interaksi pengguna, dengan syarat kondisi tertentu terpenuhi. KUTIM-CSIRT memakai penilaian yang lebih tinggi, karena celah ini dapat dipicu dari luar tanpa login.

Dampak

  • Eksekusi kode jarak jauh (CVE-2026-111497) dengan hak akses akun yang menjalankan proses Node.js. Penyerang cukup mengirim data terkompresi Brotli yang dirancang khusus kepada aplikasi yang mendekompresinya. Akibat lain yang juga mungkin: proses crash (layanan berhenti) dan kebocoran isi memori proses.
  • Koneksi TLS dapat disadap atau dipalsukan (CVE-2026-105483, CVE-2026-106069, CVE-2026-106072). Aplikasi yang terhubung ke alamat IP yang ditulis dengan format tidak lazim dapat menerima sertifikat yang sebenarnya diterbitkan untuk alamat lain.
  • Daftar izin domain dapat dilewati (CVE-2026-105482). Aplikasi yang memeriksa nama host terhadap daftar domain yang diizinkan, lalu me-resolve-nya dengan dns.resolve*(), bisa bertindak atas catatan DNS milik nama yang berbeda. Ini membuka jalan bagi Server-Side Request Forgery (SSRF).

Sistem yang Terdampak

Cabang Node.jsTerdampak → Versi Perbaikan
Node.js 26.xSemua versi sebelum 26.12.1 → 26.12.1
Node.js 24.x (LTS)Semua versi sebelum 24.22.1 → 24.22.1
Node.js 22.x (LTS)Semua versi sebelum 22.23.4 → 22.23.4
Node.js 25, 23, 20, 18, dan lebih lamaSemua versi (sudah EOL) → tidak ada perbaikan. Wajib migrasi ke 22.x atau 24.x

Sumber pemasangan Node.js. Cara memperbarui bergantung pada asal Node.js di server Anda.

SumberStatus Perbaikan
Repositori NodeSource
(deb.nodesource.com, rpm.nodesource.com)
Sudah tersedia: 22.23.4, 24.22.1, 26.12.1
Image Docker resmi
node:22, node:24, node:26
Sudah tersedia. Bangun ulang image dari tag 22.23.4, 24.22.1, atau 26.12.1
nvm, fnm, Volta, atau biner dari nodejs.orgSudah tersedia. Pasang versi perbaikan, lalu arahkan aplikasi dan PM2 ke versi tersebut
Paket bawaan Ubuntu
nodejs
Per 23 Oktober 2026 masih berstatus Needs evaluation di pelacak keamanan Ubuntu. Untuk layanan yang terhubung ke internet, gunakan NodeSource atau image resmi
Paket bawaan Debian
nodejs, brotli
Paket nodejs Debian memakai pustaka Brotli sistem. Perbaikan pustaka sudah terbit: bookworm 1.0.9-2+deb12u1 (DLA-4855-1), trixie 1.1.0-2+deb13u1 (DSA-6582-1). Paket nodejs sendiri masih tercatat rentan di pelacak Debian
RHEL, AlmaLinux, Rocky Linux
nodejs (AppStream)
Ikuti errata vendor. Per 23 Oktober 2026 paket perbaikan di AppStream belum tersedia

Di luar Node.js. CVE-2026-111497 berasal dari pustaka Google Brotli versi 1.0.3 hingga 1.2.0, sehingga perangkat lunak lain yang memakai pustaka ini juga perlu diperbarui. Versi perbaikan upstream adalah 1.0.10, 1.1.1, dan 1.2.1. Paket Python brotli dan brotlicffi sudah diperbaiki di versi 1.2.1 (GHSA-9v8h-qqgm-4m35). Pada server Linux, perbarui juga paket pustaka sistem (libbrotli1 di Debian/Ubuntu, brotli di RHEL/AlmaLinux) begitu distribusi menerbitkan perbaikannya.

Detail Teknis

CVE-2026-111497 (Brotli out-of-bounds write). Saat menerima data Brotli dengan block switch yang tidak valid, dekoder melaporkannya sebagai "butuh data tambahan", padahal seharusnya galat format permanen. Akibatnya dekoder versi streaming terus menambahkan byte masukan ke buffer internal berukuran delapan byte sampai melampaui batasnya. Penyerang yang dapat mengirim data Brotli ke aplikasi yang mendekompresinya dengan node:zlib dapat merusak memori proses. Jalur yang perlu diwaspadai antara lain:

  • Server yang menerima request body ber-Content-Encoding: br lalu mendekompresinya.
  • Aplikasi yang mengambil data dari server luar dengan fetch() bawaan Node.js atau pustaka HTTP lain, karena respons ber-Content-Encoding: br didekompresi otomatis. Contohnya fitur pratinjau tautan, webhook, crawler, dan integrasi API pihak ketiga.
  • Aplikasi yang memproses berkas atau arsip terkompresi kiriman pengguna.

CVE-2026-105483, CVE-2026-106069, dan CVE-2026-106072 (verifikasi nama host TLS). Fungsi tls.checkServerIdentity() tidak mengenali alamat IPv4 yang ditulis tidak lazim (digit fullwidth, angka nol di depan seperti 0127.0.0.1, atau bentuk heksadesimal/desimal) sebagai alamat IP. Akibatnya sertifikat dicocokkan dengan aturan yang salah dan dapat diterima untuk tujuan yang bukan miliknya. Risikonya nyata pada aplikasi yang terhubung ke alamat yang dimasukkan pengguna.

CVE-2026-105482 (NUL byte pada DNS). Nama host diteruskan ke pustaka c-ares sebagai string C, sehingga nama seperti attacker.example\0.trusted.example di-resolve sebagai attacker.example tanpa galat. Ini adalah perbaikan yang belum tuntas dari CVE-2026-48930.

Rilis ini juga memperbarui komponen yang dibundel di Node.js: c-ares, OpenSSL (cabang 24.x dan 22.x), SQLite (22.x), undici, serta daftar sertifikat root. Pembaruan daftar sertifikat root itu mencabut kepercayaan terhadap CA perantara eMudhra yang dikompromikan.

Rekomendasi

Langkah utama: perbarui Node.js. Advisory Node.js tidak menyediakan langkah pengganti (workaround). Pembaruan adalah satu-satunya perbaikan.

  1. Inventarisasi semua runtime Node.js, bukan hanya hasil perintah node -v di terminal. Satu server bisa memiliki beberapa Node.js sekaligus: paket sistem, nvm milik masing-masing akun, biner yang dibawa aplikasi, dan Node.js di dalam kontainer. Periksa juga proses yang sedang berjalan:
    • ps -eo pid,user,lstart,cmd | grep -i [n]ode
    • pm2 list lalu pm2 describe <nama-app> | grep -i "node.js version"
    • docker ps lalu docker exec <kontainer> node -v untuk setiap kontainer
  2. Perbarui ke versi perbaikan sesuai tabel di atas. Untuk Node.js versi EOL, migrasikan ke 22.x atau 24.x dan uji aplikasi lebih dulu, karena perpindahan versi mayor dapat mengubah perilaku dependensi.
  3. Restart semua proses Node.js setelah pembaruan (layanan systemd, pm2 restart <nama-app>, atau kontainer). Proses lama yang masih berjalan tetap rentan walaupun biner di disk sudah baru. Proses yang masih memakai biner lama dapat dikenali dengan ls -l /proc/*/exe 2>/dev/null | grep node | grep deleted.
  4. Untuk kontainer, bangun ulang image dari base image yang sudah diperbaiki lalu buat ulang kontainernya. Perhatikan multi-stage build: tahap akhir (runtime) juga harus memakai base image yang baru.
  5. Perbarui dependensi aplikasi (npm audit, npm outdated), terutama paket undici, follow-redirects, body-parser, dan multer, yang juga menerima perbaikan keamanan pada Oktober 2026.

Langkah sementara bila pembaruan belum dapat dilakukan. Langkah berikut hanya mengurangi risiko dan tidak membuat server aman:

  • Untuk aplikasi yang tidak membutuhkannya, tolak request body ber-Content-Encoding: br di reverse proxy atau WAF sebelum sampai ke aplikasi. Langkah ini tidak menutup jalur fetch() ke server luar.
  • Batasi akses aplikasi yang terdampak hanya dari jaringan internal atau VPN sampai pembaruan diterapkan, terutama untuk aplikasi di Node.js EOL.
  • Jangan menjalankan proses Node.js sebagai root. Bila RCE terjadi, kerusakan terbatas pada hak akses akun aplikasi.

Periksa tanda-tanda serangan. Perhatikan hal berikut pada log aplikasi, PM2, dan sistem:

  • Proses Node.js yang tiba-tiba berhenti dengan Segmentation fault, SIGSEGV, atau SIGABRT, atau PM2 yang berulang kali me-restart aplikasi tanpa sebab yang jelas.
  • Proses node yang menjalankan sh, bash, curl, atau wget. Ini tanda terkuat bahwa eksploitasi berhasil.
  • Berkas baru atau berubah di direktori aplikasi, node_modules, atau direktori unggahan sejak pertengahan Oktober 2026.

Tidak ditemukannya catatan di log bukan bukti server aman. Bila menemukan indikasi di atas, jangan menghapus berkas atau me-restart server sebelum berkoordinasi. Laporkan melalui formulir laporan insiden agar bukti tetap utuh untuk investigasi.

Catatan Status Eksploitasi

Hingga 24 Oktober 2026, kerentanan-kerentanan ini belum tercantum dalam katalog KEV CISA, dan KUTIM-CSIRT belum menemukan laporan eksploitasi yang terkonfirmasi. Meski begitu, detail teknis celah Brotli sudah dipublikasikan dan dekoder yang sama dipakai banyak perangkat lunak di luar Node.js. Kami menyarankan pembaruan diperlakukan sebagai prioritas, terutama untuk layanan yang dapat diakses dari internet. Artikel ini akan diperbarui bila status eksploitasi berubah.

Referensi