Chyba v Brotli v Node.js (CVE-2026-111497): jak aktualizovat a ověřit opravu

Node.js vydal bezpečnostní aktualizace řad 22, 24 a 26 kvůli chybě v dekodéru Brotli s vysokou závažností. Vysvětlujeme, co znamená node2shell, jak zjistit verzi, aktualizovat, restartovat a ověřit opravu.

6 min čtení
Chyba v Brotli v Node.js (CVE-2026-111497): jak aktualizovat a ověřit opravu

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

v22.23.4

24.x

24.22.1

v24.22.1

26.x

26.12.1

v26.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í:

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.

ŠtítkySecurityNode.jsPatchingBrotli

Součást tematického průvodce

Sdílet

Pokračujte ve čtení

Máte v hlavě projekt?

Popište nám svoji výzvu. Společně najdeme správné řešení.