Ekosistem Node.js kembali menghadapi perhatian keamanan setelah dua kerentanan ditemukan pada Undici, pustaka HTTP client yang menjadi bagian penting dari infrastruktur komunikasi HTTP dalam Node.js.
Kedua kerentanan tersebut diidentifikasi sebagai CVE-2026-109869 dan CVE-2026-109924, dengan dampak utama berupa Denial of Service (DoS).
Informasi kerentanan dipublikasikan melalui GitHub Security Advisory pada 15 Oktober 2026 dan diperbarui pada 23 Oktober 2026.
Kerentanan pertama berkaitan dengan kesalahan penanganan respons HTTP yang menggunakan terlalu banyak nilai Content-Encoding. Dalam kondisi tertentu, respons dari server berbahaya dapat menyebabkan proses Node.js berhenti akibat kesalahan yang tidak tertangani.
Sementara itu, kerentanan kedua memengaruhi mekanisme pemrosesan Server-Sent Events (SSE) melalui EventSource. Penyerang dapat memanfaatkan respons yang dirancang khusus untuk meningkatkan konsumsi memori hingga mengganggu ketersediaan aplikasi.
Kedua temuan ini menunjukkan bahwa keamanan aplikasi tidak hanya bergantung pada endpoint yang menerima permintaan pengguna, tetapi juga pada cara aplikasi memproses respons dari server eksternal.
Apa Itu Undici dalam Ekosistem Node.js?
Undici merupakan pustaka HTTP/1.1 client untuk Node.js yang dikembangkan dengan fokus pada performa dan efisiensi komunikasi jaringan.
Pustaka ini menyediakan berbagai antarmuka untuk melakukan permintaan HTTP, termasuk:
fetch()untuk mengirim permintaan HTTP.request()untuk komunikasi HTTP tingkat lebih rendah.Clientuntuk mengelola koneksi ke server.Pooluntuk pengelolaan beberapa koneksi.EventSourceuntuk menerima Server-Sent Events.WebSocketuntuk komunikasi dua arah.
Node.js menggunakan Undici sebagai bagian dari implementasi Fetch API bawaan.
Sebagai contoh, aplikasi dapat melakukan permintaan HTTP menggunakan kode berikut:
const response = await fetch(
"https://api.example.com/data"
);
const data = await response.json();
console.log(data);
Pada Node.js modern, fungsi fetch() tersebut menggunakan implementasi HTTP yang berkaitan dengan Undici.
Artinya, pengembang tidak selalu perlu memasang paket undici secara langsung untuk menggunakan teknologi ini.
Namun, terdapat perbedaan antara Undici yang dibundel dalam Node.js dan paket Undici yang dipasang melalui npm.
Pembaruan paket npm tidak otomatis memperbarui salinan Undici yang dibundel bersama runtime Node.js.
Karena itu, pemeriksaan keamanan perlu mempertimbangkan keduanya.
Detail Kerentanan CVE-2026-109869 dan CVE-2026-109924
Berikut perbandingan kedua kerentanan berdasarkan GitHub Security Advisory.
Informasi | CVE-2026-109869 | CVE-2026-109924 |
|---|---|---|
Komponen | Undici | Undici |
Fitur terdampak | fetch() | EventSource |
Jenis kerentanan | Unhandled Error | Unbounded Memory |
Dampak | Denial of Service | Denial of Service |
Tingkat keparahan | High | Moderate |
Skor CVSS 3.1 | 7.5 | 5.9 |
CWE | CWE-248, CWE-459 | CWE-770 |
Tanggal advisory | 15 Oktober 2026 | 15 Oktober 2026 |
Versi perbaikan 6.x | 6.29.1 | 6.29.1 |
Versi perbaikan 7.x | 7.30.1 | 7.30.1 |
Versi perbaikan 8.x | 8.12.2 | 8.12.2 |
Kedua kerentanan memengaruhi ketersediaan aplikasi, tetapi memiliki mekanisme eksploitasi yang berbeda.
CVE-2026-109869 berkaitan dengan kesalahan yang tidak tertangani dalam pemrosesan respons HTTP.
Sebaliknya, CVE-2026-109924 berkaitan dengan penggunaan memori yang tidak dibatasi secara memadai ketika memproses data EventSource.
CVE-2026-109869: Denial of Service melalui Content-Encoding HTTP
CVE-2026-109869 merupakan kerentanan dengan tingkat keparahan High dan skor CVSS 3.1 sebesar 7,5.
Kerentanan ini memengaruhi mekanisme fetch() dalam Undici ketika menerima respons HTTP yang memiliki rantai Content-Encoding melebihi batas yang diperbolehkan.
Apa Itu Content-Encoding?
Content-Encoding merupakan header HTTP yang menjelaskan metode pengodean atau kompresi yang diterapkan pada isi respons.
Beberapa nilai yang umum digunakan antara lain:
gzipdeflatebr
Sebagai contoh, server dapat mengirim respons dengan header:













