Node.js Perbaiki 16 Celah, HTTP/2 Bisa Bikin Server Crash dan Bocorkan Data
Node.js merilis pembaruan keamanan yang menambal 16 kerentanan di tiga jalur rilis yang didukung. Dua di antaranya bug HTTP/2 yang bisa membuat server crash dan membocorkan isi memori, termasuk respons milik koneksi lain.
Kronologi Rilis dan Versi yang Diperbaiki
Proyek Node.js merilis versi 22.23.5, 24.22.3, dan 26.13.1 pada pekan ini. Ketiganya menambal 16 celah di dalam runtime, dengan tujuh di antaranya berkategori tinggi. Delapan celah terkonsentrasi di kode server HTTP/2, HTTPS, dan TLS milik Node.js sendiri.
Menurut advisori yang dikutip The Hacker News, celah pertama bernomor CVE-2026-123863. Kerentanan ini hanya membutuhkan server HTTP/2 default yang membalas sebelum body permintaan tiba sepenuhnya. Perilaku itu disebut proyek sebagai hal yang lazim.
Serangan bisa dilakukan lewat koneksi TLS maupun teks biasa. Klien tanpa autentikasi dapat memicu crash pada server yang berjalan di jalur rilis 24.x dan 26.x. Dampaknya adalah gangguan layanan karena proses Node.js berhenti.
Celah kedua, CVE-2026-123866, juga menyangkut HTTP/2. Kali ini server bisa mengirim potongan memori kepada klien, termasuk respons yang seharusnya ditujukan untuk koneksi lain. Pada versi 24.22.0 dan 26.9.0 ke atas, klien sendirian sudah cukup memicu kebocoran.
Pada jalur 22.x serta build 24.x dan 26.x yang lebih lama, kebocoran masih bisa terjadi ketika server menutup stream di tengah respons, misalnya setelah idle timeout. Artinya, kondisi jaringan yang tampak normal pun bisa membuka jalan bagi serangan.
Pihak yang Terlibat dan Pernyataan Proyek
Proyek Node.js menyebut pembaruan versi sebagai satu-satunya perbaikan. "Tidak ada workaround untuk server yang belum bisa memperbarui," demikian bunyi advisori yang dirujuk laporan tersebut. Pernyataan itu menegaskan bahwa administrator tidak punya pilihan selain naik versi.
Lima celah, termasuk CVE-2026-123863 dan CVE-2026-123864, dilaporkan oleh Chris Rohlf bekerja sama dengan Claude dan Anthropic Research. Nama peneliti itu tercantum dalam advisori, meski rincian teknis temuan tidak diuraikan panjang.
Advisori juga mencatat bahwa jalur yang sudah habis masa dukungan, termasuk 20.x dan 25.x, tidak menerima perbaikan dalam rilis ini. Proyek menyatakan versi semacam itu selalu terpengaruh. Pengguna di jalur tersebut diminta mempertimbangkan migrasi.
Hingga laporan ini diturunkan, tidak ada keterangan resmi soal serangan yang memanfaatkan celah-celah tersebut. Advisori juga tidak menyebut apakah server yang memenuhi syarat kerentanan HTTPS perlu mengganti kunci TLS atau rahasia lain setelah pembaruan.
Latar Belakang: Mengapa HTTP/2 dan HTTPS Rawan
HTTP/2 memungkinkan banyak permintaan berjalan paralel di satu koneksi. Model itu menghemat latensi, tetapi memperbesar permukaan serangan karena manajemen stream dan memori menjadi lebih rumit. Ketika server membalas sebelum body permintaan lengkap, state internal bisa berada di kondisi yang tidak terduga.
Pada HTTPS, kerentanan CVE-2026-123864 muncul ketika handler memanggil res.flushHeaders() sebelum body permintaan tiba sepenuhnya, lalu memanggil res.end() dengan data. Kombinasi itu dapat membuat klien tanpa autentikasi membaca memori dari koneksi lain.
Yang bocor bukan sekadar sisa buffer. Proyek menyebut data yang terbaca dapat mencakup "kunci privat TLS dan permintaan pengguna lain". Untuk memicu pembacaan, penyerang juga memerlukan rute yang mengirim balik atau menyimpan body permintaan.
Server HTTP biasa yang dibangun dengan node:http tidak terpengaruh celah ini. Namun, aplikasi yang mengandalkan HTTPS bawaan Node.js tetap perlu waspada, terutama yang menangani unggahan file atau formulir besar.
Empat celah tinggi lainnya melengkapi daftar. CVE-2026-123865 memungkinkan klien membuat server HTTP/2 default menahan memori dan file descriptor secara permanen di ketiga jalur. CVE-2026-123874 memungkinkan klien merusak memori server di 24.x dan 26.x saat server menyajikan file lewat stream.respondWithFile() atau stream.respondWithFD().
Masih terkait penyajian file, CVE-2026-123875 berkategori sedang: pembatalan unduhan dapat membuat server crash di ketiga jalur. Lalu CVE-2026-126051 memungkinkan klien membuat server TLS crash di 24.x dan 26.x bila server memakai hook SNICallback, OCSPRequest, newSession, resumeSession, atau server.addContext().
Terakhir, CVE-2026-123872 menyangkut server TLS dengan aturan sertifikat klien yang lebih ketat untuk sejumlah hostname. Klien yang disetujui untuk hostname lain bisa beralih ke hostname yang lebih ketat saat renegosiasi TLS 1.2 tanpa memenuhi aturannya. Ketiga jalur terdampak.
Dampak bagi Operator Server dan Pengembang Aplikasi
Bagi operator, dampak paling langsung adalah risiko gangguan layanan. Crash yang dipicu klien tanpa autentikasi dapat diulang hingga layanan tidak tersedia. Pada layanan yang menangani lalu lintas tinggi, satu skrip sederhana cukup untuk memicu siklus restart berulang.
Kebocoran memori lebih berbahaya karena bersifat senyap. Kunci privat TLS yang terbaca dapat membuka peluang penyadapan atau pemalsuan koneksi. Permintaan pengguna lain yang bocor bisa memuat token sesi, kredensial, atau data pribadi.
File descriptor yang tertahan permanen juga bisa menghabiskan sumber daya sistem. Server yang kehabisan descriptor tidak dapat menerima koneksi baru, meski prosesnya tetap hidup. Gejalanya sering tertukar dengan masalah kapasitas biasa.
Advisori tidak menyebut adanya eksploitasi di lapangan. Namun, ketiadaan laporan bukan jaminan. Celah yang sudah dipublikasikan biasanya mulai dipindai otomatis dalam hitungan hari setelah patch tersedia.
Pengguna jalur 20.x dan 25.x berada di posisi paling rentan. Tanpa perbaikan, satu-satunya jalan adalah naik ke jalur yang masih didukung. Proyek menegaskan versi end-of-life selalu terpengaruh.
Langkah Selanjutnya: Patch dan Pemeriksaan Internal
Langkah pertama adalah memperbarui ke versi 22.23.5, 24.22.3, atau 26.13.1 sesuai jalur yang dipakai. Proyek tidak menyediakan workaround, sehingga penundaan berarti membiarkan celah terbuka.
Setelah pembaruan, tim keamanan sebaiknya meninjau kode yang memakai HTTP/2, HTTPS, dan TLS bawaan Node.js. Perhatikan pola pemanggilan header sebelum body lengkap, serta rute yang mengirim balik atau menyimpan body permintaan.
Untuk server yang memakai hook TLS lanjutan, seperti SNICallback atau OCSPRequest, pengujian ulang setelah patch perlu dilakukan. Perilaku hook bisa berubah seiring perbaikan internal.
Organisasi juga disarankan memeriksa apakah ada server yang memenuhi kondisi kerentanan HTTPS. Jika ya, pertimbangkan rotasi kunci TLS dan rahasia lain sebagai langkah kehati-hatian, meski advisori belum mewajibkannya.
Terakhir, pantau advisori resmi dan pembaruan berikutnya. Node.js merilis patch secara berkala, dan celah baru di kode jaringan biasanya muncul setelah audit menyeluruh. Referensi tambahan bisa dilihat di blog kerentanan Node.js.
Analisis Redaksi
Yang membuat rilis ini menonjol bukan jumlah celahnya, melainkan sifat delapan celah di kode jaringan bawaan. Selama bertahun-tahun, HTTP/2 dan HTTPS di Node.js dianggap sebagai lapisan yang sudah matang. Temuan ini menunjukkan bahwa permukaan serangan justru bergeser ke bagian yang paling jarang diperiksa ulang.
Keputusan proyek untuk tidak menyediakan workaround bisa dibaca sebagai sikap tegas, tetapi juga sebagai beban bagi operator yang terkunci pada versi lama. Perusahaan dengan siklus rilis panjang sering tidak bisa serta-merta naik versi. Mereka yang tertinggal di 20.x dan 25.x kini menanggung risiko penuh tanpa jalan keluar resmi.
Ketiadaan keterangan soal rotasi kunci TLS setelah patch adalah celah komunikasi yang perlu ditutup. Jika memori bocor memuat kunci privat, memperbarui perangkat lunak tidak otomatis membuat kunci itu aman. Proyek semestinya memberi panduan eksplisit, bukan membiarkan operator menebak.
What's Your Reaction?
Like
0
Dislike
0
Love
0
Funny
0
Angry
0
Sad
0
Wow
0