Уязвимости PHP 8.3: что известно и как защитить сайт
Белая труба с закрытым заглушкой концом, перед которой остановился маленький зелёный шарик

Уязвимости PHP 8.3: что известно и как защитить сайт

Отдельной «уязвимости PHP 8.3» нет — есть серия CVE. Самая опасная, CVE-2024-4577 (CVSS 9.8), исправлена в 8.3.8. Обновите PHP до актуальной 8.3.x.

Уязвимости PHP 8.3: что известно и как закрыть риски

Единой «уязвимости PHP 8.3» не существует: это целая ветка с набором CVE, которые исправляют в минорных релизах 8.3.x. Самая серьёзная из них, CVE-2024-4577, закрыта в версии 8.3.8, поэтому защита сводится к обновлению до актуальной 8.3.x и правильной настройке окружения.

Номер ветки «8.3» ничего не говорит о защищённости. Важна точная минорная версия, например 8.3.8 или новее, и то, как запущен PHP: FPM, mod_php или CGI.

Запрос «уязвимость php 8.3» ищут по двум причинам: администраторы увидели тревожную новость или сканер безопасности выдал предупреждение. В статье мы разберём, какие проблемы действительно находили в этой ветке, кого они касаются, как за несколько минут проверить свой сервер и что сделать, чтобы сайт не оказался в выдаче Яндекса и Google с пометкой «опасный».

Почему «уязвимость PHP 8.3» — это не одна дыра

PHP 8.3 вышел 23 ноября 2023 года. С тех пор разработчики выпускают для ветки регулярные обновления: версии 8.3.1, 8.3.2 и далее. В каждом из них, помимо обычных багфиксов, бывают исправления безопасности. Поэтому правильнее говорить не об «уязвимости 8.3», а о перечне CVE, закрытых на разных этапах жизни ветки.

У каждой уязвимости свой набор условий. Одни зависят от операционной системы (самые громкие случаи связаны с Windows), другие от режима запуска PHP, третьи от того, использует ли ваш код конкретные функции, например `proc_open` или `password_verify`. Поэтому два сайта на одной и той же версии могут иметь совершенно разный уровень риска.

Общее правило простое: чем старее минорная версия внутри ветки, тем больше известных и уже описанных публично проблем она содержит. Для злоумышленников такие сайты удобная цель, ведь способы эксплуатации давно разобраны и автоматизированы.

cve-2024-4577 · в цифрах

Самая громкая уязвимость в ветке 8.3

9.8оценка CVSS из 10: критический уровень
8.3.8первая версия ветки с исправлением
RCEудалённое выполнение кода на сервере
Windowsосновная платформа риска, режим CGI

Что произошло с CVE-2024-4577

В июне 2024 года стало известно об ошибке в обработке аргументов командной строки при запуске PHP через CGI на Windows. Из-за особенностей преобразования символов (механизм Best-Fit) специально сформированный запрос позволял передать интерпретатору собственные параметры и в итоге выполнить произвольный код на сервере. Под угрозой были ветки 8.1, 8.2 и 8.3 до исправленных релизов, а в ветке 8.3 безопасной стала версия 8.3.8.

Особенно уязвимыми оказались сборки вроде XAMPP на Windows, где режим CGI включён по умолчанию, а также сервера с нестандартной конфигурацией. Эксплуатация началась практически сразу после публикации деталей, и уязвимость использовали, в частности, для установки вредоносных программ-вымогателей.

В запросах к сайту подозрительный след выглядит как последовательность `%AD` в строке запроса. Если в логах веб-сервера встречаются такие обращения, сервер, вероятно, сканировали или пытались атаковать.

ИдентификаторСуть проблемыКого касаетсяГде исправлено в 8.3
CVE-2024-4577Внедрение аргументов в PHP-CGI, удалённое выполнение кодаWindows + режим CGI, в том числе XAMPP8.3.8 и новее
CVE-2024-8926Обход защиты от CVE-2024-4577 через особенности кодировокWindows + режим CGI8.3.12 и новее
CVE-2024-1874Обход экранирования в proc_open и инъекция команд ОСWindows, код с вызовами proc_open и массивом командОбновления 8.3.x в апреле 2024 года
CVE-2024-3096password_verify мог вернуть true для хеша с нулевым байтомРедкий сценарий: хеш с нулевым байтом попадает в проверкуОбновления 8.3.x в апреле 2024 года

Эта таблица не исчерпывающий перечень, а подборка наиболее показательных случаев. За время жизни ветки закрывали и другие проблемы: ошибки разбора многочастных форм, переполнение буфера в потоковых фильтрах, засорение логов в пуле процессов FPM. Актуальный и полный список исправлений всегда публикуется в журнале изменений (changelog) каждого релиза на официальном сайте PHP.

