Kritická zranitelnost v PHP ohrožuje Windows servery
Nezisková bezpečnostní organizace Shadowserver oznámila, že během 24 hodin od zveřejnění zranitelnosti a doprovodné opravy byly zahájeny internetové skeny, které hledají zranitelné servery. Jednoduchost zneužití, dostupnost důkazového kódu útoku, závažnost možného škodlivého kódu a zranitelnost platformy XAMPP přiměly bezpečnostní odborníky k naléhavému varování.
Chyba v konverzi znaků
Chyba, označená jako CVE-2024-4577, vzniká z nedostatků v tom, jak PHP převádí znaky Unicode na ASCII. Funkce ve Windows zvaná Best Fit umožňuje útočníkům použít tzv. argument injection k předání uživatelského vstupu do příkazů prováděných PHP. Tento exploit umožňuje obejít dříve opravenou chybu CVE-2012-1823.
Zdroj: Shutterstock
Jak k chybě dochází
Výzkumníci z Devcore vysvětlují, že PHP tým přehlédl funkci Best Fit při implementaci, což umožňuje neověřeným útočníkům obejít ochranu předchozí zranitelnosti pomocí specifických sekvencí znaků. Tímto způsobem mohou útočníci spustit libovolný kód na vzdálených serverech PHP.
Zranitelnost ovlivňuje PHP běžící v CGI režimu, kde webový server zpracovává HTTP požadavky a předává je PHP skriptům. I když PHP není v CGI režimu, zranitelnost může být stále zneužitelná, pokud jsou soubory php.exe a php-cgi.exe přístupné webovému serveru, což je běžné v XAMPP pro Windows.
Nebezpečné převody znaků
PHP, podobně jako mnoho jiných jazyků, převádí určité typy vstupů, aby se zabránilo jejich zneužití jako příkazů. Best Fit však neunikne některým znakům, jako je měkký spojovník, a místo toho je převádí na normální pomlčku, což umožňuje útok argument injection.
Výzkumníci demonstrovali, že měkký spojovník (Unicode 0xAD) je převeden na normální pomlčku (0x2D), což umožňuje útočníkům přidávat další příkazové argumenty. Tato metoda je podobná starší chybě CVE-2012-1823, což umožňuje využít staré techniky zneužití pro novou zranitelnost.
Doporučená opatření
Administrátoři by měli aktualizovat PHP na nejnovější verzi. Pokud to není možné, mohou použít přepisovací pravidla k blokování specifických dotazů:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? - [F,L]
Další možností je deaktivovat PHP CGI úpravou konfigurace Apache HTTP Server:
C:/xampp/apache/conf/extra/httpd-xampp.conf
# ScriptAlias /php-cgi/ "C:/xampp/php/"
Zranitelnost byla objevena výzkumníkem Orange Tsai z Devcore, který uvedl, že chyba je jednoduchá, ale právě to z ní činí závažnou. Výzkumníci potvrdili, že XAMPP je zranitelný, pokud je Windows nakonfigurován na tradiční nebo zjednodušenou čínštinu či japonštinu. Administrátoři by měli provést komplexní posouzení a testování svých systémů, aby zajistili jejich bezpečnost.