Jika aplikasi, laman web, kedai dalam talian atau API syarikat anda dibangunkan dengan Node.js, termasuk laman Next.js dan bahagian belakang yang dibina dengan Express atau NestJS, minta pembangun anda hari ini juga untuk mengemas kini Node.js kepada versi 22.23.4, 24.22.1 atau 26.12.1, kemudian membina semula dan memulakan semula pelayan. Projek Node.js mengeluarkan versi-versi ini pada 21 Oktober 2026 untuk menutup kelemahan yang dikenali sebagai Node2Shell (CVE-2026-111497), dengan skor 9.2 daripada 10, yang membolehkan penyerang tanpa sebarang kata laluan menjalankan kod pada pelayan anda dengan menghantar data termampat yang direka khas. Pihak Berkuasa Keselamatan Siber Kebangsaan Arab Saudi (NCA) telah mengeluarkan amaran tahap «sangat tinggi», dan pada 27 Oktober agensi keselamatan siber Amerika Syarikat, CISA, mengesahkan bahawa kelemahan ini sedang dieksploitasi dalam serangan sebenar.

Apakah sebenarnya yang berlaku?

Kelemahan ini terdapat dalam Brotli, format pemampatan yang digunakan oleh pelayan web dan pelayar untuk mengecilkan data yang mereka tukar, dan Node.js membawa salinannya sendiri bagi penyahkod Brotli keluaran Google. Menurut notis keselamatan Node.js, input termampat yang rosak menyebabkan penyahkod menulis melepasi hujung penimbal dalaman, yang boleh menyebabkan aplikasi ranap, membocorkan kandungan memorinya atau membolehkan penyerang menjalankan kod. Notis itu menyebut pasukan Codex Security daripada OpenAI sebagai pihak yang melaporkan kelemahan ini, dan keluaran yang sama membaiki sejumlah 10 kelemahan, 4 daripadanya berisiko tinggi.

Selepas itu, semuanya berlaku dengan pantas. Pada 22 Oktober, sehari selepas pembaikan, Red Team Imperva menjalankan kod pada imej rasmi Node.js 24.22.0 melalui dua laluan harian: fungsi terbina dalam fetch() dan badan permintaan yang diproses oleh Express 5. Pada 26 Oktober, ELLIO merekodkan trafik eksploitasi sebenar yang membawa kod serangan awam. Pada 27 Oktober, CISA memasukkan kelemahan ini ke dalam katalog kelemahan yang dieksploitasi secara aktif.

Pepijat itu sendiri sudah lama. Menurut rekod CVE, ia menjejaskan Brotli versi 1.0.3 hingga 1.2.0, dan OpenAI berkata punca utamanya telah dibaiki dalam kod sumber Brotli pada Februari 2026 tanpa sesiapa mengetahui bahawa ia kelemahan keselamatan dan tanpa versi baharu, sehinggalah Brotli 1.2.1 dikeluarkan pada 21 Oktober. Jika ini kedengaran biasa, memang begitu: minggu lepas kami mengulas PHP2Shell, kelemahan yang membuka pelayan PHP dan WordPress. Node2Shell ialah risiko yang sama jenis bagi aplikasi yang dibina dengan JavaScript.

Adakah aplikasi saya terjejas?

Node.js menjalankan bahagian pelayan bagi sebahagian besar laman web moden, bahagian belakang aplikasi mudah alih, papan pemuka dan API. Jika sistem anda dibina dalam beberapa tahun kebelakangan ini oleh agensi atau pembangun bebas, besar kemungkinan ia berjalan pada Node.js tanpa anda sedari. Siri yang terjejas ialah 22.x, 24.x dan 26.x sebelum versi yang dibaiki, serta siri yang sudah tamat sokongan, iaitu 20.x, 23.x dan 25.x, yang menurut projek Node.js sentiasa terjejas dan tidak akan menerima pembaikan.

Menjalankan Node.js sahaja tidak bermakna anda terdedah: mesti ada sesuatu yang menyalurkan data penyerang kepada penyahkod. Penyelidik menyenaraikan tiga laluan biasa:

  • Permintaan termampat yang masuk. Penghurai badan permintaan dalam Express 5, body-parser 2 dan Koa membuka badan berformat Brotli secara automatik, sebelum kod anda sendiri sempat berjalan.
  • Kandungan yang diambil oleh pelayan anda. Jika aplikasi anda membuka pautan luar, seperti pratonton pautan, webhook, perangkak atau ejen AI yang membaca halaman web, laman jahat boleh membalas dengan data termampat beracun. Fungsi terbina dalam fetch() dalam Node, axios dan permintaan sebelah pelayan dalam rangka kerja seperti Next.js membukanya secara automatik.
  • Fail yang dimuat naik oleh pengguna. Mana-mana kod yang membuka data Brotli yang dihantar oleh pelanggan atau pelawat.

