· Aktuality · Ing. Filip Lang, DBA
Pekelný patch week: Proč už čísla verzí nic neznamenají a záplata bez restartu je jen iluze
Pokud jste měli minulý týden pocit, že administrátoři a bezpečáci nespí, nebyl to klam. Mezi středou 21. a nedělí 25. října 2026 proběhla smršť bezpečnostních incidentů, která v plné nahotě ukázala realitu dnešní správy zranitelností.
Během pouhých pěti dnů se postupně otřásly základy webového provozu (PHP), důvěra v certifikační autority (PKI), nízkoúrovňová dekomprese (Brotli), Zero Trust sítě (Tailscale) a na závěr vývojářská infrastruktura (GitLab).
Zde je ohlédnutí za uplynulým týdnem, technická podstata jednotlivých krizí a hlavně praktická ponaučení pro správu infrastruktury.
Chronologie bouře: Od PHP2Shell po desítkový GitLab
1. Středa 21. října: PHP2Shell a první noční klepání na dveře
Všechno odstartovalo ve středu v 16:00 SELČ, kdy PHP Security Team po předchozím úniku na sociálních sítích narychlo vydal opravy pro dvě kritické chyby: CVE-2026-109618 a CVE-2026-109619 (komunitou překřtěné na php2shell, CVSS v4.0 9.2). Obě umožňují neautentizované spuštění kódu (RCE) pouhým HTTP požadavkem.
Reakční doba útočníků? V noci na čtvrtek, zhruba v 02:30 ráno – pouhých 10,5 hodiny po vydání záplat – zaznamenaly první servery pokusy o exploitaci. První zmínky jsou dokonce 4 dny před zveřejněním. Kdo čekal na čtvrteční ranní kávu, měl zpoždění.
2. Čtvrtek 22. října: PKI v plamenech (Když je privátní klíč číslo 4)
Zatímco se dohasínalo PHP, v plné síle udeřil problém certifikační autority eMudhra. Ta vygenerovala osm mezilehlých (intermediate) TLS CA certifikátů se slabými privátními klíči – u jednoho z nich měl privátní klíč doslova hodnotu „4“.
Všechny tyto certifikáty byly křížově podepsány autoritou Sectigo (AAA Certificate Services), což útočníkovi v pozici Man-in-the-Middle (MITM) umožňovalo vystavit platný certifikát pro libovolnou doménu. Následovala lavina out-of-band záplat:
- Java (CVE-2026-91403): Mimořádný update OpenJDK a Oracle.
- Go (CVE-2026-111943): Hardcoded blokace v
crypto/x509ve verzích 1.27.3 a 1.26.10. - Aktualizace systémových trust storů napříč OS, Node.js i Pythonem.
3. Pátek 23. října: Node2Shell (Brotli) a PHP bez patche
V pátek se naplno projevil dominový efekt dodavatelského řetězce:
- Node2Shell (CVE-2026-111497, CVSS 9.2): Out-of-bounds zápis v dekodéru Google Brotli (verze 1.0.3 až 1.2.0), nahlášený OpenAI Codex Security. Zranitelný byl kdekdo: Node.js, Bun, Python (brotli/brotlicffi), Envoy i Istio. V Expressu nebo při volání externích webhooků stačí hlavička
Content-Encoding: bra proces zapisuje za alokovanou paměť. - PHP Session Progress (CVE-2026-115560): Jako by jedno PHP nestačilo, tým ohlásil možnost spuštění kódu přes
session.upload_progressa specifické nastavenísession.serialize_handler. Háček? Pro tuto zranitelnost neexistoval okamžitý patch, dodavatel oznámil opravu až v dalším plánovaném vydání.
4. Víkendové finále: Tailworm a jedenáctiletý GitLab
Sobota (Tailworm): Publikována série 11 zjištění proti Tailscale (1.104.2) a Headscale (0.29.5). Démon tailscaled běží jako root; při povoleném port forwardingu přes Tailscale SSH prováděl forwarding unixových socketů přímo root proces. Cílení na /var/run/docker.sock znamenalo okamžité převzetí hostitele bez sudo a hesel. Opět situace bez patche, řešitelná pouze úpravou ACL.
Neděle (GitLab CVE-2026-110264, CVSS 10.0): Absolutní tečka týdne. Neautentizované RCE v srdci vývoje, které v kódu tiše spalo od verze 7 vydané v roce 2015. Závažnost donutila GitLab vydat backport i pro staré nepodporované řady.
Čtyři tvrdé lekce z uplynulého týdne
Lekce 1: Číslo verze v CLI je lež (Ubuntu backport paradox)
Když po vydání záplaty na PHP spustíte na Ubuntu příkaz php -v, terminál vám hrdě nahlásí například: PHP 8.5.4 (cli) (built: Oct 19 2026 14:35:18)
Oficiální upstream bulletin přitom říká: Bezpečné verze jsou 8.5.12, 8.4.27, 8.3.36 a 8.2.35. Zdánlivě jste osm verzí pozadu a zranitelnostní skenery začnou okamžitě červeně blikat.
Realita? Balíček je plně opravený. Distribuce jako Debian, Ubuntu nebo RHEL běžně backportují pouze konkrétní bezpečnostní záplatu do své stabilní verze balíčku (zde 8.5.4-0ubuntu1.5). Navíc časové razítko ukazuje, že distribuce měly patch zkompilovaný s předstihem.
Pravidlo: Nevěřte číslu verze v CLI. Důvěřujte pouze revizi balíčku (
apt changelog php8.5-fpm,dpkg -l) a bezpečnostnímu trackeru své distribuce.
Lekce 2: Nainstalovaný balíček nerovná se opravený systém
Klasická chyba: administrátor spustí apt upgrade, uvidí stažený balíček a odchází spát.
Kód na disku sice odpovídá záplatě, ale worker procesy v paměti (php-fpm, apache2, Node servery, Java aplikace) drží otevřené původní sdílené knihovny a běží v nezáplatovaném stavu. Pokud neresetujete aplikační proces, systém je pro útočníka stále otevřený.
Lekce 3: Trust story jsou roztříštěné
Krize kolem eMudhra certifikátů ukázala naivní představu, že stačí v systému zaktualizovat balíček ca-certificates.
- Java: Každý nástroj (Jenkins, Elasticsearch, Keycloak) mívá vlastní bundled JRE s vlastním souborem
cacerts, který systémové certifikáty ignoruje. - Go: Blokace certifikátů byla zakompilována přímo do runtimu Go. Pokud máte Go binárku nebo statický distroless kontejner zkompilovaný před opravou, systémový trust store vám nepomůže. Musí proběhnout rekompilace.
- Python a Node: Využívají vlastní vendoring certifikátů (certifi, vestavěný cert bundle v Node.js).
Lekce 4: Když není patch, vládne konfigurace a Zero Trust
Případy zranitelností u PHP (upload progress) a Tailscale potvrdily, že spoléhat se výhradně na záplaty od dodavatele je slepá ulička:
- Pokud patch neexistuje, musíte znát konfiguraci natolik, abyste rizikovou funkci odstřihli direktivou (
php_admin_flag). - V případě Tailscale nebyla chybou samotná síť, ale příliš benevolentní ACL a důvěra v démona s právy roota.
Checklist: Co zkontrolovat a nastavit hned teď
PHP infrastruktura
- Ověřte revizi balíčků v distribuci, nikoliv jen výstup
php -v. - Vynucte restart FPM workerů:
systemctl restart php*-fpm. - Pro eliminaci CVE-2026-115560 zakažte upload progress natvrdo v konfiguraci FPM poolu:
php_admin_flag[session.upload_progress.enabled] = off(hodnotyphp_admin_*nelze z kódu přepsat funkcíini_set).
Dekomprese a závislosti (Brotli / Node2Shell)
- Povyšte Node.js (26.12.1 / 24.22.1 / 22.23.4) a Bun (1.4.4).
- Přestavte Docker kontejnery se staršími bázemi.
- V Pythonu zkontrolujte závislosti:
pip list | grep -i brotlia aktualizujte brotli i brotlicffi na verze 1.2.1+. - Aktualizujte Envoy (1.40.0+) a Istio.
Revize PKI a trust storů
- Aktualizujte systémový balíček
ca-certificates. - Vyhledejte zapomenuté JRE prostředí na serverech:
find / -path '*lib/security*' -name cacerts 2>/dev/nulla aplikujte záplaty OpenJDK. - Překompilujte kritické interní Go nástroje pomocí Go 1.27.3 nebo 1.26.10.
Tailscale / Headscale ACL
- Zakažte port forwarding v pravidlech Tailscale SSH ACL, pokud není nezbytný.
- Zkontrolujte a zablokujte přístup k citlivým unixovým socketům (především
/var/run/docker.sock). - Zapněte Tailnet Lock a expiraci klíčů.
- Pokud máte podezření na kompromitaci uzlu, nespoléhejte na reinstalaci stroje – smažte uzel v admin konzoli.
GitLab (CVE-2026-110264)
- Pokud provozujete self-hosted GitLab dostupný do internetu, aktualizujte bez odkladu na nejnovější bezpečnostní vydání.
- Pokud upgrade nelze provést ihned, okamžitě instanci stáhněte za firemní VPN nebo omezte přístup na IP whitelist.
Minulý týden byl ukázkovou lekcí: moderní bezpečnost není o sledování čísel verzí na titulních stránkách, ale o pochopení toho, jak systém skládá závislosti, které procesy skutečně běží v paměti a jak rychle dokážete omezit útočný povrch dřív, než dorazí oficiální balíček.
#Brotli #GitLab #kybernetická bezpečnost #patch management #PHP #php2shell #PKI #RCE #Tailscale #zranitelnosti
