Уязвимост в PHP, позволяваща изпълнение на код при работа в режим CGI

В PHP е открита уязвимост (CVE-2024-4577), която позволява изпълнението на собствения код на сървера или прегледа на изходния код на PHP скрипта, в случай че PHP се използва в режим CGI на платформата Windows (конфигурации с mod_php, php-fpm и FastCGI не са податливи на уязвимостта). Проблемът е разрешен в изданията PHP 8.3.8, 8.2.20 и 8.1.29.

Уязвимостта е частен случай на проблема, разрешен през 2012 година (CVE-2012-1823), за който защитата се оказа недостатъчна, за да блокира атаката на платформата Windows. Методът на атака се състои в възможността за подмяна на аргумента на командния ред при стартиране на интерпретатора PHP чрез манипулиране с параметрите на заявката към PHP скрипта.

В стара уязвимост CVE-2012-1823 за експлотация бе достатъчно да се зададат опции за команден ред вместо параметри на заявката, например, «http://localhost/index.php?-s» за показване на изходния код на скрипта. Новата уязвимост се основава на това, че платформата Windows предлага автоматично преобразуване на символи, което позволява за заобикаляне на преди добавената защита да се използват символи, присъстващи в някои кодировки и заменяни с символа «-» (например, http://localhost/index.php?s).

Уязвимостта е потвърдена в конфигурации с локали за традиционен китайски (cp950), опростен китайски (cp936) и японски (cp932) език, но не е изключено проявата ѝ и с други локали. Проблемът се проявява в конфигурация по подразбиране в набора XAMPP (Apache + MariaDB + PHP + Perl), както и във всякакви конфигурации на Apache, в които php-cgi е настроен като обработчик на CGI скриптове чрез настройката
'Action cgi-script "cgi-bin/php-cgi.exe"' или 'Action application/x-httpd-php-cgi "php-cgi/php-cgi.exe"', или при пряко разполагане на интерпретатора php в "cgi-bin" и всякакви други директории, в които е разрешено изпълнението на CGI скриптове чрез директивата ScriptAlias.

Освен това в обновленията на PHP 8.3.8, 8.2.20 и 8.1.29 са отстранени още три уязвимости:

  • CVE-2024-5458 — възможност за заобикаляне на филтър
    FILTER_VALIDATE_URL, използван при извикването на функцията filter_var.
  • CVE-2024-5585 — алтернативен вектор на атака на уязвимостта CVE-2024-1874, позволяващ заобикалянето на предишно добавената защита и извършването на подмяна на команди при извикване на bat и cmd файлове чрез функцията proc_open на платформата Windows (уязвимост BatBadBut).
  • Податливост на функцията openssl_private_decrypt на атаката Marvin.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster