Berita  

Node.js Darurat! Cacat Brotli ‘Node2Shell’ Buka Pintu RCE, Jutaan Server Terancam

Node.js Darurat! Cacat Brotli 'Node2Shell' Buka Pintu RCE, Jutaan Server Terancam
Node.js Darurat! Cacat Brotli 'Node2Shell' Buka Pintu RCE, Jutaan Server Terancam

FaktaHari – 24 Oktober 2026 | Dunia pengembangan web kembali diguncang. Setelah badai kerentanan PHP, kini giliran node js—runtime JavaScript yang menjadi tulang punggung jutaan layanan backend dan aplikasi cloud—yang berada di pusat krisis keamanan. Proyek Node.js resmi merilis pembaruan darurat untuk menambal celah kritis pada dekoder Brotli yang dapat berujung pada eksekusi kode jarak jauh (Remote Code Execution/RCE). Celah yang dijuluki ‘Node2Shell’ ini terdaftar sebagai CVE-2026-111497 dan diklasifikasikan sebagai ‘High’ atau berisiko tinggi.

Laporan resmi menyebutkan bahwa kerentanan bersemayam di dalam pustaka kompresi Brotli buatan Google yang tertanam langsung di dalam node js. Masalahnya bukan pada Brotli secara umum, melainkan pada kode dekoder ‘c/dec/decode.c’ versi 1.0.3 hingga 1.2.0 yang mengalami buffer overflow. Ketika decoder memproses aliran data terkompresi yang dibuat secara jahat, data dapat ditulis melewati batas buffer memori yang dialokasikan, merusak state decoder di sekitarnya. Inilah yang membuka jalan bagi penyerang tanpa autentikasi untuk menyebabkan denial of service (DoS), membocorkan isi memori server, hingga mengeksekusi kode berbahaya.

Bukti Eksploitasi di Dunia Nyata

Yang membuat situasi ini mendesak adalah munculnya bukti eksploitasi nyata hanya sehari setelah patch dirilis. Pada 22 Oktober 2026, para peneliti dari Imperva melaporkan keberhasilan mengeksekusi kode pada image resmi Linux arm64 node js versi 24.22.0 yang belum ditambal. Eksperimen tersebut menggunakan jalur fetch() bawaan Node.js untuk membaca respons terkompresi, serta konfigurasi Express 5 dan body-parser 2 yang secara otomatis mendekompresi body permintaan. Input yang sama ditolak oleh versi perbaikan 24.22.1. Meski eksploitasi memerlukan beberapa kali percobaan dan bergantung pada konfigurasi aplikasi tertentu, temuan ini cukup untuk menaikkan status ancaman dari sekadar teori menjadi risiko konkret.

Siapa yang Paling Rentan?

Menurut analisis teknis, ada tiga jalur utama yang membuat aplikasi node js terpapar. Pertama, server web yang menerima permintaan dari klien eksternal. Server HTTP murni Node.js memang tidak otomatis mendekode body Brotli, tetapi kombinasi populer Express 5 dan body-parser 2.x akan mendekompresi body dengan header ‘Content-Encoding: br’ secara otomatis. Kedua, komunikasi keluar (outbound) melalui fungsi fetch() bawaan yang mendekompresi respons Brotli dari server eksternal—berbahaya jika aplikasi mengirim webhook ke server yang dikuasai penyerang atau memanggil URL sembarang. Ketiga, kode aplikasi yang meneruskan input tidak tepercaya langsung ke fungsi dekompresi di modul node:zlib seperti brotliDecompress.

Perlu dicatat, kerentanan ini tidak serta-merta membuat setiap server Node.js otomatis terinfeksi hanya karena menerima permintaan. Pihak Imperva menegaskan bahwa akar masalahnya ada pada dekoder Node.js yang dipanggil oleh framework, bukan pada Express atau body-parser itu sendiri. Namun, karena Brotli tertanam di dalam runtime, semua versi resmi yang dirilis sebelum 21 Oktober 2026 terkena dampak. Runtime alternatif Bun juga dilaporkan memiliki cacat serupa pada versi sebelum 1.4.4.

Langkah Mitigasi Wajib

Proyek Node.js telah menerbitkan pembaruan yang mencakup tiga cabang versi. Para operator disarankan segera meningkatkan versi node js mereka ke rilis berikut:

  • Cabang 26.x: versi 26.12.1 atau lebih tinggi
  • Cabang 24.x LTS: versi 24.22.1 atau lebih tinggi
  • Cabang 22.x LTS: versi 22.23.4 atau lebih tinggi

Selain itu, pengguna Bun harus beralih ke versi 1.4.4 atau lebih baru, sementara pustaka Brotli mandiri telah ditambal pada versi 1.2.1, 1.1.1, dan 1.0.10. Penting untuk dicatat bahwa versi Node.js yang sudah mencapai akhir masa dukungan (EOL) seperti 25.x, 23.x, 20.x, dan versi lebih lama tidak akan menerima patch, sehingga pengguna wajib bermigrasi ke versi LTS.

Pembaruan 21 Oktober 2026 ternyata tidak hanya menambal Brotli. Total ada 10 kerentanan yang diselesaikan di cabang 26.x, 24.x, dan 22.x: empat berkategori kritis, tiga menengah, dan tiga rendah. Selain cacat dekoder Brotli, patch mencakup penanganan karakter null yang tidak tepat pada resolusi DNS serta pemotongan nama DNS, dua celah bypass validasi nama host pada sertifikat TLS, perbaikan penanganan respons koneksi persisten, duplikasi cache angka acak, dan masalah model izin. Pustaka dependensi eksternal seperti c-ares, OpenSSL, dan Undici juga ikut diperbarui.

Kesimpulan

Kemunculan ‘Node2Shell’ menjadi pengingat keras bahwa rantai pasok perangkat lunak, bahkan pada komponen kompresi yang tampak sepele, dapat menjadi vektor serangan yang mematikan. Publikasi patch dan penerapannya di lapangan adalah dua hal berbeda. Para operator tidak cukup hanya memeriksa versi pustaka di sistem operasi, tetapi juga harus memverifikasi versi node js dan Brotli yang tertanam di dalam aplikasi serta image kontainer di lingkungan produksi. Mengingat eksploitasi sudah terbukti mungkin dilakukan, penundaan pembaruan sama dengan membiarkan pintu belakang terbuka bagi penyerang.

Exit mobile version