Спецпроекты

Безопасность

В PHP найдена уязвимость, затрагивающая все версии Windows

У хакеров снова появилась возможность использовать уязвимость 2012 г. в PHP под Windows из-за свежеобнаруженной ошибки: эти уязвимости допускают запуск произвольного кода.

Критическая, без индекса

В языке PHP выявлена критическая уязвимость, затрагивающая все версии, начиная с пятой, и угрожающая множеству серверов под управлением Windows.

Специалисты, сопровождающие проект, уже выкатили необходимые обновления, однако существует высочайшая степень риска, что обновление конечных устройств затянется, а значит, они будут уязвимы в течение продолжительного времени. Уязвимость позволяет запускать произвольный код в контексте Windows Server с установленными компонентами PHP.

«Баг» под индексом CVE-2024-4577 ещё не получил оценки по шкале CVSS, но, вероятнее всего, она окажется не ниже девяти баллов.

Новая фишка в Windows привела к появлению уязвимости

Проблема связана с тем, как PHP конвертирует символы Unicode в ASCII. В Windows встроена функция под названием Best Fit («Лучший выбор»), которая, как выяснилось, допускает использование методики под названием инъектирование аргумента, приводящее к конвертации пользовательского ввода в команды, которые будет выполнять конечное приложение.

Не лучший выбор

Как указывается в публикации аналитиков группы Devcore, при внедрении PHP под Windows разработчики не обратили внимание на то, что функция Best Fit производит конверсию кодировки.

Из-за этого злоумышленники могут с помощью определённой последовательности символов обходить защиту от старой уязвимости CVE-2012-1823, исправленной ещё 12 лет назад, и запускать произвольный код на серверах через инъекцию аргумента.

«Уязвимость 2012 г. эксплуатировали на протяжении нескольких лет после её обнаружения и устранения», - говорит Анастасия Мельникова, директор по информационной безопасности компании SEQ. Она предполагает, что и уязвимость CVE-2024-4577 будет давать о себе знать довольно долго. «Пробный эксплойт для неё уже есть, и с нескольких адресов производится интенсивное сканирование в поисках уязвимых серверов. Защитные меры надо принимать срочно», - подытожила эксперт.

CVE-2024-4577 срабатывает когда PHP-приложения работают в режиме CGI: в этом случае веб-сервер считывает HTTP-запросы и перенаправляет их на скрипт PHP для дальнейшей обработки.

Впрочем, когда PHP работает не в CGI-режиме, уязвимость можно эксплуатировать при условии, что исполняемые файлы php.exe и php-cgi.exe находятся в каталогах, доступных для веб-сервера. В случае опенсорсного веб-сервера XAMPP под Windows это настройки по умолчанию, так что все сервера XAMPP, скорее всего, уязвимы.

А в особенности уязвимы, по-видимому, юго-восточно-азиатские локали, для которых ошибки конверсии особенно часто встречаются, - в том числе, японский язык, традиционный и упрощённый китайский и другие.

По данным Devcore, CVE-2024-4577 затрагивает все версии PHP от 5.x до 8.0. В PHP 8.3.8, PHP 8.2.20 и PHP 8.1.29 уязвимость отсутствует.

Пользователям PHP-CGI рекомендуется рассмотреть более безопасные альтернативы FastCGI, PHP-FPM или Mod-PHP.

Роман Георгиев

Короткая ссылка