Node.js Patch Keamanan November 2026: 10 CVE High, Update ke 26.13.1
  easystem   13 November 2026   Developer

Pada 11 November 2026, tim Node.js merilis pembaruan keamanan serentak untuk tiga jalur rilis aktif: 22.x, 24.x, dan 26.x. Rilis ini menambal 10 kerentanan berseveritas High di jalur 26.x, dan sebagian besar menyerang lapisan HTTP/2 serta TLS yang selalu aktif di server produksi. Bagi pengelola API, aplikasi Next.js, atau layanan Express di balik HTTPS, patch ini tidak layak ditunda.

Versi yang wajib dipasang

  • Node.js 26.13.1 (LTS "Lithium", jalur terbaru)
  • Node.js 24.22.3 (LTS)
  • Node.js 22.23.5 (LTS)

Ketiganya membawa pembaruan dependensi: llhttp 9.4.4, undici 8.12.4, sqlite 3.54.1, dan brotli 1.2.1. Versi yang sudah End-of-Life tetap terdampak dan tidak menerima patch, sehingga satu-satunya jalan adalah naik ke jalur LTS yang masih didukung.

Kerentanan yang paling perlu diperhatikan

Enam CVE High berikut paling relevan bagi server yang bisa diakses publik.

  • CVE-2026-123863 (HTTP/2, High): assertion CHECK_EQ(current_nghttp2_memory_, 0) di ~Http2Session() membuat klien tanpa autentikasi mampu mengabort proses server, baik lewat TLS maupun cleartext. Pemicunya cukup server HTTP/2 default yang handler-nya merespons sebelum body request selesai, pola yang sangat umum. Bug ini varian dari CVE-2024-27983 yang perbaikannya belum menutup seluruh kasus.
  • CVE-2026-123864 (HTTPS, High): penulisan TLS berukuran nol memicu llhttp_execute() bersarang, sehingga server bisa menyalin memori heap miliknya sendiri ke body request. Dampaknya kebocoran memori proses, termasuk private key TLS dan request pengguna lain, dan pemicunya handler yang memanggil res.flushHeaders() sebelum body selesai. Jalur node:http cleartext tidak terdampak.
  • CVE-2026-123865 (HTTP/2, High): sesi tidak pernah dibersihkan jika protocol error terjadi saat koneksi sedang shutdown. Penyerang bisa memulai shutdown dengan GOAWAY(NO_ERROR), lalu memori dan file descriptor server bocor permanen tanpa biaya tambahan di sisinya.
  • CVE-2026-123866 (HTTP/2, High): use-after-free saat teardown stream yang masih backpressure. Memori respons yang sudah dibebaskan, termasuk buffer respons koneksi lain, bisa terkirim ke peer.
  • CVE-2026-126051 (TLS, High): server TLS yang memakai hook SNICallback, OCSPRequest, newSession, resumeSession, atau server.addContext() menjalankan callback OpenSSL secara tertunda tanpa memeriksa apakah socket sudah dihancurkan. Akibatnya muncul uncaught exception, bukan event 'error', dan proses server mati.
  • CVE-2026-123872 (TLS, High): renegotiation TLS 1.2 memungkinkan klien mengganti servername secara sepihak sehingga autentikasi client certificate (mTLS) bisa dilewati. Ini paling berbahaya bila mTLS dipakai sebagai kontrol akses antar-layanan.

Ada pula sederet isu Medium dan Low, mulai dari kredensial proxy yang tidak disamarkan di pesan error URL proxy, kebocoran penolakan akses pada fs.watch rekursif, sampai penanganan callback zlib setelah destroy.

Cara update dengan aman

  1. Cek versi yang berjalan di server memakai node -v dan npm ls --depth=0.
  2. Jika memakai nvm, jalankan nvm install 24.22.3 lalu nvm alias default 24.22.3; untuk fnm perintahnya setara.
  3. Jika memakai Docker, ganti base image ke versi patch dan jangan hanya menambah npm update di dalam image lama.
  4. Kunci versi di package.json serta .nvmrc agar build berikutnya tidak kembali ke versi rentan.
  5. Restart proses, lalu verifikasi bahwa versi yang benar-benar berjalan sudah benar.
// package.json
"engines": {
  "node": ">=24.22.3 <25"
}

# Dockerfile
FROM node:24.22.3-alpine

# setelah deploy
node -v            # harus 24.22.3
pm2 restart all --update-env
curl -sS https://domain-anda/api/health

Kalau belum bisa update hari ini

Mitigasi sementara yang masuk akal adalah mematikan HTTP/2 di server Node yang terekspos langsung ke internet dan menghindari pola res.flushHeaders() sebelum body request selesai. Namun jangan menganggap ini solusi, karena CVE-2026-123864 menyentuh jalur HTTPS biasa dan CVE-2026-126051 menyerang handshake TLS. Menaruh Node di belakang nginx hanya menolong bila koneksi TLS benar-benar berakhir di nginx, bukan diteruskan sebagai HTTP/2 end-to-end.

Kebiasaan yang perlu dibangun

Rilis ini memperlihatkan pola yang berulang, yaitu bug lama yang perbaikannya tidak lengkap (CVE-2024-27983 dan CVE-2026-48937) muncul kembali sebagai CVE baru. Artinya status "sudah pernah patch" bukan jaminan aman. Tim yang mengelola banyak layanan sebaiknya menjadwalkan jendela patch bulanan, memantau milis nodejs-sec, dan menyimpan inventaris versi Node per server. Dengan 10 CVE High dalam satu rilis, memeriksa versi hari ini jauh lebih murah daripada menjelaskan insiden besok.

Sumber: Node.js, Wednesday, November 11, 2026 Security Releases; Node.js 26.13.1 (LTS); Node.js Security Policy.

Tags :

nodejs , keamanan , http2 , tls , developer

Bagikan :