Projekt Node.js vydal bezpečnostní aktualizace pro řady 26.x, 24.x a 22.x a jedna z oprav řeší chybu CVE-2026-111497, zápis mimo hranice paměti v dekodéru Brotli, který podle oznámení projektu umožňuje vzdálené spuštění kódu a má vysokou závažnost. Aktualizujte proto Node.js na verzi 22.23.4, 24.22.1 nebo 26.12.1, případně na novější vydání ze stejné řady, a pak restartujte všechny procesy, ve kterých Node.js běží.
Fakta v článku jsou z veřejných zdrojů, které jsme četli 25. 10. 2026. Postup jsme pro tenhle incident na žádném klientském systému nezkoušeli, takže jde o souhrn oficiálních informací doplněný obecnými kroky.
Co znamenají názvy node2shell a http2shell?
Na žádné ze stránek, které jsme k tématu četli, se tyhle názvy neobjevují, a to ani v oznámení Node.js, ani v poznámkách k vydání.
Název node2shell nejspíš označuje právě CVE-2026-111497. V říjnovém oznámení Node.js ji projekt popisuje jako „Node.js Brotli decoder out-of-bounds write permits remote code execution“ a řadí ji mezi chyby s vysokou závažností. Jistotu ovšem nemáme, protože ten název na žádné oficiální stránce nestojí.
U http2shell je to horší. V oznámení Node.js jsme žádnou chybu v HTTP/2 nenašli, takže nevíme, co tenhle název označuje, a hádat nebudeme. Pokud se k vám dostal z konkrétního článku nebo zprávy, zkuste u zdroje zjistit číslo CVE. Teprve podle něj se dá dohledat, které verze jsou opravené.
Týká se chyba i vašeho Node.js?
Týká, pokud provozujete řadu 22, 24 nebo 26 ve verzi starší, než je opravené vydání. Opravené verze jsou tyhle:
Řada Node.js | Opravená verze | Poznámky k vydání |
|---|---|---|
22.x | 22.23.4 | |
24.x | 24.22.1 | |
26.x | 26.12.1 |
Oznámení Node.js zároveň výslovně upozorňuje, že verze po skončení podpory (end-of-life) jsou při každém bezpečnostním vydání zasažené vždycky. Běží-li aplikace na takové verzi, počítejte s tím, že je zranitelná, a naplánujte přechod na některou z řad v tabulce.
Kdy mají být aktualizace k dispozici? Podle stejného oznámení ve středu 21. října 2026, nebo krátce poté. Poznámky ke všem třem vydáním už jsou zveřejněné na odkazech v tabulce.
Verzi zjistíte podle toho, kde aplikace běží:
- Na serveru zadejte do terminálu node -v. Pokud používáte správce verzí, třeba nvm, může mít terminál jinou verzi než služba, která aplikaci spouští. Rozhoduje ta, se kterou běží služba.
- V kontejneru spusťte node -v přímo uvnitř běžícího kontejneru. Řádek FROM v Dockerfile napoví, ze kterého obrazu kontejner vychází, ovšem obecná značka s číslem řady přesnou verzi neprozradí.
- Na hostingové platformě hledejte verzi runtime Node.js v nastavení aplikace nebo projektu.
Jak Node.js aktualizovat podle toho, kde aplikace běží?
Cíl je všude stejný: dostat aplikaci na 22.23.4, 24.22.1, 26.12.1 nebo novější vydání ze stejné řady. Liší se jen cesta.
Vlastní server se správcem verzí. Opravenou verzi nainstalujete například příkazem nvm install 22.23.4 a pak na ni přepnete službu, která aplikaci spouští. Starou verzi potom odinstalujte, ať se k ní nic omylem nevrátí.
Vlastní server s balíčkem. Máte-li Node.js nainstalovaný z balíčku, aktualizujte ho správcem balíčků své distribuce. Jestli už konkrétní balíček opravu obsahuje, jsme neověřovali. Po aktualizaci proto vždycky zkontrolujte číslo verze.
Docker. Verzi Node.js určuje základní obraz v řádku FROM. Změňte jeho značku na opravenou verzi, obraz znovu sestavte a kontejnery nasaďte z nového obrazu. Pokud značka uvádí jen číslo řady, nechte si při sestavení stáhnout čerstvý základní obraz, jinak se může použít starý z mezipaměti. Jestli už oficiální obrazy opravené verze obsahují, jsme nekontrolovali.
Hostingová platforma. Na spravované platformě nastavte verzi runtime Node.js v nastavení aplikace a aplikaci znovu nasaďte. Stav u jednotlivých poskytovatelů jsme neověřovali. Jestli už vaše platforma opravenou verzi nabízí, zjistíte v její dokumentaci nebo u podpory.
Proč po aktualizaci restartovat a jak ověřit, že oprava zabrala?
Nová verze na disku sama nic neopraví. Jak upozorňujeme v návodu k aktualizaci PHP, procesy, které už běží, používají starý kód z paměti, dokud je nerestartujete. U aplikace v Node.js je to stejné: proces spuštěný před aktualizací pořád běží se starou verzí.
Restartujte proto podle toho, co aplikaci spouští:
- systemd: příkaz sudo systemctl restart název-služby, kde místo názvu doplníte svou službu.
- pm2: příkaz pm2 restart all, případně restart jen konkrétní aplikace.
- Docker: staré kontejnery zastavte a spusťte nové z nově sestaveného obrazu. Restart původního kontejneru nestačí, ten totiž dál vychází ze starého obrazu.
- Hostingová platforma: nové nasazení obvykle procesy vymění samo. Přesto si ho ověřte.
Pak verzi zkontrolujte znovu. Příkaz node -v na serveru nebo v kontejneru musí ukázat 22.23.4, 24.22.1, 26.12.1 nebo vyšší vydání ze stejné řady. Vypisuje-li aplikace verzi Node.js při startu do logu nebo na stavové stránce, podívejte se i tam. Tím ověříte i to, s čím skutečně běží proces, který obsluhuje provoz.
Týká se chyba v Brotli i jiného softwaru než Node.js?
Může, protože chyba je přímo v knihovně Brotli, nejen v Node.js. Node.js ji neopravil vlastním kódem. Podle poznámek k vydání 22.23.4 převzal jednu změnu z projektu Brotli do své přibalené kopie knihovny v adresáři deps/brotli. Stejnou změnu uvádějí i poznámky k vydáním 24.22.1 a 26.12.1.
Samotný projekt Brotli ve svém vydání 1.2.1 uvádí stejné číslo, CVE-2026-111497. Vydání 1.1.1 a 1.0.10 pak zmiňují zápis mimo hranice paměti, který umožňuje vzdálené spuštění kódu: „out-of-bounds write permits remote code execution“.
Co z toho plyne? Brotli je samostatná kompresní knihovna, takže ji může používat i jiný software než Node.js. Program, který si přibaluje vlastní kopii Brotli, může potřebovat aktualizaci od svého dodavatele. Aktualizace Node.js totiž vlastní kopie knihovny v jiných programech nezmění. Žádného dodavatele jsme neprověřovali, takže konkrétní programy jmenovat nebudeme. Provozujete-li software, o kterém víte, že Brotli obsahuje, sledujte bezpečnostní oznámení jeho dodavatele.
Co se nám nepodařilo ověřit a odkud informace máme
Tyhle věci jsme ve zdrojích hledali a nenašli, proto je v článku neuvádíme:
- jestli existuje dočasné řešení bez aktualizace,
- skóre CVSS a popis chyby v databázi NVD,
- přes která rozhraní Node.js se k chybě dá dostat,
- v jakém stavu podpory je Node.js 20, protože na stránce s harmonogramem vydání jsme to nenašli,
- kdo chybu nahlásil,
- jestli ji už někdo zneužívá.
Zdroje, ze kterých článek vychází:
- oznámení Node.js o bezpečnostních vydáních z října 2026,
- poznámky k vydání Node.js 22.23.4, 24.22.1 a 26.12.1,
- vydání knihovny Brotli 1.2.1, 1.1.1 a 1.0.10.
Ještě jednou na rovinu: všechna fakta jsou z veřejných zdrojů, které jsme četli 25. 10. 2026, a postup jsme pro tenhle incident na klientském systému nezkoušeli. Situace se může měnit, proto u každého údaje odkazujeme na zdroj.
Pokud na aktualizaci váš tým nemá kapacitu, v rámci penetračního testování pomáháme opravy zavést nebo zkontrolovat řešení, které tým navrhl.
Součást tematického průvodce