Update Keamanan Node.js Oktober 2026: Apa yang Diperbaiki dan Siapa yang Perlu Segera Update

Node.js 22, 24, dan 26 mendapat perbaikan untuk sepuluh celah keamanan, empat di antaranya berstatus high, termasuk bug pada dekompresi Brotli yang bisa berujung remote code execution. Celah mana yang relevan untuk aplikasi web pada umumnya, versi yang perlu dipasang, dan cara update di server, container, maupun platform cloud.

Dipublikasikan 8 menit baca
Kode pengujian JavaScript dan terminal yang terbuka di code editor

Pada 21 Oktober 2026, tim Node.js merilis update keamanan untuk ketiga versi yang masih didukung: v22.23.4, v24.22.1, dan v26.12.1. Rilis ini menambal sepuluh celah, terdiri dari empat berstatus high, tiga medium, dan tiga low. Sebagian besar hanya berdampak pada fitur tertentu. Namun ada satu, yaitu bug kerusakan memori pada dekompresi Brotli, yang bisa menjangkau aplikasi web biasa meskipun aplikasinya tidak pernah memanggil zlib secara langsung. Jika Anda menjalankan aplikasi di atas Node.js, termasuk Next.js, NestJS, atau Express, sebaiknya jadwalkan update minggu ini.

Versi yang Perlu Dipasang

Setiap versi yang masih didukung punya rilis perbaikannya sendiri. Cukup update di dalam versi mayor yang sedang dipakai. Tidak perlu pindah ke versi mayor baru hanya untuk mendapatkan perbaikan ini.

VersiStatusVersi yang sudah diperbaiki
26.xRilis terbaruv26.12.1
24.xLTS terbaruv24.22.1
22.xLTSv22.23.4
20.x ke bawahEnd of lifeTidak ada perbaikan

Tim Node.js menegaskan bahwa versi yang sudah end of life selalu ikut terdampak setiap kali ada rilis keamanan. Node.js 20 sudah berakhir masa dukungannya pada April 2026, sehingga server yang masih memakainya tidak akan mendapat perbaikan ini. Server tersebut sebaiknya dipindahkan ke Node.js 22, atau lebih baik lagi ke 24.

Bug Brotli yang Bisa Berujung Remote Code Execution

Celah paling serius adalah CVE-2026-111497, yang ada di dekompresor Brotli pada modul node:zlib. Ketika menemui jenis input rusak tertentu, decoder menganggapnya sekadar kekurangan data, bukan kesalahan format. Decoder lalu terus menambahkan input ke buffer internal berukuran delapan byte hingga melewati batasnya. Akibatnya, aplikasi yang mendekompresi data Brotli dari sumber yang tidak tepercaya bisa mengalami kerusakan memori. Dampaknya bisa berupa crash, kebocoran isi memori, hingga remote code execution. Ketiga versi yang didukung terdampak.

Hanya sedikit aplikasi yang memanggil decoder Brotli secara manual, tetapi banyak yang memakainya tanpa sadar. Fungsi fetch bawaan Node.js otomatis mendekompresi respons yang dikirim dengan encoding Brotli. Fitur yang mengambil konten dari URL masukan pengguna, seperti link preview, pengujian webhook, atau impor data dari alamat eksternal, pada dasarnya mendekompresi data yang dipilih oleh pemilik server tujuan. Handler upload dan proxy yang membuka request body terkompresi juga masuk kategori yang sama. Jika aplikasi Anda melakukan salah satunya, update ini perlu diprioritaskan.

Celah pada Validasi Hostname dan Sertifikat

