Stručně: CERT-EU podle zpráv radí zaznamenat instalace PHP, okamžitě záplatovat a izolovat veřejně dostupné aplikace, pokud je nelze záplatovat v krátké době. CERT-Bund (německý vládní CERT) a BSI ve svém varování doporučují okamžitou aktualizaci a, pokud to nejde, dočasné odpojení postižených webových serverů od sítě. Doporučení se v jádru shodují: nejdřív aktualizace, izolace jako nouzové řešení, přechodná opatření jen jako doplněk.
Kdo varuje a pro koho?
U PHP2Shell zareagovalo během několika hodin několik oficiálních míst. Pro firmy v Německu je první adresou BSI (německý Spolkový úřad pro informační bezpečnost) se svým týmem CERT-Bund. CERT-EU je služba kybernetické bezpečnosti institucí EU; jeho upozornění míří nejprve na ně, ale čtou se v celé Evropě. Podle BleepingComputer varovalo také britské National Cyber Security Centre. Ze soukromého sektoru se ozvaly mimo jiné Huntress a Cloudflare.
Pro vás jako provozovatele je původ méně důležitý než shoda. Pokud několik nezávislých míst radí totéž, je to silný signál.
CERT-Bund, CERT-EU a další: varování před PHP ve srovnání
| Místo | Hlavní doporučení | Zvláštnost |
|---|---|---|
| BSI / CERT-Bund | okamžitě aktualizovat, jinak webové servery dočasně odpojit od sítě | výstražný stupeň 3 / oranžový |
| CERT-EU | zaznamenat instalace PHP, okamžitě záplatovat, jinak izolovat veřejné aplikace | podle zpráv považoval za možné postižení verzí od PHP 5 |
| UK NCSC | okamžitě aktualizovat nebo postižené systémy do záplaty odpojit od sítě | podle BleepingComputer |
| php.net | aktualizovat na 8.5.12, 8.4.27, 8.3.36 nebo 8.2.35, přechodná opatření jen jako částečná ochrana | primární zdroj verzí a nastavení |
Žádné z míst nedoporučuje spoléhat jen na web application firewall nebo na nastavení v php.ini. Všechna uvádějí aktualizaci jako skutečné řešení. Co BSI radí dále podrobně, stojí na stránce Co BSI k PHP2Shell doporučuje.
Otázka verzí: co znamená „od PHP 5“
CERT-EU podle zpráv považoval za možné, že jsou postiženy verze od PHP 5. Podle odborných zpráv se přitom místo opíralo o informace, které kolovaly před oficiálním oznámením. Odborný tisk mluví o téměř všech verzích zpětně až po PHP 5.4.
V praxi přesná hranice mnoho nemění. Pro PHP 8.1 a starší už projekt PHP oficiální aktualizace nedodává. Existují minimální zdrojové backporty pro 7.4, 8.0 a 8.1, ale žádná vydání. Kdo stále provozuje PHP 5 nebo 7, je odkázán na distribuce, třetí strany nebo migraci. Zda vaše distribuce opravu dodala, ukazují její vlastní bezpečnostní stránky, například Debian Security Tracker, Ubuntu Security Notices nebo upozornění Red Hat. Existují také komerční nabídky dlouhodobé podpory pro staré verze PHP; zda pokrývají PHP2Shell, si nechte od poskytovatele písemně potvrdit. Podrobnosti o větvích stojí na stránkách Které verze PHP jsou postiženy? a PHP 8.1 a starší.
Izolovat: jak doporučení uplatnit
„Izolovat“ zní abstraktně. Míní se tím, že požadavky z internetu už zranitelnou aplikaci PHP nedosáhnou. Podle aplikace existuje několik stupňů:
- Úplně odstavit: Web se nahradí statickou nouzovou stránkou bez PHP. To je nejbezpečnější varianta.
- Omezit přístup: Aplikace zůstane v provozu, ale je dostupná jen přes VPN nebo pro stanovené adresy IP, například u interních portálů.
- Předřazené přihlášení: Přihlášení na úrovni webového serveru nebo proxy před aplikací. Pozor: U mod_php byl předveden exploit dříve, než se spustí kód aplikace. Přihlášení proto musí zabrat před PHP, ne v aplikaci.
- Zablokovat přímý přístup na origin: Kdo používá službu proxy nebo CDN, měl by zajistit, aby server nebyl navíc dostupný přímo.
Omezení ve webovém serveru může vypadat takto, jako neškodná ukázková konfigurace pro Apache:
# Povolit přístup jen z interní sítě (ukázkový rozsah upravit)
<Location "/">
Require ip 192.0.2.0/24
</Location>
Účinek otestujte zvenčí, například přes mobilní připojení. Izolace, která byla ověřena jen v kancelářské síti, není ověřená izolace.
Izolace je přemostění. Při izolaci hned stanovte, do kdy aktualizace přijde a kdo ji nasadí. Jinak se z nouzového řešení stane trvalý stav.
Co doporučení společně vyžadují: inventář
Všechna oficiální místa předpokládají, že víte, kde PHP běží. A právě na tom v mnoha firmách vázne: microsite ze starých kampaní, zapomenutý zákaznický portál, testovací systém s veřejnou adresou, aplikace na NAS. CERT-EU výslovně uvádí zaznamenání instalací PHP jako první krok.
Zapomenuté systémy najdete nejspíš třemi cestami: zónami DNS svých domén, seznamem vydaných certifikátů TLS a smlouvami s agenturami, poskytovateli hostingu a dodavateli softwaru. Každý záznam, u kterého nikdo nedokáže hned říct, co za ním běží, patří na kontrolní seznam. Právě takové systémy jsou v situaci jako PHP2Shell nebezpečné, protože je nikdo nezáplatuje a nikdo je nepostrádá, když jsou napadeny.
Použitelný inventář obsahuje pro každý systém: adresu, účel, provozovatele, verzi PHP a provozní režim, zdroj balíčků a kontaktní osobu pro aktualizace. Jak ho sestavit a udržovat aktuální, ukazuje článek Inventář všech webů a serverů.
Jak konkrétně pomáhá PHP SOS?
- Zaznamenání: Zjišťujeme vaše veřejně dostupné systémy PHP a řadíme je podle rizika.
- Záplata nebo izolace: Nasazujeme aktualizace nebo izolujeme aplikace, které nelze záplatovat hned, a ověřujeme účinek zvenčí.
- Staré verze: U systémů s PHP 8.1 a starším s vámi plánujeme cestu k podporovanému stavu.
- Doklad: Dostanete dokumentaci provedených doporučení pro každý systém.
Jak staré aplikace převádíme na podporované verze, popisuje služba migrace PHP pro starší systémy.
Závěr
CERT-EU, CERT-Bund, BSI a projekt PHP mluví jedním hlasem: aktualizovat, a kde to nejde hned, izolovat. Rozdíly leží v podrobnostech, například v hranici verzí. Pro vaši praxi platí první krok, který všichni předpokládají: vědět, kde všude PHP běží.
Časté dotazy
Jaký je rozdíl mezi CERT-Bund a CERT-EU?
CERT-Bund je tým pro reakci na počítačové incidenty při BSI (německý Spolkový úřad pro informační bezpečnost) a v Německu varuje před zranitelnostmi. CERT-EU je služba kybernetické bezpečnosti pro orgány a instituce Evropské unie. Oba vydávají doporučení, která jsou užitečná i pro firmy.
Co znamená izolovat aplikaci PHP?
Aplikace pak není volně dostupná z internetu. Lze toho dosáhnout nouzovou stránkou, přístupem jen přes VPN nebo z určitých adres IP, nebo úplným odstavením. Rozhodující je, aby požadavky zvenčí už nedosáhly zranitelného procesu PHP.
Jsou podle CERT-EU postiženy i verze PHP 5?
CERT-EU podle zpráv považoval za možné, že jsou postiženy verze od PHP 5, a opíral se přitom o informace, které kolovaly před oficiálním oznámením. Odborný tisk uvádí téměř všechny verze zpětně až po PHP 5.4. Pro tak staré verze oficiální aktualizace neexistují.
Existují oficiální rozpoznávací znaky útoků?
Ne. Zatím nebyly zveřejněny žádné potvrzené indicators of compromise k PHP2Shell. Rozpoznání se opírá o analýzu chování, například procesy webového serveru, které spouštějí shelly, nebo nové soubory PHP ve složkách pro nahrávání.