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 & Tingkat | Jenis 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) |
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.js | Terdampak → Versi Perbaikan |
|---|---|
| Node.js 26.x | Semua 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 lama | Semua 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.
| Sumber | Status Perbaikan |
|---|---|
| Repositori NodeSource ( deb.nodesource.com, rpm.nodesource.com) | Sudah tersedia: 22.23.4, 24.22.1, 26.12.1 |
Image Docker resminode: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.org | Sudah tersedia. Pasang versi perbaikan, lalu arahkan aplikasi dan PM2 ke versi tersebut |
Paket bawaan Ubuntunodejs | 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 Debiannodejs, 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 Linuxnodejs (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: brlalu mendekompresinya. - Aplikasi yang mengambil data dari server luar dengan
fetch()bawaan Node.js atau pustaka HTTP lain, karena respons ber-Content-Encoding: brdidekompresi 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.
- Inventarisasi semua runtime Node.js, bukan hanya hasil perintah
node -vdi 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]odepm2 listlalupm2 describe <nama-app> | grep -i "node.js version"docker pslaludocker exec <kontainer> node -vuntuk setiap kontainer
- 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.
- 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 denganls -l /proc/*/exe 2>/dev/null | grep node | grep deleted. - 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.
- Perbarui dependensi aplikasi (
npm audit,npm outdated), terutama paketundici,follow-redirects,body-parser, danmulter, 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: brdi reverse proxy atau WAF sebelum sampai ke aplikasi. Langkah ini tidak menutup jalurfetch()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, atauSIGABRT, atau PM2 yang berulang kali me-restart aplikasi tanpa sebab yang jelas. - Proses
nodeyang menjalankansh,bash,curl, atauwget. 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
- Node.js – October 2026 Security Releases (21 Oktober 2026)
- GitHub Security Advisory – GHSA-9v8h-qqgm-4m35 (Brotli decoder out-of-bounds write)
- NVD – CVE-2026-111497
- NVD – CVE-2026-105482, CVE-2026-105483, CVE-2026-106069
- Ubuntu Security – CVE-2026-111497
- Debian Security Tracker – CVE-2026-111497
- NodeSource – Node.js Binary Distributions
- Node.js – Jadwal rilis dan masa dukungan (EOL)
- CISA – Known Exploited Vulnerabilities Catalog
- Katalog CVE KUTIM-CSIRT: CVE-2026-111497, CVE-2026-105482, CVE-2026-105483, CVE-2026-106069