Cabang | Versi Terdampak | Versi Perbaikan |
|---|---|---|
6.x | 6.5.0 hingga sebelum 6.29.1 | 6.29.1 |
7.x | 7.0.0 hingga sebelum 7.30.1 | 7.30.1 |
8.x | 8.0.0 hingga sebelum 8.12.2 | 8.12.2 |
Perbaikan dilakukan dengan membatasi jumlah field data, potongan buffer, panjang baris yang belum selesai, dan total data internal yang disimpan parser.
Dengan demikian, penggunaan memori tidak hanya dikendalikan berdasarkan ukuran body respons.
Perbandingan Mekanisme Kedua Kerentanan
Walaupun keduanya dapat menyebabkan Denial of Service, mekanisme eksploitasi berbeda secara signifikan.
Aspek | CVE-2026-109869 | CVE-2026-109924 |
|---|---|---|
Komponen | fetch() | EventSource |
Jalur serangan | Respons HTTP | Server-Sent Events |
Penyebab utama | Kesalahan internal tidak tertangani | Akumulasi state parser |
Dampak langsung | Proses berpotensi berhenti | Memori berpotensi habis |
Sumber serangan | Server HTTP berbahaya | Server SSE berbahaya |
Skor CVSS | 7.5 | 5.9 |
Tingkat keparahan | High | Moderate |
Kedua kerentanan tersebut tidak secara langsung menunjukkan kemampuan Remote Code Execution atau pencurian data.
Dampak yang dijelaskan dalam advisory resmi berfokus pada ketersediaan layanan.
Apakah Node.js Bawaan Juga Terdampak?
Pertanyaan penting bagi pengembang adalah apakah aplikasi yang menggunakan fungsi fetch() bawaan Node.js juga memiliki risiko.
Node.js menggunakan Undici sebagai implementasi yang mendukung Fetch API.
Namun, Node.js membundel versi Undici tersendiri.
Karena itu, terdapat dua kondisi yang perlu diperiksa.
1. Aplikasi Memasang Undici melalui npm
Jika proyek secara langsung menggunakan paket undici, pengembang dapat memeriksa versinya melalui dependency manager.
Pembaruan dapat dilakukan pada paket npm yang digunakan proyek.
2. Aplikasi Menggunakan fetch() Bawaan Node.js
Jika aplikasi menggunakan fetch() global tanpa memasang Undici secara langsung, pengembang perlu memeriksa versi Undici yang dibundel bersama runtime Node.js.
Pembaruan paket npm saja tidak memperbarui komponen internal Node.js.
Pada 21 Oktober 2026, proyek Node.js menerbitkan pembaruan keamanan untuk cabang 22.x, 24.x, dan 26.x.
Versi pembaruan tersebut adalah:
Cabang Node.js | Versi Pembaruan Keamanan |
|---|---|
Node.js 22.x | 22.23.4 |
Node.js 24.x | 24.22.1 |
Node.js 26.x | 26.12.1 |
Pembaruan tersebut juga mencakup sejumlah perbaikan keamanan lain pada Node.js.
Pengembang sebaiknya menggunakan versi keamanan terbaru pada cabang Node.js yang masih didukung.
Cara Memeriksa Versi Undici pada Proyek
Langkah pertama adalah mengidentifikasi versi Undici yang digunakan.
Memeriksa Undici yang Dipasang melalui npm
Jalankan perintah:
npm ls undici
Perintah tersebut menampilkan versi Undici yang terdapat dalam dependency tree proyek.
Jika Undici merupakan dependensi tidak langsung, hasilnya juga dapat menunjukkan paket yang menggunakannya.
Memeriksa Versi Node.js
Gunakan:
node --version
Perintah tersebut menampilkan versi runtime Node.js yang sedang digunakan.
Memeriksa Undici Bawaan Node.js
Jalankan:
node -p "process.versions.undici"
Perintah tersebut menampilkan versi Undici yang dibundel dalam runtime Node.js apabila informasi versinya tersedia.
Hasilnya perlu dibandingkan dengan informasi pembaruan keamanan Node.js yang sesuai.
Penting untuk tidak menganggap bahwa versi paket npm dan versi Undici bawaan Node.js selalu identik.
Cara Mengatasi CVE-2026-109869 dan CVE-2026-109924
Mitigasi utama untuk kedua kerentanan adalah memperbarui Undici ke versi yang telah diperbaiki.
1. Perbarui Undici
Jika proyek menggunakan Undici 6.x:
npm install undici@^6.29.1
Untuk cabang 7.x:
npm install undici@^7.30.1
Untuk cabang 8.x:
npm install undici@^8.12.2
Pemilihan cabang harus mempertimbangkan kompatibilitas proyek.
Setelah pembaruan, jalankan kembali pengujian aplikasi untuk memastikan tidak terjadi perubahan perilaku yang tidak diharapkan.
2. Perbarui Runtime Node.js
Jika aplikasi menggunakan Undici bawaan Node.js, lakukan pembaruan runtime ke versi keamanan yang telah diperbaiki.
Untuk aplikasi produksi, gunakan cabang Node.js yang masih mendapatkan dukungan keamanan.
Pengembang juga perlu memperbarui container image, server deployment, atau lingkungan CI/CD yang menggunakan runtime lama.
3. Batasi Komunikasi dengan Server Tidak Tepercaya
Kedua kerentanan melibatkan respons dari server yang dikendalikan pihak berbahaya.
Karena itu, aplikasi sebaiknya tidak melakukan permintaan HTTP atau membuka koneksi EventSource ke endpoint sembarangan tanpa pengendalian.
Jika aplikasi menerima URL dari pengguna, lakukan validasi tujuan koneksi dan terapkan pembatasan akses jaringan yang sesuai.
Langkah ini membantu mengurangi permukaan serangan, tetapi tidak menggantikan pembaruan keamanan.
4. Terapkan Timeout pada Permintaan HTTP
Timeout membantu mengurangi risiko koneksi yang berlangsung terlalu lama.
Contoh:
async function fetchData(url) {
const response = await fetch(url, {
signal: AbortSignal.timeout(10000),
});
if (!response.ok) {
throw new Error(
`HTTP error: ${response.status}`
);
}
return response.json();
}
Kode tersebut menetapkan batas waktu permintaan sebesar 10 detik.
Namun, timeout bukan solusi langsung untuk CVE-2026-109869 karena kesalahan internal dapat terjadi sebelum timeout menyelesaikan permintaan.
5. Pantau Penggunaan Memori
Aplikasi Node.js sebaiknya memiliki monitoring terhadap penggunaan memori.
Contoh pemeriksaan sederhana:
const memory = process.memoryUsage();
console.log({
rss: memory.rss,
heapUsed: memory.heapUsed,
heapTotal: memory.heapTotal,
});
Informasi tersebut dapat digunakan untuk membantu mengidentifikasi peningkatan penggunaan memori yang tidak wajar.
Pada lingkungan produksi, pemantauan sebaiknya menggunakan sistem monitoring terpusat dengan alert otomatis.
6. Terapkan Batas Sumber Daya
Container atau layanan yang menjalankan Node.js dapat diberikan batas penggunaan memori.
Pembatasan ini membantu mengurangi dampak terhadap layanan lain apabila satu proses mengalami konsumsi sumber daya berlebihan.
Namun, pembatasan memori tidak menghilangkan kerentanan.
Jika batas terlampaui, proses aplikasi tetap dapat dihentikan.
7. Lakukan Audit Dependensi
Untuk proyek npm:
npm audit
Perintah tersebut membantu mendeteksi kerentanan yang telah tercatat dalam basis data advisory npm.
Pengembang juga disarankan memeriksa dependensi tidak langsung dan melakukan pembaruan berdasarkan informasi keamanan resmi.
Apakah Terdapat Workaround Tanpa Pembaruan?
GitHub Security Advisory untuk kedua kerentanan mencantumkan bahwa tidak tersedia workaround resmi.
Karena itu, pembaruan ke versi yang telah diperbaiki merupakan tindakan utama yang direkomendasikan.
Pembatasan endpoint, monitoring, timeout, dan isolasi proses dapat membantu mengurangi risiko operasional, tetapi tidak boleh dianggap sebagai pengganti patch.
Khusus CVE-2026-109869, penanganan kesalahan menggunakan try...catch tidak menjamin proses terlindungi dari kondisi internal yang menyebabkan unhandled error.
Sementara pada CVE-2026-109924, pembatasan ukuran respons saja tidak sepenuhnya menyelesaikan masalah akumulasi state parser pada versi rentan.
Dampak bagi Pengembang Next.js dan Aplikasi Full-Stack
Undici memiliki peran penting dalam ekosistem Node.js, termasuk pada aplikasi backend yang menggunakan Fetch API.
Pengembang Next.js, aplikasi API, dan layanan full-stack perlu memperhatikan versi runtime yang digunakan.
Namun, penggunaan Next.js tidak secara otomatis berarti aplikasi dapat dieksploitasi melalui kedua CVE tersebut.
Risiko bergantung pada jalur pemrosesan respons HTTP, versi komponen, dan apakah aplikasi berkomunikasi dengan server yang dapat dikendalikan pihak tidak tepercaya.
Pengembang perlu melakukan pemeriksaan terhadap:
Versi Node.js pada server produksi.
Versi Undici dalam dependency tree.
Penggunaan
fetch()untuk mengambil data eksternal.Penggunaan EventSource atau SSE client.
Konfigurasi container dan deployment.
Mekanisme monitoring serta pemulihan layanan.
Pada aplikasi yang bergantung pada layanan API pihak ketiga, validasi sumber respons dan pembaruan dependensi merupakan bagian penting dari pengelolaan risiko.
Rekomendasi Keamanan untuk Lingkungan Produksi
Selain memperbarui komponen terdampak, organisasi sebaiknya menerapkan pendekatan keamanan berlapis.
Pertama, gunakan versi Node.js yang masih didukung dan memiliki pembaruan keamanan terbaru.
Kedua, lakukan pemantauan terhadap dependensi aplikasi menggunakan perangkat lunak Software Composition Analysis.
Ketiga, batasi koneksi keluar dari aplikasi berdasarkan kebutuhan bisnis.
Keempat, gunakan monitoring untuk mendeteksi restart proses, peningkatan memori, dan kegagalan permintaan HTTP.
Kelima, lakukan pengujian regresi setiap kali dependensi atau runtime diperbarui.
Terakhir, pastikan terdapat mekanisme pemulihan layanan yang dapat dijalankan apabila proses aplikasi berhenti secara tidak terduga.
Pendekatan tersebut tidak hanya relevan untuk dua kerentanan Undici, tetapi juga untuk berbagai ancaman Denial of Service pada aplikasi modern.
Kesimpulan
Dua kerentanan CVE-2026-109869 dan CVE-2026-109924 menunjukkan bahwa pemrosesan respons HTTP dapat menjadi sumber risiko keamanan bagi aplikasi Node.js.
CVE-2026-109869 memiliki tingkat keparahan High dengan skor CVSS 7,5. Kerentanan ini memungkinkan respons HTTP tertentu dari server berbahaya memicu kesalahan internal yang tidak tertangani hingga menghentikan proses Node.js.
Sementara itu, CVE-2026-109924 memiliki tingkat keparahan Moderate dengan skor CVSS 5,9. Kerentanan ini dapat menyebabkan konsumsi memori berlebihan melalui pemrosesan data Server-Sent Events.
Kedua masalah tersebut telah mendapatkan perbaikan pada Undici versi 6.29.1, 7.30.1, dan 8.12.2.
Pengembang yang menggunakan Undici secara langsung disarankan memperbarui paket ke versi yang telah diperbaiki.
Sementara itu, pengguna Fetch API bawaan Node.js perlu memastikan runtime yang digunakan telah mendapatkan pembaruan keamanan terkait.
Keamanan aplikasi tidak hanya ditentukan oleh bagaimana server memproses permintaan, tetapi juga oleh bagaimana aplikasi menangani respons dari sistem eksternal.













