Bezpečnostní výzkumníci s pomocí umělé inteligence objevili dvě vážné chyby v PHP, tedy v programovacím jazyce, na kterém běží zhruba 70 procent všech webových stránek na světě. Útočník přes ně mohl spustit na serveru vlastní kód, aniž by se musel kamkoli přihlásit. Chyby dostaly společné jméno PHP2Shell a vývojáři PHP je ohodnotili známkou 9,2 bodu z 10 na stupnici závažnosti.
Lidé z oboru ale neřeší jen rozsah problému. Hlavně se baví o tom, jak byla chyba nalezena. Velkou část práce na jejím vystopování totiž odvedl jazykový model.
Stará stopa a nečekaný objev
Za objevem je americká bezpečnostní firma Calif. Její výzkumníci začali 30. července na žádost PHP Foundation procházet zdrojový kód PHP s pomocí modelu GPT-5.6 Sol od OpenAI. Dělali to v rámci programu Patch the Planet, díky kterému se bezpečnostní experti dostanou k nejvýkonnějším modelům AI a mohou s nimi hledat díry v softwaru, na němž internet stojí.
Velké naděje si ve firmě Calif nedělali. Společnost přiznala, že kritické chyby nečekala, protože PHP už předtím důkladně prověřili jiní odborníci, a to rovněž s pomocí AI. PHP patří mezi nejsledovanější kusy softwaru vůbec a bezpečnostní experti se v něm hrabou desítky let.
Výzkumník Ryan Austin vycházel z tušení, že ve starších částech kódu se skrývají dávné nedostatky, a model používal jako pomocníka. Stopa vedla hluboko do minulosti. První chybu spojenou s limitem paměti v PHP popsal Stefan Esser už v roce 2004. V roce 2020 někdo projektu nahlásil podobný problém a v roce 2024 tutéž věc znovu objevil audit organizací OSTIF a Quarkslab. Odborníci ji ale považovali za příliš těžko zneužitelnou, a tak upadla v zapomnění.
Austin proto modelu zadal specifický úkol. Zaměřil ho na chování PHP ve chvíli, kdy narazí na hranici povolené paměti, což znamená situaci, kdy se nepodaří přidělit paměť, nastane fatální chyba a program se ukončuje.
AI objevila chybu
Model četl zdrojový kód a sledoval, kudy data uvnitř PHP putují. Přišel na to, že je špatně pořadí, ve kterém se připravuje jedna z vnitřních datových tabulek. Pak vystopoval cestu, při níž PHP během zpracování odeslaných formulářových dat sáhne do tabulky v rozbitém stavu.
Laicky řečeno, když PHP během zpracování požadavku dojde paměť, může po něm zůstat napůl rozdělaná práce. První chyba způsobí, že PHP omylem zpracuje neúplná nebo poškozená data. Druhá spočívá v tom, že použije zastaralé údaje z dřívějšího požadavku, přestože paměť, kde byly uložené, už byla uvolněná. Šikovný útočník dokáže obě slabiny obrátit ve svůj prospěch a podstrčit serveru vlastní příkazy.
Zrádné je, že se to děje dřív, než web vůbec začne pracovat. Ohrožená může být i stránka, která jen vypíše OK, protože chybné zpracování proběhne ještě před spuštěním jediného řádku kódu samotné aplikace. Nezáleží tedy na tom, jak pečlivě má kdo napsaný svůj web.
Firma Calif chyby našla během několika dní. Prvotní nález zvládla s veřejně dostupným modelem GPT-5.6 Sol a bez speciálního testovacího prostředí. Na výrobu funkčních útoků výzkumníci použili ještě nevydaný model OpenAI. Model jim pomohl najít nový problém, udělat z něj opakovatelný postup a s jeho pomocí odhalit další. Firma ale krotí představy, že by AI všechno vyřešila sama. Podle ní hrála znalost historie PHP větší roli než samotný model a žádný systém zatím neumí na pár jednoduchých pokynů vyhrabat všechny chyby.
Chyby nehledala jen firma Calif. Nezávisle na ní se k chybám 19. srpna dostali i lidé z firmy Wiz, kterou vlastní Google. Pomáhaly jim modely Gemini 4 Argon a GPT-5.6 Sol spolu s vlastním nástrojem Wiz Atlas. AI podle nich sloužila hlavně k úpravám zkušebních útoků pro různé verze PHP a různá nastavení serverů a k rozboru, proč některé pokusy selhávají. Ve firmě Wiz nešetří silnými slovy. Jediný výzkumník s nejvýkonnějšími modely podle nich zvládl za týden to, na co by dřív světová špičková parta potřebovala měsíce. Spoluzakladatel firmy Ami Luttwak dodal, že chyba byla nejspíš tak složitá, že by ji bez AI nikdo neobjevil.
Jak dlouho v PHP číhala, se zdroje úplně neshodují. Spoluzakladatel OpenAI Greg Brockman mluví o čtrnácti letech. Ohrožené jsou verze PHP od 5.4 až po 8.5.
Závod s časem
Po objevu přišla fáze, o které běžný uživatel nic neví. Šéf společnosti Calif Thai Duong 11. srpna upozornil vývojáře PHP Volkera Dusche a tím začala tichá společná snaha opravit problém dřív, než se o něm dozvědí útočníci. O pár dní později firma vývojářům poslala funkční ukázku útoku a 21. srpna nahlásila druhou chybu. Výzkumníci drželi vše v přísném utajení, protože se báli, že chybu mezitím najde nějaký hacker, kterému také pomáhá AI. Do příprav oprav se zapojili správci PHP, další výzkumníci, bezpečnostní firmy i americké úřady včetně agentury CISA.
Plán ale nevyšel úplně podle představ. Zveřejnění bylo naplánované na 22. října, jenže podrobnosti o chybách i ukázka útoku unikly s předstihem. PHP Foundation proto vydání posunula o den dřív a opravené verze 8.5.12, 8.4.27, 8.3.36 a 8.2.35 vyšly 21. října.
Chyby se hned někdo chytil a pokusil se ji zneužít už čtyři dny před oficiálním zveřejněním a bezpečnostní firma Sansec počítala s hromadnými útoky do čtvrthodiny po vydání oprav. Protože jde o chybu v samotném PHP, mohou být ohrožené i weby postavené na WordPressu, Drupalu nebo Joomle.
Duong popsal obavy dost syrově. Podle něj stačí, aby si nějaký chlapík z Twitteru vzal opravy, pustil na ně AI a zveřejnil hotový útok. Stejný nástroj, který chybu pomohl najít, totiž může útočníkům výrazně zkrátit cestu k funkčnímu útoku.
Příběh má i stinnou stránku. PHP Foundation, která se o jazyk stará, má jen třináct zaměstnanců na plný či částečný úvazek a žije z darů, zatímco do výzkumu AI proudí miliardy. Vývojáři PHP sami přiznali, že první známky problému zaznamenali už v roce 2024.
OpenAI tvrdí, že podle jejích informací našla AI tyto zranitelnosti dřív než útočníci. Bezpečnostním týmům chce rozdat přístup ke svým modelům v hodnotě miliardy dolarů a programátorům nabídla doplněk pro Codex, který ověří, jestli je jejich web nebo instalace PHP vůči PHP2Shell zranitelná.
Zdroje: openai.com a nytimes.com



