Dvě kritické zranitelnosti PHP umožňují spustit kód na serveru bez přihlášení. Zneužívat se začaly ještě před vydáním opravy. Jak zjistíte, kde všude vám PHP běží, a jak poznáte, že se někdo pokouší dostat do sítě?

PHP2Shell ve zkratce

PHP2Shell je veřejně dostupný řetězec exploitů pro dvě kritické zranitelnosti PHP, CVE-2026–109618 a CVE-2026–109619. Obě mají skóre CVSS v4.0 9,2. Útočníkovi bez přihlášení umožňují spustit vlastní kód na jakémkoliv serveru, který zpracovává webové požadavky v PHP. Týká se i produktů, které PHP obsahují, například redakčních systémů, administračních panelů nebo zařízení s webovým rozhraním. Podle Sansec začaly útoky 21. října, několik hodin před vydáním opravených verzí. Zranitelnosti se uplatní dřív, než se spustí kód aplikace. Nezastaví je proto ani přihlášení, ani ochrana na úrovni aplikace.
 

Používáte GREYCORTEX Mendel?
Připravili jsme playbook pro hledání PHP2Shell se sedmi IDS pravidly a hotovými filtry pro vaši síť.

Stáhněte si playbook

 

Co udělat ještě dnes

  • Zjistěte, kde PHP běží. Sepište všechny servery a produkty, které PHP obsahují. Začněte těmi, které jsou dostupné z internetu.
  • Aktualizujte. Opravené verze jsou 8.5.12, 8.4.27, 8.3.36 a 8.2.35, případně opravený balíček od dodavatele. Pro PHP 8.1 a starší oficiální oprava nevyšla, situaci proto ověřte u dodavatele distribuce nebo LTS podpory (upozornění PHP).
  • Pokud zatím aktualizovat nemůžete, snižte riziko. V php.ini nebo v konfiguraci poolu nastavte session.upload_progress.enabled=0 a restartujte všechny workery. V PHP 8.5 nastavte také fatal_error_backtraces=0. Omezte velikost požadavků na webovém serveru nebo proxy. Tam, kde aplikace nahrávání souborů nepotřebuje, zablokujte multipart/form-data.

Na co se zaměřit, pokud nepoužíváte nástroj Mendel

Neexistují signatury, které by dlouho zůstaly spolehlivé. Hledejte proto chování:

  • Požadavky multipart POST, které obsahují pole PHP_SESSION_UPLOAD_PROGRESS.
  • Série chyb 5xx (často 502 nebo 503) po požadavcích multipart POST od jednoho klienta a hlášení Allowed memory size … exhausted v logách PHP.
  • Poškozený nebo příliš dlouhý PHPSESSID v odpovědi Set-Cookie. Může jít o obsah uniklé paměti.
  • Webový server, který spouští shell, curl nebo wget, připojuje se k cílům, které dosud nepoužíval, nebo skenuje vnitřní síť (Huntress).

Pokud útok potvrdíte, server izolujte, uchovejte logy a záznamy provozu a aktualizujte PHP. Pak vyměňte všechny přihlašovací údaje a klíče, které mohly být v paměti workerů PHP, tedy hesla, API klíče, tajné klíče session a privátní klíče TLS. Únik z paměti nezanechá žádnou stopu, takže jediným bezpečným řešením je jejich výměna.

Šifrovaný provoz skrývá obsah požadavků před síťovými senzory. Kde provoz dešifrovat nemůžete, spoléhejte na chování popsané výše.

Zdroje