Tiga dari empat celah high berkaitan dengan cara Node.js mencocokkan hostname, dan dua di antaranya merupakan sisa dari perbaikan sebelumnya yang belum tuntas. Celah ini paling relevan untuk kode yang memvalidasi hostname sebelum melakukan koneksi, misalnya perlindungan terhadap server-side request forgery (SSRF), serta untuk layanan internal yang saling terhubung lewat TLS menggunakan alamat IP.

  • CVE-2026-105482 (high): dns.resolve*() dan dns.reverse() memotong hostname di karakter NUL. Me-resolve attacker.example yang diikuti karakter NUL dan .trusted.example akan mengembalikan record milik attacker.example tanpa pesan error. Allowlist yang memeriksa nama lengkap lalu me-resolve-nya bisa berakhir terhubung ke host lain. Perbaikan sebelumnya baru mencakup dns.lookup() serta opsi host di modul net dan tls.
  • CVE-2026-105483 (high, khusus 24.x dan 26.x): tls.checkServerIdentity() tidak mengenali alamat IP yang ditulis dengan angka fullwidth, lalu mencocokkannya dengan nama DNS di sertifikat. Sertifikat untuk nama DNS 127.0.0.1 bisa diterima untuk alamat IP yang sebenarnya bukan peruntukannya.
  • CVE-2026-106069 (high): untuk alamat IPv4 dengan angka nol di depan seperti 0127.0.0.1, pengecekan sertifikat membacanya sebagai bilangan oktal, sementara resolver sistem operasi di beberapa platform, termasuk macOS, membacanya sebagai desimal. Koneksi dan pengecekan sertifikat akhirnya merujuk ke alamat yang berbeda.
  • CVE-2026-106072 (medium): penulisan IPv4 tidak baku lainnya, seperti 0x7f.0.0.1 atau 2130706433, juga dicocokkan dengan nama DNS alih-alih diperlakukan sebagai alamat IP. Eksploitasinya membutuhkan sertifikat dari CA tepercaya yang memuat nama DNS berupa angka, serta resolver yang menerima format tersebut, seperti glibc.

Di luar update, ada pelajaran untuk kode aplikasi: normalisasi hostname cukup sekali, tolak hostname yang mengandung karakter kontrol, lalu gunakan nilai yang sudah dinormalisasi itu untuk validasi sekaligus koneksi. Sebagian besar teknik bypass semacam ini bekerja karena yang diperiksa satu string, sementara yang dipakai untuk terhubung adalah string lain.

Celah dengan Cakupan Lebih Sempit

Celah lainnya hanya berlaku jika aplikasi memakai fitur tertentu. Tetap layak dibaca, karena jika salah satunya cocok dengan setup Anda, dampaknya bisa lebih besar daripada yang tersirat dari tingkat severity-nya.

CVESeverityBerlaku jika
CVE-2026-105481MediumHTTP client memakai ulang koneksi keep-alive. Respons yang datang tanpa diminta saat event loop sedang sibuk bisa dibaca sebagai respons untuk request berikutnya.
CVE-2026-106074MediumAplikasi dibangun dari startup snapshot (--build-snapshot) atau sebagai single executable application dengan useSnapshot. Setiap proses yang dijalankan dari snapshot itu menghasilkan nilai awal yang sama dari crypto.randomUUID() dan crypto.randomInt().
CVE-2026-106070LowNode.js 26 dipakai untuk membaca file ZIP. Arsip yang sengaja dirusak bisa mengembalikan byte buatan penyerang alih-alih ditolak, sehingga scanner bisa meloloskan konten yang diekstrak berbeda oleh tool ZIP lain.
CVE-2026-106071LowPermission Model dipakai di Node.js 26 dengan izin baca berpola wildcard. Izin --allow-fs-read=/etc/passwd.* ternyata juga mengizinkan pembacaan /etc/passwd.
CVE-2026-106073LowPermission Model membatasi akses baca file. fs.realpathSync() melewatkan pengecekan izin baca dan bisa dipakai untuk menelusuri path di luar folder yang diizinkan.

Celah snapshot patut dicermati oleh tim yang mendistribusikan tool Node.js sebagai single executable. Dua proses yang menghasilkan UUID yang sama bisa bertabrakan di database, dan siapa pun yang bisa melihat output satu proses dapat menebak nilai berikutnya dari proses lain.

Dependensi Bawaan Ikut Diperbarui

Rilis ini juga memperbarui beberapa library yang dibundel di dalam Node.js: c-ares dan undici di ketiga versi, OpenSSL di 22.x dan 24.x, serta SQLite di 22.x. Daftar sertifikat root bawaan ikut diperbarui sebagai respons atas kebocoran salah satu intermediate certificate authority milik eMudhra. Aplikasi yang mengandalkan daftar sertifikat bawaan baru mendapat perubahan ini setelah binary Node.js-nya diperbarui.

Cara Update

