Co se stalo
Google 21. října 2026 opravil závažnou chybu v knihovně Brotli, která rozbaluje data komprimovaná ve formátu Brotli. Tento formát používá velká část webu ke zmenšení stránek a přenášených dat, proto je knihovna součástí spousty programů: Node.js, Bun, .NET, balíčky pro Python, proxy Envoy a Istio, oficiální balíčky PHP pro Windows i firewally Palo Alto Networks. Chyba má označení CVE-2026-111497 a týká se verzí knihovny 1.0.3 až 1.2.0.
Chybu našli výzkumníci týmu Codex Security ze společnosti OpenAI. V odborné komunitě dostala přezdívky Node2Shell, Broccoli2Shell a HTTP2Shell. Zajímavost: samotná oprava byla ve zdrojovém kódu Brotli už v únoru, ale nikdo netušil, že řeší bezpečnostní problém. Nová verze knihovny s opravou proto vyšla až 21. října.
Americká agentura CISA zařadila chybu 27. října 2026 do katalogu aktivně zneužívaných zranitelností a evropská databáze agentury ENISA ji od téhož dne rovněž vede jako zneužívanou. Bezpečnostní firma ELLIO zachytila na svých senzorech skutečné pokusy o útok s veřejně dostupným exploitem pro Node.js. Podle ní za nimi stojí útočník zaměřený na hromadné zneužívání. Ze stejné IP adresy přišly i útoky na chyby PHP2Shell v PHP.
Proč je to nebezpečné
Jde o zápis mimo vyhrazenou paměť (buffer overflow). Představte si formulář s kolonkou na deset písmen, do které někdo napíše sto písmen a text přeteče do sousedních kolonek. Dekodér Brotli při rozbalování speciálně upravených dat zapíše za konec vyhrazeného místa a poškodí paměť programu. Výsledkem může být pád služby, únik citlivých údajů z paměti nebo v horším případě spuštění kódu útočníka.
Útočník se nemusí nikam přihlašovat a útočí přes síť. Stačí, aby vaše aplikace rozbalila data ve formátu Brotli, která může ovlivnit někdo cizí. Podle OpenAI to funguje oběma směry: server přijímající komprimované požadavky může napadnout škodlivý klient a klienta, který stahuje data z cizích serverů, může napadnout škodlivý server.
Spuštění kódu předvedli výzkumníci firmy Imperva na Node.js 24.22.0 pro Linux na ARM64 a potřebovali k tomu několik pokusů. Podle Cisca je ukázkový exploit veřejně dostupný a firma ELLIO potvrdila, že na zranitelných sestaveních funguje. Podle firmy Sysdig jsou dosud prokázaným dopadem pády služeb ve velkém a spuštění kódu jen v úzké konfiguraci. Microsoft u .NET spuštění kódu mezi důsledky neuvádí.
Skóre CVSS vyjadřuje závažnost na stupnici od 0 do 10. NVD chybu hodnotí 9,8 podle CVSS 3.1. Google, který chybě přidělil označení, jí dává 9,2 podle CVSS 4.0. Obě hodnoty znamenají kritickou úroveň. Red Hat ji hodnotí 8,1 podle CVSS 3.1 a Microsoft pro .NET také 8,1.
Katalog CISA KEV je seznam chyb, u kterých existují důkazy o zneužívání v praxi. Americké federální úřady musí tuto chybu opravit do 10. listopadu 2026. EPSS odhaduje pravděpodobnost zneužití v nejbližších 30 dnech. U této chyby je to přibližně 88 %, čímž patří mezi 1 % nejrizikovějších zranitelností.
Koho se to týká
Zasažený je každý program s knihovnou Google Brotli 1.0.3 až 1.2.0, který rozbaluje data ve formátu Brotli z nedůvěryhodného zdroje. Typicky jde o webové aplikace a API, reverzní proxy a skripty, které stahují data z internetu. Mnoho produktů má vlastní kopii knihovny a každý výrobce ji musí opravit zvlášť. Jde hlavně o:
- Node.js 22.x, 24.x a 26.x před opravou a nepodporované větve 20.x a starší. Ohrožené jsou hlavně aplikace, které přes
fetch()stahují cizí data, a aplikace na Express 5 nebo body-parser 2. - Bun 1.4.3 a starší.
- .NET 8.0, 9.0 a 10.0 před opravou a náhledy 11.0 před RC3, jen pokud aplikace rozbaluje cizí data ve formátu Brotli (v ASP.NET Core a HttpClient je to standardně vypnuté).
- Envoy a Istio, jen pokud je v nich zapnuté rozbalování Brotli.
- Pythonové balíčky Brotli 1.2.0 a starší a brotlicffi 1.2.0.x a starší. Stačí, že jsou nainstalované, requests či httpx pak Brotli rozbalují samy.
- Oficiální balíčky PHP 8.2 až 8.5 pro Windows z 21. října 2026, pokud aplikace nechává cURL rozbalovat odpovědi (ve výchozím nastavení to dělá například Guzzle).
- Firewally Palo Alto Networks s PAN-OS 11.2.4 a novějším, jen pokud mají zapnutou kontrolu Brotli (standardně je vypnutá) a dešifrování TLS.
Kopii Brotli mají i další programy, například databáze ClickHouse, rozšíření Brotli pro PHP, Ruby gem „brotli“ či nástroj cdxgen (samostatné binárky a obrazy 13.4.0, 12.8.8 a starší). Cisco a Fortinet své produkty zatím prověřují. Netýká se to .NET Frameworku, PAN-OS 11.1 a 10.2 ani Panoramy.
Jak zjistit, zda jste zasaženi
Nejdřív si sepište, kde máte Node.js, Bun, .NET, Python nebo PHP, včetně kontejnerů a systémů od dodavatelů. Tyto příkazy jen vypíšou verze a nic nemění:
node -v
bun --version
dotnet --list-runtimes
python3 -m pip show Brotli brotlicffi
dpkg -l | grep -i brotli
rpm -qa | grep -i brotli
Výsledek porovnejte s opravenými verzemi v sekci o opravě. U kontejnerů spusťte příkaz uvnitř běžícího kontejneru, například přes docker exec.
U PHP pro Windows vám php -v nepomůže, protože opravený balíček má stejné číslo verze. Opravené sestavení poznáte podle přípony -1 v názvu souboru, například php-8.5.12-1-nts-Win32-vs17-x64.zip, a podle otisku SHA-256 ze stránky pro stažení PHP.
Na firewallu Palo Alto Networks s PAN-OS 11.2.4 a novějším spusťte v příkazovém řádku následující příkaz. Pokud výstup ukazuje Enabled: yes, firewall je ohrožený. Ve webovém rozhraní (PAN-OS 12.1.2 a novější) zkontrolujte volbu Allow Brotli Encoding v části Device > Setup > Content-ID.
show system setting brotli
Jak to opravit
Opravené verze podle výrobců:
- Google Brotli: 1.0.10, 1.1.1 nebo 1.2.1.
- Node.js: 22.23.4, 24.22.1, 26.12.1. Dočasné řešení neexistuje, jedinou opravou je aktualizace. Z větve 20.x přejděte na podporovanou.
- Bun: 1.4.4.
- .NET: 8.0.33, 9.0.22, 10.0.14 a 11.0 RC3.
- Envoy: 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12. Istio: 1.31.2, 1.30.6, 1.29.9.
- Python: Brotli 1.2.1, brotlicffi 1.2.1.0.
- PHP pro Windows: 8.5.12-1, 8.4.27-1, 8.3.36-1, 8.2.35-1.
- cdxgen: 13.5.0, 12.8.9.
- Debian 13: brotli 1.1.0-2+deb13u1, Debian 12: 1.0.9-2+deb12u1. Amazon Linux 2023 vydal opravu 24. října 2026, Ubuntu ji ještě posuzuje.
- PAN-OS: vyšly verze 12.2.4-h1, 12.1.7-h11, 11.2.7-h23, 11.2.10-h17, 11.2.13-h4 a 11.2.16-h1, ohlášené jsou 12.1.4-h13, 12.1.10-h3 a 11.2.4-h23.
Postupujte v tomto pořadí:
- Nejdřív služby dostupné z internetu, které přijímají komprimované požadavky nebo stahují data z cizích serverů.
- Po aktualizaci službu restartujte, běžící proces drží starou knihovnu až do restartu. Kontejnerové obrazy znovu sestavte, samostatné .NET aplikace (self-contained a NativeAOT) znovu sestavte a publikujte.
- Potom systémové balíčky a ostatní software.
Kde zatím aktualizovat nemůžete, odmítejte požadavky s hlavičkou Content-Encoding: br ještě před rozbalením, vypněte automatické rozbalování Brotli v HTTP klientech a v Pythonu odinstalujte balíčky Brotli a brotlicffi. Samotné odstranění br z hlavičky Accept-Encoding nestačí. V PHP nenastavujte CURLOPT_ENCODING, v Guzzle nastavte decode_content na false. Na PAN-OS vypněte kontrolu Brotli:
set system setting brotli-encoding disable
Co když už jste mohli být napadeni
Protože útočníci chybu už zneužívají, u neopravených služeb dostupných z internetu počítejte s tím, že mohly být terčem. Podívejte se na:
- opakované nečekané pády procesů Node.js, Bun nebo .NET a chyby při rozbalování dat v lozích,
- požadavky s hlavičkou
Content-Encoding: brod neznámých klientů, - spojení z nizozemské IP adresy, kterou firma ELLIO spojuje s útoky na tuto chybu i na PHP2Shell (přesnou adresu uvádí její zpráva a článek The Hacker News),
- nové procesy (například shell) spuštěné pod uživatelem aplikace, neznámé soubory, nové účty a nečekaná odchozí spojení.
Pokud najdete něco podezřelého, odpojte server od sítě, ale nevypínejte ho, aby zůstaly stopy v paměti. Změňte hesla a klíče, ke kterým měla aplikace přístup, a přizvěte odborníka na řešení incidentů. Samotná aktualizace už napadený server nevyčistí.
Zdroje
- Palo Alto Networks: CVE-2026-111497 Portfolio Status: Impact of Brotli Vulnerability (CVE-2026-111497) on Palo ↗
- Cisco: Vulnerabilities in node.js Affecting Cisco Products: October 2026 ↗
- The Hacker News: Brotli Decoder Flaw Behind Node.js RCE Also Affects Bun, Python and Other Widely Used Softwar ↗
- The Hacker News: PHP Issues Second Windows Security Update in Five Days to Fix Brotli Code Execution Flaw ↗
- The Hacker News: Adobe Commerce PolyShell Attacks Breach Hundreds of Stores as Brotli Exploit Traffic Emerges ↗
- oss-security - Re: Upcoming Node.js security release 2026/10/21 ↗
- oss-security - Re: Brotli CVE-2026-111497 ↗
- NVD CVE-2026-111497 ↗
- ENISA EUVD EUVD-2026-108169 ↗
- CISA Known Exploited Vulnerabilities ↗