Kalau server Node.js Anda melayani publik dan belum diperbarui minggu ini, ada satu alasan kuat untuk berhenti menunda: pada Rabu, 21 Oktober 2026 tim Node.js merilis patch keamanan untuk tiga jalur rilis sekaligus, dengan lima kerentanan berseverity High. Salah satunya memungkinkan eksekusi kode dari jarak jauh (RCE) lewat decoder Brotli bawaan Node.js. Artinya, celah ini tidak menunggu aplikasi Anda salah konfigurasi — cukup ada data terkompresi yang diproses oleh runtime.
Rilis yang tersedia: Node.js 26.12.1 (Current), 24.22.1 (LTS, codename Krypton), dan 22.23.4 (LTS, codename Jod). Semuanya adalah rilis keamanan, bukan rilis fitur, jadi tidak ada perubahan API yang perlu dikhawatirkan. Justru sebaliknya: menunda upgrade berarti membiarkan dependensi seperti c-ares, undici, OpenSSL, dan ca-cert tetap di versi lama.
Lima celah High yang perlu dipahami
Berikut temuan utama yang diperbaiki, berdasarkan pengumuman resmi proyek Node.js:
- CVE-2026-111497 — Brotli decoder out-of-bounds write berujung RCE. Ini yang paling serius. Bug pada decoder Brotli memungkinkan penulisan di luar batas memori yang bisa dieksploitasi untuk mengeksekusi kode. Terdampak: Node.js 26.x, 24.x, dan 22.x. Fix-nya berupa cherry-pick patch upstream Brotli.
- CVE-2026-105482 —
dns.resolvememotong nama yang mengandung karakter NUL. Input DNS bisa "dibersihkan" secara diam-diam sehingga validasi di aplikasi dan resolver tidak lagi melihat nama yang sama. Terdampak semua jalur 26.x, 24.x, 22.x. - CVE-2026-105483 — bypass hostname sertifikat TLS saat IP ditulis dengan digit fullwidth. Pemeriksaan nama host bisa lolos padahal sertifikat tidak sah untuk endpoint tersebut. Terdampak 26.x dan 24.x.
- CVE-2026-106069 — bypass hostname saat host "longgar" di-resolve menjadi alamat IP. Terdampak semua jalur.
- CVE-2026-106072 — validasi sertifikat keliru untuk hostname IPv4 non-kanonik. SAN DNS bisa dipakai mengautentikasi endpoint IP. Severity Medium, tetapi masih satu keluarga dengan dua celah TLS di atas.
Selain lima isu High, ada beberapa perbaikan Medium dan Low: crypto.randomUUID() dan randomInt() yang menyimpan cache entropi ke snapshot startup/SEA sehingga tiap proses mengulang nilai yang sama (CVE-2026-106074), guard pada keep-alive socket (CVE-2026-105481), serta dua celah Permission Model dan satu bug ZipFile yang hanya berdampak di 26.x.
Kenapa ini relevan untuk aplikasi Indonesia
Banyak layanan di tanah air memakai Node.js sebagai API gateway, backend aplikasi absensi, atau lapisan BFF di depan layanan PHP. Pola yang paling berisiko adalah server yang menerima payload terkompresi dari internet — misalnya endpoint yang mengaktifkan Content-Encoding: br — karena jalur itulah yang disentuh CVE-2026-111497. Aplikasi yang memanggil API pihak ketiga lewat HTTPS juga perlu memperhatikan perbaikan TLS, terutama jika verifikasi hostname hanya mengandalkan perilaku default Node.js.
Langkah upgrade yang aman
- Cek versi yang berjalan sekarang. Jalankan di server, container, dan mesin CI. Jangan hanya percaya pada satu lingkungan.
node -v
npm -v
- Naikkan ke patch terbaru di jalur yang sama. Jika memakai nvm, ini cukup beberapa perintah. Tetap di 24.x bila aplikasi sudah produksi di LTS; jangan lompat ke 26.x hanya karena ingin versi terbaru.
nvm install 24.22.1
nvm use 24.22.1
nvm alias default 24.22.1
node -v # harus menampilkan v24.22.1
- Kunci versi minimum di
package.jsonagar anggota tim tidak diam-diam kembali ke versi rentan:
{
"engines": {
"node": ">=24.22.1"
}
}
- Perbarui image Docker dan tarik ulang base image. Tag lama sering ter-cache di registry maupun di server, jadi paksa pembaruan:
FROM node:24.22.1-bookworm-slim
# ...
RUN npm ci --omit=dev
docker build --pull -t aplikasi:terbaru .
docker run --rm aplikasi:terbaru node -v
- Samakan versi di CI/CD. Jika pipeline memakai
actions/setup-node, tulis versi eksplisit, bukannode-version: 'lts/*'yang bisa berubah tanpa terlihat di diff:
- uses: actions/setup-node@v4
with:
node-version: '24.22.1'
- Uji ulang setelah upgrade. Jalankan test suite, lalu cek tiga area yang paling mungkin terpengaruh: koneksi TLS ke API eksternal, resolusi DNS, dan endpoint yang menerima body terkompresi. Untuk aplikasi yang memakai snapshot startup atau Single Executable Application, uji ulang karena ada perubahan pada cache entropi crypto.
Setelah patch, jangan berhenti di situ
Rilis ini juga membawa pembaruan dependensi: c-ares 1.34.9, undici 7.30.1, OpenSSL 3.5.9 (jalur 24.x dan 22.x), SQLite (22.x), serta root certificate NSS 3.131.1 termasuk penanganan kompromi Intermediate CA eMudhra. Pembaruan ca-cert ini penting untuk aplikasi yang melakukan verifikasi sertifikat; tanpa update, koneksi bisa gagal atau — lebih buruk — masih mempercayai rantai yang seharusnya tidak lagi dipercaya.
Praktik yang sehat: jadwalkan pengecekan versi Node.js minimal sebulan sekali, pantau blog vulnerability Node.js, dan aktifkan npm audit di pipeline. Untuk tim yang mengelola banyak server, catat versi runtime di inventaris agar saat rilis keamanan keluar, daftar server yang perlu disentuh bisa langsung diketahui — bukan ditebak satu per satu.
Sumber: Node.js — Wednesday, October 21, 2026 Security Releases, Node.js 24.22.1 (LTS) release notes, dan Node.js Releases.
