Subscribe Now
Trending News
News

PHP2Shell: AI našla v PHP díry staré dvacet let

PHP2Shell: AI našla v PHP díry staré dvacet let

Dvě kritické zranitelnosti v samotném interpretu PHP dovolují spustit na serveru cizí kód bez přihlášení. Objevily je bezpečnostní firmy Wiz a Calif s pomocí modelů Gemini 4 Argon a GPT‑5.6 Sol. Opravy vyšly ve středu, Úřad vlády raději odstavil svůj web. Vývojáři PHP vydali 21. října mimořádné bezpečnostní verze 8.5.12, 8.4.27, 8.3.36 a 8.2.35. Opravují dvojici chyb vedenou jako CVE‑2026‑109618 a CVE‑2026‑109619, pro kterou se vžilo označení PHP2Shell, a obě umožňují neautentizované spuštění kódu na webovém serveru. Netýká se to jedné knihovny ani jednoho redakčního systému. Chyby sedí v jádře interpretu, takže zranitelný je i server, na kterém běží holé „Hello World“. Wiz předvedl funkční útok proti aktuálním kontejnerovým obrazům WordPressu, Drupalu a Joomly, tedy bez jediného řádku cizího kódu navíc. Společným jmenovatelem je paměťová bezpečnost: PHP si po fatální chybě, typicky po vyčerpání paměťového limitu, nechává v globálním stavu viset ukazatele na uvolněnou paměť. Další požadavek obsloužený stejným procesem pak sáhne do dat, která mezitím může ovládat útočník. CVSS v4.0 obě chyby ohodnotila stupněm 9,2. Zranitelné jsou podle Wizu všechny verze PHP vydané za posledních deset let, s přesahem až k PHP 5.4.

Jeden týden místo několika měsíců

Zajímavější než samotné chyby je způsob, jakým se na ně přišlo. Tým Wizu ve složení Sagi Tzadik, Shir Tamari, Nir Ohfeld a Tomer Schwartz nasadil vlastního agenta Wiz Atlas a vedle něj modely Gemini 4 Argon a GPT‑5.6 Sol. První zranitelnost měl tým na stole 19. srpna, o den později fungoval neautentizovaný útok na Drupal, 21. srpna na WordPress. Hlášení putovalo bezpečnostnímu týmu PHP 24. srpna, koordinovaná oprava začala 21. září a ven šla přesně o měsíc později. V závěru svého rozboru Wiz tvrdí, že jediný výzkumník za týden odvedl práci, na kterou by dřív potřeboval tým několik měsíců. Druhou chybu našla firma Calif, a to v rámci iniciativy OpenAI nazvané Patch the Planet. Použila k tomu model GPT‑5.6 Sol. OpenAI k tomu píše, že „podle našich informací našla hraniční AI tyto zranitelnosti dřív než útočníci“, a dodává, že podobných nálezů bude v nejbližších měsících rychle přibývat. Přiznám se, že první věta té formulace mi zněla jako obvyklé sebechválení laboratoře. Jenže technická část Wizova rozboru ji dost podpírá. Modely podle něj nepomáhaly hlavně s hledáním, ale s tou nudnou částí: přenášením exploitu mezi verzemi PHP, konfiguracemi a rozloženími paměti. Tohle je přesně ta ruční dřina, kvůli které se podobné paměťové chyby historicky zneužívaly jen vzácně a jen velmi schopnými útočníky. Wiz to shrnuje stručně: „S AI už tohle není překážka.“ Bariéra, která chránila PHP dvacet let, tedy nespočívala v tom, že by chyby nikdo nenašel. Spočívala v tom, že je nikdo nedokázal spolehlivě zneužít.

Útočí se už teď, nebo ne?

Tady se zdroje rozcházejí a vyplatí se to vědět. OpenAI i TechCrunch tvrdí, že o žádném zneužití před zveřejněním se neví. Proti tomu stojí technický ředitel Cloudflare Dane Knecht, podle kterého firma sledovala první útoky na obě zranitelnosti ještě před vydáním záplat a nasadila proti nim dočasná pravidla WAF. Patchstack ve svém varování z 21. října rovnou mluví o potvrzených případech aktivního zneužívání. Část informací navíc unikla před koordinovaným zveřejněním, což nejspíš vysvětluje, proč se harmonogram zhroutil. Objem toho, co je v sázce, se dá odhadnout jen hrubě. VirusTotal napočítal přes 5,1 milionu veřejně dostupných PHP hostů, z toho zhruba 3,8 milionu s alespoň jedním otevřeným portem. PHP pohání kolem 70 % webů. Nejhůř je na tom podle vývojářů PHP konfigurace s mod_php, kde útočný požadavek spustí problém dřív, než se vůbec dostane ke slovu aplikační kód. Zranitelné jsou ale i PHP‑FPM, php‑cgi, FrankenPHP a LiteSpeed. Provozovatelé starších větví mají smůlu: PHP 8.1 a starší už upstream podporu nemají, k dispozici jsou jen minimální zdrojové backporty pro 7.4, 8.0 a 8.1 určené k vlastnímu sestavení. Dočasná opatření typu snížení paměťových limitů nebo vypnutí session.upload_progress podle PHP před útokem úplně neochrání. Vývojář jádra Gina Peter Banyard to říká bez obalu: trvalou obranou je jedině oficiální záplata.

Česko: vládní weby zhasly

NÚKIB vydal varování ještě 21. října a doporučil aktualizovat okamžitě. Jako možný indikátor napadení uvádí neobvyklé procesy spouštěné službami PHP. Aktivní zneužívání v Česku úřad nepotvrzuje, upozorňuje jen na to, že informace umožňující útok jsou veřejně dostupné. Reakce úřadů byla rychlá. Úřad vlády ČR svůj web v 19:00 preventivně odstavil s odůvodněním, že jde o zajištění bezpečného provozu stránek. Český hydrometeorologický ústav vypnul část svých služeb včetně hydro.chmi.cz. Podle agentury Reuters sáhly ke stejnému kroku vládní instituce v Německu, Francii, Nizozemsku a Finsku. Britské NCSC i americká NSA doporučily organizacím, které nestihnou záplatovat, systémy dočasně odpojit. Pro majitele českých webů na sdíleném hostingu je úkol jednoduchý: ověřit si u poskytovatele verzi PHP a případně ji přepnout. Český hosting například vydal k PHP2Shell vlastní návod. Horší je to u aplikací běžících na vlastním VPS a u starších zakázkových systémů přibitých k PHP 7.4, kterých je po českých firmách pořád dost.

Co si z toho odnést

Zveřejnění PHP2Shell je první velký případ, kdy hraniční modely našly chybu v softwaru, na kterém stojí většina webu. Platí to ale oběma směry. Stejná schopnost, která Wizu zkrátila výzkum z měsíců na týden, bude od tohoto týdne k dispozici i lidem, kteří ji nepoužijí na hlášení chyb. Obránce má náskok ve dnech, ne v letech. Prakticky to znamená jediné. Zkontrolujte verzi PHP ještě dnes, protože rozdíl mezi 8.3.35 a 8.3.36 je v tomto případě rozdíl mezi funkčním webem a cizím shellem.

Zdroje

Related posts