Risikonya melangkaui Node.js. Amaran NCA turut menyebut Python, Bun dan Envoy, dan Microsoft mengeluarkan pembaikan pada 25 Oktober untuk .NET 8, 9, 10 dan 11, Visual Studio 2019, 2022 dan 2026, serta PowerShell 7.4 hingga 7.6, dengan menilai kelemahan ini sebagai kritikal untuk .NET dan memberikan penilaian «Exploitation More Likely». Microsoft menjelaskan bahawa penyahmampatan Brotli tidak diaktifkan secara lalai dalam .NET, jadi hanya aplikasi yang mengaktifkannya terdedah.

Jika laman anda dihoskan di Vercel, syarikat itu menyatakan dalam notisnya bahawa pada hari yang sama Node.js mengeluarkan pembaikan, ia telah melaksanakan peraturan tembok api yang menyekat laluan serangan masuk untuk semua projek, dan semua penggunaan baharu sejak 28 Oktober menggunakan Node.js yang telah dibaiki. Projek sedia ada perlu digunakan semula, dan projek yang masih menggunakan Node.js 20 mesti beralih kepada 22 atau 24.

Apa yang perlu dilakukan hari ini: lima langkah

  1. Tanya satu soalan secara bertulis. Versi Node.js manakah yang berjalan pada pelayan kita dan di dalam imej Docker kita? Minta pembangun anda menyemak nombor versi Node.js dengan arahan node -v. Jangan bergantung pada nombor versi Brotli: ELLIO mendapati ia menunjukkan 1.2.0 pada binaan yang telah dibaiki dan yang belum dibaiki.
  2. Kemas kini kepada versi yang dibaiki. 22.23.4, 24.22.1 atau 26.12.1. Jika anda masih menggunakan 20.x, 23.x atau 25.x, beralih kepada siri yang disokong seperti 22 atau 24, dan uji sebelum dilancarkan.
  3. Bina semula dan mulakan semula. Proses yang sedang berjalan mengekalkan kod lama. Bina semula imej kontena di atas imej asas yang telah dibaiki, kerana Dockerfile yang ditetapkan pada 24.22.0 akan terus menghantar binaan yang terdedah sehingga seseorang mengubah baris itu. Semak juga pelayan ujian, saluran binaan dan fungsi tanpa pelayan.
  4. Kemas kini salinan lain. Pakej Python Brotli dan brotlicffi (versi 1.2.1 dan 1.2.1.0), Bun, Envoy, pustaka Brotli dalam pengedaran Linux anda, dan .NET melalui kemas kini Microsoft bertarikh 25 Oktober.
  5. Semak log dan fail ranap. Cari permintaan termampat Brotli yang luar biasa besar dan proses yang ranap berulang kali. ELLIO memberi amaran bahawa kebanyakan serangan yang gagal menyebabkan proses ranap, dan fail ranap boleh menyimpan kuki sesi serta kunci milik pelawat, jadi hadkan siapa yang boleh membaca fail ranap (core dumps) dan berapa lama anda menyimpannya.

Jika anda tidak dapat mengemas kini hari ini

Sebagai langkah sementara, sekat permintaan masuk yang membawa pengepala Content-Encoding: br pada pelayan hadapan atau tembok api anda, jika aplikasi anda tidak memerlukannya. Vercel dan Imperva telah menambah peraturan tembok api untuk kelemahan ini, tetapi Vercel sendiri menegaskan bahawa tembok api tidak meliputi respons yang diambil oleh pelayan anda daripada laman lain: hanya kemas kini Node.js yang menutup laluan itu. Anggap setiap lapisan perlindungan sebagai masa tambahan, bukan pengganti kemas kini.

Pandangan Origami

Dua kelemahan kritikal dalam asas web dalam tempoh sebulan, PHP2Shell dan kemudian Node2Shell, menceritakan kisah yang jelas: kod yang ditulis oleh pasukan anda mungkin baik, sedangkan persekitaran masa jalan di bawahnya terbuka. Pembaikan Node2Shell tersimpan kira-kira lapan bulan dalam kod sumber Brotli sebelum sesiapa memahami bahawa ia masalah keselamatan, dan sebaik sahaja butirannya didedahkan, penyelidik hanya memerlukan sehari untuk menjalankan kod pada binaan rasmi. Apa yang kami lihat di banyak syarikat ialah aplikasi yang diserahkan bertahun-tahun dahulu, tanpa sesiapa yang bertanggungjawab ke atas kemas kininya, dan tanpa senarai tempat Node.js benar-benar berjalan. Jika itu keadaan anda, mulakan senarai itu hari ini. Di Origami, kami membina aplikasi web dan sistem, banyak daripadanya berjalan pada Node.js dan Next.js, dan kami memantau kemas kini persekitaran masa jalannya sejak hari pertama. Jika anda mahu aplikasi anda disemak atau Node.js dikemas kini tanpa gangguan, hubungi kami.

Sumber