Crmgo Блог

PHP2Shell: критические уязвимости в PHP (CVE-2026-109618, CVE-2026-109619) — срочно обновитесь до 8.5.12, 8.4.27, 8.3.36, 8.2.35

PHP2Shell: критические уязвимости в PHP (CVE-2026-109618, CVE-2026-109619) — срочно обновитесь до 8.5.12, 8.4.27, 8.3.36, 8.2.35

21 октября 2026 года PHP выпустил экстренные обновления 8.5.12, 8.4.27, 8.3.36 и 8.2.35. Они исправляют две критические уязвимости (CVSS 9.2), позволяющие удалённо выполнять код без аутентификации в PHP-FPM, mod_php, php-cgi, FrankenPHP и LiteSpeed.

PHP2Shell: критические уязвимости в PHP (CVE-2026-109618, CVE-2026-109619) — срочно обновитесь до 8.5.12, 8.4.27, 8.3.36, 8.2.35

21 октября 2026 года команда PHP выпустила экстренные обновления безопасности PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35. Они закрывают две критические уязвимости, позволяющие удалённо выполнить код без аутентификации: CVE-2026-109618 и CVE-2026-109619. Обе имеют оценку CVSS v4.0 9.2. В медиа их вместе называют PHP2Shell.

Что произошло

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

  • CVE-2026-109618 (GHSA-w8hw-w9fx-j79w): RCE через повреждение памяти при нехватке памяти (OOM). Если запрос достигает memory_limit в неудачный момент, внутренние данные запроса остаются инициализированными лишь частично. При очистке запроса PHP может считать их корректными. На Apache с mod_php атаку можно запустить неаутентифицированным запросом ещё до выполнения кода приложения. По данным PHP Foundation, полное удалённое выполнение кода продемонстрировано с настройками по умолчанию. На PHP-FPM RCE подтверждено через пути в коде приложения.
  • CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp): RCE через «устаревшее» глобальное состояние. Фатальная ошибка в неудачный момент может оставить внутреннее состояние, указывающее на уже освобождённую память предыдущего запроса. Следующий запрос в том же воркере может воспользоваться этой памятью (use-after-free). Последствия: утечка данных из памяти, падение воркера и выполнение кода.

Кого это касается

По словам команды PHP, под угрозой все установки PHP, обслуживающие веб-запросы: PHP-FPM, Apache с mod_php, php-cgi, FrankenPHP и LiteSpeed. Наивысший риск для mod_php.

Уязвимые версии (по бюллетеню AWS):

  • PHP 8.5.0–8.5.11: исправлено в 8.5.12
  • PHP 8.4.0–8.4.26: исправлено в 8.4.27
  • PHP 8.3.0–8.3.35: исправлено в 8.3.36
  • PHP 8.2.0–8.2.34: исправлено в 8.2.35
  • PHP 8.1 и более старые проектом PHP больше не поддерживаются. Команда безопасности PHP опубликовала минимальные бэкпорты исходного кода для 7.4, 8.0 и 8.1. Также проверьте обновления от своего дистрибутива или LTS-поставщика.

Исправления также вошли в тестовую сборку PHP 8.6.0 RC4.

Насколько это серьёзно

PHP работает на большинстве сайтов в мире, в том числе на WordPress, Joomla, Drupal, Laravel и Symfony. По данным BleepingComputer, Cloudflare ещё до выхода патчей фиксировала первые попытки атак и развернула временные правила WAF. Британский NCSC призвал немедленно обновиться или временно отключить уязвимые системы. Разработчики PHP подчёркивают, что полноценных обходных мер нет: надёжно защищает только обновление.

Что делать сейчас

  1. Проверьте версию PHP. В консоли выполните php -v. Для веб-сервера версия может отличаться, поэтому проверьте её через phpinfo() или в панели хостинга. Для FPM выполните php-fpm -v (или, например, php-fpm8.3 -v).
  2. Обновитесь до 8.5.12, 8.4.27, 8.3.36 или 8.2.35. В Linux установите обновлённые пакеты своего дистрибутива (дистрибутивы получили патчи заранее), например apt update && apt upgrade или dnf upgrade php*.
  3. Перезапустите все воркеры PHP-FPM, Apache и других SAPI. Пересоберите и переразверните Docker-образы.
  4. Если у вас PHP 8.1 или более старый, планируйте переход на поддерживаемую ветку. Также обратите внимание, что поддержка PHP 8.2 заканчивается 31 декабря 2026 года.

Временные меры, если обновиться немедленно невозможно (они лишь снижают риск, но не устраняют его):

  • Для CVE-2026-109618: задайте memory_limit=-1 через php_admin_value, чтобы приложение не могло изменить это значение. Уменьшите post_max_size до 8M (или до 32M, если нужны загрузки файлов). Ограничьте размер и сложность запросов на уровне веб-сервера или прокси.
  • Для CVE-2026-109619: задайте session.upload_progress.enabled=0 в php.ini или в конфигурации пула FPM и перезапустите воркеры. На PHP 8.5 также задайте fatal_error_backtraces=0.

Источники

Обновим ваш проект на новую версию PHP

Команда CRM Go обновляет проекты клиентов до актуальных защищённых версий PHP. Мы проверяем совместимость кода, обновляем зависимости и фреймворки, тестируем проект и разворачиваем обновления без простоя сайта. Если вы не уверены, защищён ли ваш сервер уже от PHP2Shell, напишите нам, и мы поможем.

Примечание: материал мог быть создан с помощью ИИ и затем отредактирован человеком. Ответственный: Dmytro Lomaka, Kaltenkirchen.