Node.js bisa sampai ke production lewat berbagai cara, dan masing-masing punya cara update sendiri.

  • Server dengan nvm atau version manager sejenis: pasang versi yang sudah diperbaiki, misalnya nvm install 24.22.1, arahkan service ke versi tersebut, lalu restart. Pastikan unit systemd atau konfigurasi PM2 menunjuk ke binary yang baru, bukan ke path milik versi lama.
  • Paket dari NodeSource atau distro Linux: jalankan update paket seperti biasa dan cek hasilnya dengan node -v. Paket distro kadang tetap menampilkan nomor versi lama walau perbaikannya sudah masuk, jadi periksa security notice-nya untuk memastikan nomor CVE tercantum.
  • Docker: build ulang semua image dari base image resmi yang sudah diperbarui, misalnya node:24-alpine atau node:24-bookworm-slim, lalu deploy ulang. Image yang dikunci ke tag versi lama tidak akan berubah dengan sendirinya.
  • Runtime terkelola seperti AWS Lambda atau Vercel: penyedia biasanya memperbarui runtime untuk versi mayor yang masih didukung. Pastikan versi mayor yang Anda pilih masih didukung, dan deploy ulang jika platform memintanya. Platform yang menjalankan image container Anda sendiri, seperti Cloud Run atau ECS, mengikuti langkah Docker di atas.
  • Laptop developer dan runner CI: ikut perbarui, karena proses build dan test juga menjalankan Node.js dan bisa saja mengunduh atau membuka data dari luar.
  1. 1Data semua layanan yang berjalan di Node.js, termasuk API server, frontend Next.js, background worker, dan tool internal.
  2. 2Update setiap layanan ke versi perbaikan di versi mayornya masing-masing, build ulang image container, lalu deploy ulang.
  3. 3Restart proses yang berjalan lama. Proses Node.js tetap menjalankan binary lama sampai di-restart.
  4. 4Cek versi yang benar-benar berjalan, misalnya dengan mencatat process.version di log saat aplikasi start, atau menampilkannya di endpoint health check internal.
  5. 5Rencanakan migrasi ke Node.js 22 atau 24 untuk layanan yang masih memakai versi 20 ke bawah.

Supaya Update Berikutnya Tidak Serba Mendadak

Tim Node.js merilis update keamanan beberapa kali dalam setahun, biasanya dengan pemberitahuan beberapa hari sebelumnya. Tim yang bisa menanganinya dengan tenang umumnya punya kebiasaan yang mirip: satu catatan berisi versi Node.js yang dipakai tiap layanan, base image yang di-build ulang secara terjadwal, dan pipeline deployment yang bisa mengirim update runtime tanpa harus menunggu rilis fitur. Berlangganan milis nodejs-sec adalah cara paling mudah untuk mengetahui rilis berikutnya lebih awal. Jika Anda butuh bantuan memeriksa atau memperbarui layanan Node.js, tim managed service kami siap membantu.

Poin penting

  • Node.js v22.23.4, v24.22.1, dan v26.12.1 menambal sepuluh celah, empat di antaranya berstatus high. Node.js 20 ke bawah tidak mendapat perbaikan.
  • CVE-2026-111497 pada decoder Brotli bisa berujung remote code execution, dan relevan untuk aplikasi yang mengambil konten dari URL masukan pengguna karena fetch otomatis mendekompresi respons Brotli.
  • Beberapa perbaikan menutup celah pada validasi hostname dan sertifikat. Gunakan hostname yang sudah dinormalisasi untuk validasi sekaligus koneksi.
  • Celah sisanya hanya berlaku untuk fitur tertentu, seperti startup snapshot, pembacaan ZIP, dan Permission Model.
  • Update di dalam versi mayor yang sama, build ulang image container, restart semua proses, lalu pastikan versi yang berjalan sudah benar.
Bagikan artikel ini

Artikel terkait

Artikel lain tentang software development, AI, cloud, dan infrastruktur.

Kode konfigurasi PHP di layar editor berlatar gelapKeamanan

9 menit baca

PHP2Shell Adalah: Celah Kritis di PHP dan Cara Mengamankan Server Anda

Tim PHP merilis update darurat untuk dua celah yang memungkinkan penyerang menjalankan kode di server tanpa login. Berikut penjelasan celahnya, cara mengecek versi PHP yang benar-benar dipakai web server, langkah update di berbagai lingkungan, dan apa yang perlu diperiksa setelahnya.

Gembok kombinasi dan kartu pembayaran di atas keyboard laptopKeamanan

10 menit baca

UU PDP untuk Aplikasi: Apa Saja yang Harus Diubah di Software Anda

Apa yang diminta UU No. 27 Tahun 2022 dari sisi software: data umum dan spesifik, pengendali dan prosesor, dasar pemrosesan dan catatan persetujuan, masking NIK di log, retensi data, permintaan subjek data, notifikasi kebocoran 3 x 24 jam, dan langkah awalnya.

Mari berdiskusi

Sedang mencari partner untuk pengembangan software?

Ceritakan proyek yang sedang Anda bangun, kebutuhan yang ingin diselesaikan, dan tantangan yang dihadapi. Kami dapat membantu membahas pendekatan teknis, scope, timeline, dan estimasi biaya.

Mulai diskusi