Важный практический вывод: если ваш сервер работает на Linux с PHP-FPM, конкретная CVE-2024-4577 на нём не воспроизводится. Но это не повод откладывать обновления. Разные уязвимости затрагивают разные компоненты, и заранее предсказать, какая из них окажется критичной для вашей конфигурации, невозможно.

Как проверить сервер и закрыть уязвимости PHP 8.3

  1. 01

    Узнайте точную версию PHP командой `php -v` на сервере. Для веб-окружения версию может показать и `phpinfo()`, но сразу после проверки удалите этот файл: он раскрывает конфигурацию.

  2. 02

    Определите режим запуска: PHP-FPM, mod_php или CGI/FastCGI, а также операционную систему. Связка Windows + CGI требует обновления в первую очередь.

  3. 03

    Обновите PHP до последней доступной версии 8.3.x через пакетный менеджер, панель хостинга или свежий образ Docker (например, php:8.3-fpm).

  4. 04

    Перезапустите php-fpm или веб-сервер. Без перезапуска в памяти продолжает работать старый процесс, а значит, уязвимость остаётся.

  5. 05

    Запустите `composer audit`, чтобы проверить зависимости проекта по базам известных уязвимостей. Для постоянного контроля подключите автоматические оповещения в репозитории.

  6. 06

    Просмотрите логи веб-сервера за последние недели: ищите запросы с `%AD` в строке запроса, необычными параметрами и всплески обращений к файлам php-cgi.

  7. 07

    Проверьте разделы безопасности в Яндекс Вебмастере и Google Search Console: именно там поисковики сообщают о вредоносном коде и взломе.

Версия в пакете не всегда совпадает с версией в исходниках

На Debian, Ubuntu и других дистрибутивах мейнтейнеры нередко переносят исправления безопасности в старые пакеты, не меняя номер версии. В результате `php -v` может показывать, например, 8.3.6, но при этом нужные патчи уже внесены. Обратная ситуация тоже возможна: устаревший пакет из стороннего репозитория, куда исправления не попадают.

Поэтому при сомнениях сверяйтесь не только с номером, но и с журналом изменений пакета. Например, в Debian и Ubuntu его можно открыть командой `apt changelog php8.3-fpm`, а там уже искать нужный идентификатор CVE.

Если вы работаете на виртуальном хостинге, откройте панель управления и проверьте, какая версия PHP выбрана для вашего домена. Обычно её можно переключить в пару кликов, но перед этим стоит протестировать сайт на копии: в новых версиях меняется поведение некоторых функций.

чек-лист · 10 минут

Быстрая проверка PHP-сервера

01
Версия

php -v показывает 8.3.8 или новее.

02
Режим запуска

Используется PHP-FPM, а не php-cgi на Windows.

03
Перезапуск

После обновления перезапущены php-fpm и веб-сервер.

04
Зависимости

composer audit не находит известных уязвимостей.

05
Логи

Нет подозрительных запросов с %AD и странных параметров.

06
Поисковики

В Яндекс Вебмастере и Google Search Console нет угроз безопасности.

Типичные ошибки при обновлении PHP

Большинство взломов происходит не из-за неизвестных дыр, а из-за того, что известные исправления просто не дошли до рабочего сервера.

Как делают неправильно

  • Видят «8.3» в phpinfo и считают, что версия свежая, не глядя на минорный номер
  • Оставляют файл с phpinfo() на сайте доступным из интернета
  • Обновляют пакет, но не перезапускают php-fpm, и в памяти продолжает работать старый процесс
  • Запускают PHP через CGI на Windows просто потому, что так настроено по умолчанию

Как делать правильно

  1. 01

    Сверять точную версию (например, 8.3.8 и выше) с журналом изменений релиза

  2. 02

    Удалять диагностические файлы сразу после проверки

  3. 03

    Перезапускать службы после каждого обновления и проверять версию снова

  4. 04

    Переходить на PHP-FPM и ограничивать доступ к исполняемым файлам интерпретатора

Жизненный цикл ветки: сколько ещё можно рассчитывать на поддержку

У каждой ветки PHP есть два этапа поддержки. Сначала два года идёт активная: в неё попадают и исправления ошибок, и патчи безопасности. Затем ещё два года выходят только исправления безопасности. Для PHP 8.3 активная поддержка завершилась в ноябре 2025 года, а патчи безопасности обещаны до конца 2027 года.

