A Node2Shell néven ismert CVE-2026-111497 a Node.js-be épített Brotli-dekóder memóriabiztonsági hibája. Bizonyos alkalmazásokban a nem megbízható, tömörített adat feldolgozása távoli kódfuttatáshoz vezethet. Az érintettség attól függ, hogy a szolgáltatás eljut-e a sérülékeny dekóderhez.
Ez az útmutató segít leltározni a valóban futó Node.js-példányokat, azonosítani a Brotli-adat útját, frissíteni a futtatókörnyezetet, majd ellenőrizni a telepített képet és az éles folyamatot. A publikus exploit futtatása nem szükséges a javítás igazolásához.
1. Értsd meg, mi a probléma
A CVE-2026-111497 a Node.js natív Brotli-dekóderében lévő határon túli írás. A Node.js projekt magas súlyosságú hibaként közölte, amely távoli kódfuttatást tehet lehetővé. Az Imperva a hivatalos, sérülékeny 24.22.0-s Linux arm64 képen bemutatta a kódfuttatást; ugyanazt a bemenetet a 24.22.1-es javított kiadás elutasította. A bemutató nem jelenti, hogy minden Node.js-alkalmazás azonos módon kihasználható.
Kép megnyitása teljes méretben 2. Leltározd a ténylegesen futó Node.js-t
- Írd össze a publikus API-kat, szerveroldali renderelést végző alkalmazásokat, háttérfolyamatokat, job workereket, konténereket, serverless függvényeket és a Node.js-t csomagoló önálló binárisokat.
- A hoszton futtatott `node -v` csak az adott shell alapértelmezett binárisát mutatja. Konténeren belül, futó példányban és deploy-artifactban is ellenőrizd a verziót.
- Jegyezd fel a CPU-architektúrát, az alapképet vagy csomagforrást, valamint azt, melyik verzió van ténylegesen élesben. A CI-ben használt Node-verzió külön is számít a reprodukálható újraépítéshez.
- Disztribúciós vagy vállalati csomagnál kérj a CVE-2026-111497-re vonatkozó gyártói javítási igazolást; a verziószám önmagában nem mindig döntő.
node -v
node -p "process.version + ' ' + process.arch + ' ' + process.platform"
docker exec sajat-kontener node -v3. Térképezd fel, jut-e nem megbízható Brotli-adat a dekóderhez
Az Imperva két konkrét útvonalat vizsgált: a Node.js beépített `fetch()` által kezelt tömörített választ és a megfelelően konfigurált Express/body-parser útvonalon feldolgozott bejövő törzset. Egy egyszerű Node.js HTTP-szerver a bejövő Brotli-törzset pusztán a kérés fogadásától nem bontja ki automatikusan. Az expozíciót alkalmazásonként kell megállapítani.
| Adatút | Mit ellenőrizz? |
|---|---|
| Kimenő kérésre kapott válasz | Feldolgoz-e az alkalmazás külső, Brotli-tömörített HTTP-választ? |
| Bejövő kérés törzse | Dekódol-e a konfigurált middleware `Content-Encoding: br` törzset? |
| Egyéb fájl vagy üzenet | Hív-e a kód Brotli-felbontást nem megbízható bemeneten? |
4. Frissíts támogatott, javított Node.js-kiadásra
- Készíts ellenőrzött mentést és visszaállási tervet az alkalmazás adatainak és konfigurációjának védelmére.
- Frissítsd a Node.js alapképet vagy telepített csomagot a megfelelő javított kiadásra, és frissítsd a rögzített Dockerfile- és CI-verziókat is.
- Építsd újra a függőségeket és a teljes konténerképet; ne hagyd az új konfiguráció mögött a régi Node-binárist egy rétegben vagy artifactban.
- Cseréld le és indítsd újra az összes érintett folyamatot, podot és serverless kiadást. A már futó processz memóriájában a régi dekóder maradhat.
| Node.js-ág | Első javított kiadás |
|---|---|
| 22.x LTS | 22.23.4 |
| 24.x LTS | 24.22.1 |
| 26.x Current | 26.12.1 |
| Támogatásból kikerült ágak | Váltás támogatott, javított ágra vagy igazolt gyártói támogatás |
5. Igazold az éles javítást
- Az új deploy után az alkalmazás saját futó környezetében ellenőrizd a `process.version` és `process.arch` értékét, valamint a képdigestet vagy csomagkiadást.
- Teszteld a fontos üzleti folyamatokat, a bejövő tömörített kéréseket és a külső API-kból származó válaszokat valós, ártalmatlan tesztadatokkal.
- Nézd meg a Node.js folyamatok újraindítási idejét, a podok/konténerek számát és a hibaszámot; ne maradjon régi replikád a forgalomban.
- Dokumentáld az ellenőrzött szolgáltatásokat, verziókat, image-digesteket, időpontokat és a biztonsági közleményre hivatkozó változtatást.
6. Ha nem tudsz azonnal frissíteni
- A nem megbízható Brotli-adatok feldolgozását az érintett útvonalakon ideiglenesen korlátozhatod, ha a szolgáltatás működése ezt lehetővé teszi.
- Ellenőrizd, hogy a proxy, CDN vagy WAF szabályai minden releváns bejövő útvonalat lefednek-e. A kimenő `fetch()`-válaszokat egy bejövő WAF-szabály nem védi.
- Figyeld a váratlan folyamatleállásokat és dekódolási hibákat, de ezek hiánya nem igazolja, hogy nem történt támadás.
- Rendelj időpontot és felelőst a futtatókörnyezet cseréjéhez; az átmeneti szűrés nem végleges javítás.
7. Kompromittálódás gyanújánál külön vizsgálódj
- Őrizd meg a hozzáférési, alkalmazás- és rendszer-naplókat, a konténereseményeket és a releváns időpontokat.
- Különítsd el az érintett szolgáltatást, és vizsgáld a váratlan folyamatokat, fájlváltozásokat, kimenő kapcsolatokat és hozzáférés-változásokat.
- A vizsgálat alapján cseréld az esetleg hozzáférhető tokeneket és titkokat; szükség esetén tiszta képből és ellenőrzött adatokból építs újra.
- A javított Node.js telepítése után is végezz funkcionális és biztonsági ellenőrzést, mert a frissítés nem távolítja el a korábban elhelyezett rosszindulatú kódot.



