Oprava vydána CVSS 8,2 Aktuálně
Node.js opravuje 16 chyb: vzdálený pád serverů s HTTP/2 a únik paměti jiných spojení přes HTTPS
Projekt Node.js 11. listopadu 2026 vydal bezpečnostní aktualizace pro větve 26.x, 24.x a 22.x. Opravují 16 zranitelností, z toho 7 s vysokou závažností. Většina se týká vestavěné podpory HTTP/2 a TLS: útočník bez přihlášení může shodit server, u HTTPS za určitých podmínek přečíst paměť s daty jiných spojení včetně soukromého klíče TLS. O zneužívání se zatím neví. Které servery jsou ohrožené a jak postupovat.
Ve zkratce
- Týká se: správců a vývojářů serverů v Node.js 22.x, 24.x a 26.x, hlavně těch, které samy obsluhují HTTP/2 nebo HTTPS bez reverzní proxy.
- Opravené verze z 11. 11. 2026: v26.13.1, v24.22.3 a v22.23.5. Celkem 16 CVE – 7 vysokých, 6 středních, 3 nízké (hodnocení Node.js).
- Nejvážnější: CVE-2026-123864 (HTTPS, čtení paměti jiných spojení včetně klíčů TLS, za specifických podmínek), CVE-2026-123863 (vzdálený pád HTTP/2 bez přihlášení, CVSS 8,2) a CVE-2026-123872 (obejití ověření klientským certifikátem při renegociaci TLS 1.2).
- Node.js indikátory napadení ani dočasná řešení nezveřejnil. Záznamy v NVD mají stav Received se skóre od CNA.
Zranitelnosti: CVE-2026-123864, CVE-2026-123863, CVE-2026-123872, CVE-2026-123866, CVE-2026-123874, CVE-2026-123865, CVE-2026-126051
Co se stalo
Projekt Node.js vydal 11. listopadu 2026 bezpečnostní aktualizace pro tři podporované větve: v26.13.1, v24.22.3 a v22.23.5. Opravují 16 zranitelností – podle hodnocení Node.js 7 vysokých, 6 středních a 3 nízké. Předchozí bezpečnostní vydání vyšlo 21. října 2026.
Většina chyb je ve vestavěné podpoře HTTP/2 (modul node:http2) a v TLS. Nejčastější dopad je vzdálený pád serveru bez přihlášení, u několika chyb ale i únik paměti – server pošle klientovi kusy paměti, které patří jiným spojením. Vydání zároveň aktualizuje přibalené knihovny llhttp (všechny tři větve), undici (24 a 26) a SQLite (22 a 24).
Pět chyb nahlásil Chris Rohlf ve spolupráci s Claude a Anthropic Research, další výzkumníci a Trail of Bits. NVD záznamy zveřejnila 11. 11. 2026 večer se stavem Received a skóre CVSS 3.0 od přidělující autority (CNA).
Technické podrobnosti
Nejvážnější chyby s vysokou závažností:
| CVE | Větve | Co způsobí | CVSS (NVD, CNA) |
|---|---|---|---|
| CVE-2026-123864 | 22, 24, 26 | HTTPS: čtení paměti jiných spojení, včetně klíčů TLS | 8,1 |
| CVE-2026-123863 | 24, 26 | HTTP/2: vzdálený pád procesu (selhání kontroly paměti) | 8,2 |
| CVE-2026-123872 | 22, 24, 26 | TLS 1.2: obejití ověření klientským certifikátem | 8,1 |
| CVE-2026-123866 | 22, 24, 26 | HTTP/2: odeslání uvolněné paměti (use-after-free) | 7,5 |
| CVE-2026-123874 | 24, 26 | HTTP/2: use-after-free u respondWithFile() |
7,5 |
| CVE-2026-123865 | 22, 24, 26 | HTTP/2: únik paměti a deskriptorů, sockety v CLOSE_WAIT | 7,5 |
| CVE-2026-126051 | 24, 26 | TLS: nezachycená výjimka a pád procesu | 7,5 |
- CVE-2026-123864 je chyba opětovného vstupu (re-entrancy) při zpracování těla požadavku přes HTTPS: zápis nulové délky způsobí předčasné dešifrování záznamu TLS, použití uvolněné paměti a čtení mimo hranice haldy. Podle Node.js je ale potřeba souhra podmínek – obslužná funkce volá
res.flushHeaders()před koncem těla požadavku, potomres.end()s neprázdnými daty, a aplikace má cestu, která tělo požadavku vrací nebo ukládá. Nešifrovanýnode:httpzasažený není. - CVE-2026-123863 je varianta starší chyby CVE-2024-27983, kterou tehdejší oprava nepokryla. Proud HTTP/2, který ještě drží buffery hlaviček, přežije svou relaci a kontrola účtování paměti proces ukončí. Útočník nepotřebuje přihlášení a funguje to přes TLS i nešifrované HTTP/2.
- CVE-2026-123872: při renegociaci TLS 1.2 může klient změnit název serveru (SNI) a přenést si ověření na hostitele s přísnějšími požadavky na klientský certifikát.
- Další vysoké chyby v HTTP/2 vedou k použití uvolněné paměti (CVE-2026-123866, CVE-2026-123874 – stačí, že server posílá soubory přes
respondWithFile()neborespondWithFD()) nebo k postupnému vyčerpání paměti a deskriptorů (CVE-2026-123865, neúplná oprava CVE-2026-48937).
Mezi středními chybami je i obejití ověření certifikátu v https.Agent při opakovaném použití relace TLS (CVE-2026-123877), selhání per-host CA u server.addContext() (CVE-2026-123867) a únik přihlašovacích údajů k proxy v chybových hláškách (CVE-2026-123871). Ukázkový kód Node.js nezveřejnil a my ho nepřinášíme.
Koho se to týká
- Node.js 26.x před 26.13.1, 24.x před 24.22.3 a 22.x před 22.23.5. Některé chyby (např. CVE-2026-123863, CVE-2026-123874) se týkají jen 24 a 26.
- Nejvíc ohrožené jsou servery, které samy obsluhují HTTP/2 nebo HTTPS –
http2.createSecureServer(),http2.createServer(),https.createServer()– a jsou dostupné z internetu. - Verze s ukončenou podporou jsou podle Node.js zasažené vždy a opravu nedostanou.
Verzi a použití HTTP/2 rychle zjistíte takto:
node -v
grep -rnE "createSecureServer|http2\.createServer|respondWithFile|flushHeaders" --include=*.js --include=*.ts --exclude-dir=node_modules .
Node.js v Dockeru má verzi danou obrazem – zkontrolujte tag (node:24, node:22-alpine…) a obraz znovu stáhněte a sestavte. U balíčků z distribuce se řiďte jejím bezpečnostním oznámením.
Jak poznat napadení
Node.js indikátory napadení nezveřejnil a o zneužívání nepíše. Pár tipů z praxe:
- Opakované pády procesu s hláškami o selhání kontroly (
CHECK_EQ,ERR_INTERNAL_ASSERTION) nebo restarty od správce procesů (pm2, systemd, Kubernetes) – hlavně ve spojení s provozem HTTP/2. - Rostoucí počet socketů v
CLOSE_WAITa spotřeba paměti:ss -tan state close-wait | wc -l. - U CVE-2026-123864 únik paměti v logu nepoznáte. Pokud vaše aplikace splňuje popsané podmínky a byla přímo dostupná přes HTTPS, počítejte s možností úniku dat.
- Podezřelé IP adresy z logů rychle vytáhnete naším extraktorem IOC – běží jen ve vašem prohlížeči.
Co udělat
- Aktualizujte na Node.js 26.13.1, 24.22.3 nebo 22.23.5 (nebo opravený balíček distribuce) a restartujte všechny procesy – běžící aplikace zůstávají zranitelné, dokud se nerestartují. U kontejnerů obrazy znovu sestavte.
- Ověřte verzi příkazem
node -vpřímo v produkčním prostředí. - Pokud aplikace splňuje podmínky CVE-2026-123864 (HTTPS přímo v Node.js,
res.flushHeaders()před koncem těla, cesta vracející tělo požadavku), po aktualizaci vyměňte klíč TLS a nechte vydat nový certifikát. To je naše doporučení, ne pokyn Node.js. - Dokud aktualizaci nenasadíte, je rozumné nechat HTTPS a HTTP/2 ukončovat reverzní proxy (nginx, HAProxy, CDN) a do Node.js posílat jen HTTP/1.1. Také to je naše odvození z popisu chyb – Node.js dočasná řešení neuvádí.
- Používáte mTLS (klientské certifikáty)? Zkontrolujte nastavení
server.addContext()a vypnutí renegociace TLS 1.2 – týkají se vás CVE-2026-123872 a CVE-2026-123867.
Časová osa
Aktualizace
- 12. 11. 2026 – první verze článku.
Časté otázky
Používám Express nebo Fastify přes HTTP/1.1. Týká se mě to?
Většina chyb je v HTTP/2 (modul node:http2), který se musí zapnout ve vašem kódu. CVE-2026-123864 ale postihuje i běžné HTTPS servery a několik chyb je v TLS a v https.Agent. Aktualizujte tedy každou instalaci Node.js 22, 24 a 26 bez ohledu na framework.
Mám před Node.js nginx nebo CDN. Jsem v bezpečí?
Pokud proxy ukončuje HTTPS i HTTP/2 a do Node.js posílá jen nešifrované HTTP/1.1, k zranitelnému kódu HTTP/2 a TLS serveru se provoz z internetu nedostane. To je naše odvození z popisu chyb, ne vyjádření Node.js. Chyby v klientské části (https.Agent, proxy) se vás týkají dál, proto aktualizujte i tak.
Musím vyměnit certifikát a klíč TLS?
Node.js to neukládá. U CVE-2026-123864 ale popisuje únik paměti včetně soukromých klíčů TLS. Pokud váš server přímo obsluhoval HTTPS a obsahuje kód, který volá res.flushHeaders() před koncem těla požadavku a zároveň vrací nebo ukládá těla požadavků, doporučujeme po aktualizaci klíč vyměnit a certifikát znovu vydat.
Co Node.js 20 a starší?
Node.js uvádí, že verze s ukončenou podporou (End-of-Life) jsou bezpečnostním vydáním zasažené vždy a opravu nedostanou. Přejděte na podporovanou větev 22, 24 nebo 26.
Zdroje
Našli jste v článku chybu? Dejte nám vědět, opravu vyznačíme.