Это означает, что 8.3 остаётся приемлемым выбором для работающих проектов, но планировать переход на более новую ветку стоит заранее. Обновление в последний момент, когда поддержка уже закончилась, всегда обходится дороже и рискованнее.

таймлайн · php 8.3

Три даты, которые нужно помнить

23.11.2023Релиз PHP 8.3

Старт ветки: два года активной поддержки.

ноябрь 2025Конец активной поддержки

Дальше выходят только исправления безопасности.

31.12.2027Конец поддержки ветки

Патчей больше не будет: нужен переход на новую версию.

Как уязвимость PHP отражается на поисковом трафике

Взлом сервера почти всегда заканчивается не только утечкой данных, но и проблемами с поисковой выдачей. На сайт внедряют скрытые ссылки, спам-страницы, редиректы на сторонние ресурсы. Яндекс и Google обнаруживают такой контент и могут пометить сайт предупреждением, понизить его позиции или вовсе исключить страницы из индекса.

Первые сигналы вы увидите в сервисах для вебмастеров: в Яндекс Вебмастере это раздел о нарушениях и безопасности, в Google Search Console отчёт о проблемах безопасности и ручных мерах. Подключите оба инструмента и включите уведомления, чтобы узнавать о заражении в первые часы, а не через месяц, когда трафик уже просел.

Что даёт своевременное обновление PHP

  1. 01

    Закрытие известных критических уязвимостей, для которых уже есть готовые эксплойты

  2. 02

    Сохранение позиций в Яндексе и Google: сайт без вредоносного кода не получает пометок и санкций

  3. 03

    Защита персональных данных клиентов и снижение рисков, связанных с требованиями 152-ФЗ

  4. 04

    Прирост стабильности и скорости за счёт исправленных ошибок и оптимизаций в новых релизах

  5. 05

    Предсказуемая стоимость поддержки: небольшие обновления обходятся дешевле, чем срочный переход через несколько версий

Если сайт на Windows уже работал на PHP 8.3 до 8.3.8 в режиме CGI, одного обновления может быть недостаточно. Проверьте логи на подозрительные запросы, посмотрите список недавно изменённых файлов и смените пароли и ключи, которые хранились на сервере.

Итог: что делать с уязвимостями PHP 8.3

Опасна не сама ветка 8.3, а устаревшая минорная версия и неудачная конфигурация. Обновление до актуальной 8.3.x закрывает известные дыры, включая критическую CVE-2024-4577.
  1. 01

    Узнайте точную версию PHP и режим запуска на сервере

  2. 02

    Обновитесь минимум до 8.3.8, а лучше до последней доступной 8.3.x, и перезапустите службы

  3. 03

    Проверьте зависимости командой composer audit и просмотрите логи на следы атак

  4. 04

    Подключите Яндекс Вебмастер и Google Search Console, чтобы вовремя получать сигналы о проблемах

  5. 05

    Заранее запланируйте переход на более новую ветку PHP до конца поддержки 8.3

Безопасность PHP-проекта это не разовая настройка, а регулярная привычка: проверили версию, обновили, перезапустили, убедились. Потратив на это час в месяц, вы защитите и данные клиентов, и трафик из поиска. Если не хотите разбираться самостоятельно, специалисты проведут аудит и подготовят безопасный план обновления без простоя сайта.

Часто задаваемые вопросы

Проверим безопасность вашего PHP-сервера до того, как это сделают злоумышленники

Проведём аудит версии PHP, режима запуска и зависимостей, а затем дадим понятный план обновления.

Бесплатный аудитОтчёт за 24 часаБез простоя сайта

Более 200 проверенных PHP-проектов

Политика конфиденциальности

При оставлении заявки на ресурсе «https://gurucontext.ru» пользователи предоставляют следующие сведения:

  • Имя
  • Контактный телефон или Telegram
  • Адрес сайта пользователя (не обязательно)

Также администрация сайта получает данные об IP-адресе посетителей, типе браузера, времени нахождения на сайте и прочие подобные сведения через сервисы статистики.

Использование информации

Вся полученная информация используется администрацией «https://gurucontext.ru» исключительно в целях связи с клиентом.

Защита персональных данных

Компания «https://gurucontext.ru» обязуется не разглашать сведения, полученные от пользователей, и хранит их в защищённом виде.

Предоставление данных третьим лицам

Полученные сведения не передаются третьим лицам, за исключением случаев исполнения обязательств перед клиентом (с его разрешения) и обоснованных требований закона.

Контакты

Телефон: +7 (499) 955-47-00.
E-mail: info@gurucontext.ru.