Stručně: Časové okno mezi záplatou a útokem bylo u PHP2Shell záporné: Podle mediálních zpráv byl první pokus o útok již 17. října 2026, čtyři dny před aktualizacemi. Pro provozovatele proto nezáleží na otázce „Kolik času zbývá?“, ale „Jak dlouho je můj server otevřený?“. Toto osobní okno končí teprve tehdy, když je aktualizace nainstalována a všechny procesy PHP jsou restartovány.
Výchozí bod: útoky před záplatou
Dlouho platil pohodlný předpoklad: Mezi bezpečnostní aktualizací a prvními útoky uplyne několik dní, dost času na další servisní okno. PHP2Shell tento předpoklad vyvrátilo. Podle mediálních zpráv, které se odvolávají na Amazon, byl první pokus o útok pozorován již 17. října. Cloudflare rovněž informoval o raných útocích. Záplaty přišly 21. října ve 14:00 UTC.
Tento článek vysvětluje, jak taková časová okna vznikají a jak zkrátit to své. Přesný sled dat najdete v časové ose PHP2Shell.
Časové okno mezi záplatou a útokem po fázích
Kolem bezpečnostní zranitelnosti lze rozlišit několik fází. U PHP2Shell vypadaly takto:
| Fáze | Obecně | U PHP2Shell |
|---|---|---|
| Před zveřejněním | Zranitelnost znají jen objevitelé a výrobce | vývoj opravy pod embargem |
| První útoky bez záplaty | Útočníci zranitelnost využívají dříve, než existuje aktualizace | podle mediálních zpráv první pokus 17. 10. |
| Předběžné oznámení | Výrobce aktualizaci ohlásí | 20. 10., php.net ohlašuje vydání |
| Záplata k dispozici | Vyjde aktualizace a bezpečnostní oznámení | 21. 10., 14:00 UTC |
| Vyhodnocení záplaty | Výzkumníci a útočníci analyzují změny | watchTowr podle vlastních údajů CVE-2026-109618 zreprodukoval |
| Široké zneužívání | automatizované kampaně proti nezáplatovaným serverům | očekávané BSI; potvrzené úspěšné útoky v širokém měřítku zpočátku nebyly známy |
| Vaše záplata | aktualizace a restart na vašich serverech | individuálně |
Poslední řádek je jediný, který můžete ovlivnit. Vše před ním určují jiní.
Proč záplata sama zvyšuje tlak
Bezpečnostní aktualizace zranitelnost uzavře, ale zároveň ji zviditelní. Změny zdrojového kódu u open-source projektů, jako je PHP, jsou veřejné. Kdo porovná rozdíly mezi starou a novou verzí, zjistí, na kterém místě chyba byla. To není výtka projektu PHP, ale normální stav otevřeného softwaru a základ toho, že distribuce mohou sestavovat backporty.
Pro provozovatele z toho plyne: S každým dnem po záplatě roste počet těch, kdo vědí, jak zranitelnost funguje. Zároveň klesá počet nezáplatovaných serverů. Zbývající se tak stávají nasnadě ležícími cíli. Jak PHP dodává bezpečnostní aktualizace v rámci péče o verze, vysvětluje článek o cyklu vydávání PHP.
Pokud byl váš server mezi 17. říjnem a vaší záplatou dostupný, patří k tomu kontrola stop. Zajistěte logy od 20. října, než se ztratí rotací.
Změřit své vlastní časové okno
Vaše osobní časové okno začíná nejpozději zveřejněním záplat a končí restartem posledního procesu PHP. Zaznamenejte pro každý server:
- Vědomost: Kdy se někdo ve firmě o zranitelnosti dozvěděl?
- Dostupnost: Kdy byl balíček vaší distribuce nebo poskytovatele hostingu k dispozici?
- Instalace: Kdy byl nasazen?
- Restart: Kdy už neběžely žádné staré procesy PHP?
Právě na restart se často zapomíná. Nainstalovaná aktualizace působí teprve tehdy, když jsou staré procesy ukončeny. Jak to ověřit, popisuje Restart PHP-FPM a všech procesů PHP. Zda ještě běží procesy z doby před aktualizací, ukáže pohled na časy spuštění:
# Zobrazit čas spuštění všech procesů PHP
ps -eo pid,lstart,cmd | grep -E "php-fpm|php-cgi|lsphp" | grep -v grep
Pokud je čas spuštění před instalací aktualizace, je okno stále otevřené.
Proč vaše okno závisí na zdroji balíčků
Jak rychle můžete záplatovat, nezávisí jen na vás, ale i na tom, odkud vaše PHP pochází. Distribuce podle zpráv dodaly backporty zčásti již 21. října. Kdo získává PHP z repozitáře třetí strany, je odkázán na jeho tempo. Kdo používá kontejnery, musí image znovu sestavit a nasadit, pouhá aktualizace v běžícím kontejneru nestačí. A u sdíleného hostingu určuje okamžik poskytovatel.
Pokud znáte zdroj balíčků každého serveru, víte také, na kterém místě zůstává vaše okno otevřené nejdéle. Právě tam se příprava vyplatí nejvíc, například dohodou s poskytovatelem hostingu nebo otestovaným postupem pro nové image kontejnerů.
Jak okno příště zkrátit
- Odebírat oznámení: Bezpečnostní oznámení php.net a své distribuce přijímat přímo, ne až přes tisk.
- Stanovit odpovědnost: Pro každý server odpovědnou osobu se zástupem.
- Využít automatiku, kde se hodí: Bezpečnostní aktualizace z distribuce lze nasazovat automaticky. Co pro to mluví a co proti, popisuje Automatické bezpečnostní aktualizace.
- Naplánovat restart: Restart služeb PHP patří pevně do postupu, ne do dodatečných prací.
- Připravit nouzovou cestu: Nouzová stránka a rozhodnutí o dočasném odstavení, pokud aktualizace není hned možná.
- Vést doklad: Zaznamenávat časy instalace a restartu, abyste své okno mohli později doložit.
Trvalý proces, který tyto body spojuje, je popsán v článku o procesu správy záplat.
Jak konkrétně pomáhá PHP SOS?
- Záplata a restart: Nasazujeme aktualizaci a zajišťujeme, aby už neběžely žádné staré procesy PHP.
- Doložit časové okno: Dokumentujeme instalaci a restart každého serveru s časem.
- Kontrola stop: Za dobu, kdy byl váš server otevřený, zajišťujeme logy a kontrolujeme nápadnosti.
- Proces do budoucna: Spolu s vámi zřizujeme cesty hlášení, odpovědnosti a postupy aktualizací.
Více na stránce služba záplatování PHP.
Závěr
U PHP2Shell žádná ochranná lhůta nebyla. Časové okno mezi záplatou a útokem je u kritických zranitelností dnes často nulové nebo dokonce záporné. Co můžete řídit, je vaše vlastní okno: Končí restartem a přípravou ho lze zkrátit ze dnů na hodiny.
Časté dotazy
Kolik času zbývá po bezpečnostní aktualizaci do útoků?
Pevná lhůta neexistuje. U PHP2Shell byl podle mediálních zpráv první pokus o útok pozorován už 17. října, tedy čtyři dny před záplatami. U kritických zranitelností v rozšířeném softwaru počítejte s tím, že prakticky žádná ochranná lhůta neexistuje.
Co je zero-day?
Zranitelnost, která je napadána dříve, než je k dispozici aktualizace. Výrobce měl takříkajíc nula dní na její odstranění. Poté se často mluví o známé zranitelnosti nebo N-day, pro kterou už záplata existuje.
Proč se útoky po záplatě často množí?
Se záplatou se stane veřejným, na kterém místě chyba byla. Bezpečnostní výzkumníci i útočníci mohou změny vyhodnotit. Zároveň mnoho serverů zůstává ještě dny nebo týdny nezáplatováno, a tedy lákavými cíli.
Kdy je můj server skutečně chráněn?
Když je aktualizace nainstalována a všechny procesy PHP byly restartovány. Samotné nové soubory nepůsobí, dokud v paměti běží staré procesy. Konec vašeho osobního časového okna je tedy restart, ne stažení.