В среде выполнения PHP были обнаружены две критические уязвимости удаленного выполнения кода (RCE), зарегистрированные под идентификаторами CVE-2026-109618 и CVE-2026-109619. Они представляют собой компонент RCE в составе более широкой группы уязвимостей ядра PHP, получившей от исследовательской компании Wiz общее название PHP2Shell. По данным Wiz, PHP2Shell включает в себя множественные критические ошибки — от утечки памяти в стиле Heartbleed до неаутентифицированного RCE — затрагивая все версии PHP, выпущенные за последнее десятилетие вплоть до PHP 5.4, и ставя под угрозу веб-серверы, обеспечивающие работу 70% всех сайтов в мире. Администраторам систем необходимо немедленно проверить и обновить рабочие процессы веб-серверов, а обычным пользователям сети — соблюдать базовые меры предосторожности при взаимодействии с веб-сервисами.

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

Что произошло: пара уязвимостей php2shell

Согласно бюллетеню Национальной базы уязвимостей США (NVD) от 21 октября 2026 года, обе проблемы локализованы в подсистеме распределения памяти и жизненном цикле обработки входящих запросов движка Zend Engine.

При возникновении фатального сбоя или исчерпания памяти (OOM) во время обработки веб-запроса PHP задействует механизм longjmp для аварийной остановки контекста и раскрутки стека вызовов. В уязвимых версиях такое прерывание нарушает структуры учета памяти, порождая два опасных сценария:

  1. Повторное использование неинициализированной памяти (CVE-2026-109618): Если выделение памяти прерывается ошибкой, пулы структур запроса остаются в неинициализированном состоянии. Последующие процедуры очистки в долгоживущем процессе читают эти области, что ведет к повреждению кучи и выполнению произвольного кода.
  2. Обращение к устаревшему глобальному состоянию (CVE-2026-109619): Глобальные указатели, временно ссылающиеся на память завершенного запроса, не очищаются должным образом. При обработке следующего запроса тем же рабочим процессом происходит взаимодействие с освобожденной памятью, что дает возможность перехватить управление приложением.

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

Затронутые версии PHP и официальные обновления

Команда разработчиков PHP опубликовала официальные исправления для всех поддерживаемых веток 22 октября 2026 года. Администраторам веб-ресурсов необходимо сверить инфраструктуру со следующей таблицей:

Ветка Уязвимые версии Исправленный выпуск Статус поддержки
PHP 8.5 от 8.5.0 до 8.5.11 8.5.12 Активная поддержка (Active support)
PHP 8.4 от 8.4.0 до 8.4.26 8.4.27 Активная поддержка (Active support)
PHP 8.3 от 8.3.0 до 8.3.35 8.3.36 Только исправления безопасности
PHP 8.2 от 8.2.0 до 8.2.34 8.2.35 Только безопасность (до 31.12.2026)
PHP 8.1 и старше Все версии Отсутствует Снята с поддержки (End of Life)

Согласно официальному регламенту поддержки PHP, ветки с активным статусом (PHP 8.4 и PHP 8.5) получают как функциональные исправления, так и патчи безопасности. Ветки в режиме закрытия уязвимостей (PHP 8.2 и PHP 8.3) получают исключительно критические обновления безопасности; ветка PHP 8.2 окончательно снимается с поддержки 31 декабря 2026 года.

Устаревшие инсталляции на базе PHP 8.1 и более ранних версий остаются уязвимыми навсегда, так как закрытые ветки не обновляются. Организациям требуется запланировать переход на современные версии.

Что это означает для обычных пользователей

По данным Wiz, PHP обеспечивает работу порядка 70% веб-сайтов по всему миру, включая крупнейшие платформы блогов, интернет-магазины и личные кабинеты сервисов. Даже если вы не занимаетесь настройкой серверов, посещаемые вами ресурсы используют данную платформу.

Обычный посетитель сайтов не может напрямую обновить удаленный сервер, однако базовые правила цифровой гигиены позволяют свести риски к минимуму:

  • Обращайте внимание на уведомления сервисов: Если используемая вами онлайн-платформа сообщает о техническом сбое или инциденте безопасности, без промедления смените пароль от этой учетной записи.
  • Не используйте одинаковые пароли: Использование одного пароля на разных площадках создает критическую уязвимость. При компрометации одного сайта злоумышленники автоматически проверяют полученные учетные данные на почтовых ящиках и в социальных сетях. Задавайте уникальный сложный пароль для каждого профиля.
  • Включайте двухфакторную аутентификацию (2FA): Активируйте двухэтапную проверку везде, где предусмотрена такая возможность, отдавая предпочтение приложениям-генераторам кодов. Это защитит профиль даже в случае кражи пароля из базы данных сайта.
  • Остерегайтесь поддельных уведомлений об обновлении: Взламывая веб-ресурсы, злоумышленники нередко внедряют вредоносный код, вызывающий всплывающие окна с требованием обновить браузер или системный компонент. Никогда не загружайте исполняемые файлы со сторонних сайтов; обновляйте программы исключительно через штатные настройки операционной системы и браузера.
  • Защищайте сетевой трафик: При подключении к общественному Wi-Fi используйте VPN, который шифрует соединение между вашим устройством и VPN-сервером, предотвращая перехват данных посторонними в той же сети. Скачать VPNRice.

Инструкция по обновлению для системных администраторов

Для защиты инфраструктуры веб-хостинга выполните следующие шаги:

1. Обновление пакетов и проверка бюллетеней безопасности дистрибутива

Если ваш сервер использует официальные репозитории дистрибутивов Linux (таких как Debian или Ubuntu), сопровождающие пакетов бэкпортируют исправления безопасности непосредственно в текущие стабильные версии пакетов без изменения номера апстрим-версии (например, базовый номер версии в системе может по-прежнему отображаться как 8.2.26 или 8.4.15 даже после применения патчей).

Сначала обновите списки пакетов и примените обновления для используемой версии PHP (имена пакетов ниже приведены в качестве примера и зависят от версии PHP в вашем репозитории):

sudo apt-get update
sudo apt-get --only-upgrade install php8.4-fpm php8.4-cli php8.4-common

Затем сопоставьте номер версии установленного пакета с официальным бюллетенем безопасности вашего дистрибутива (например, Debian Security Advisory DSA или Ubuntu Security Notice USN):

apt-cache policy php8.4-fpm

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

apt-get changelog php8.4-fpm | head -n 20

Только в случаях, когда сборка производится напрямую из исходных кодов php.net, при использовании PPA Ондржея Суры (Ondřej Surý) либо при запуске официальных Docker-контейнеров PHP вывод команды php -v будет напрямую указывать на номера 8.2.35, 8.3.36, 8.4.27 или 8.5.12.

2. Пересборка контейнеров

Обновление хостовой системы не затрагивает готовые образы контейнеров. При использовании Docker обновите базовый образ в файле Dockerfile:

FROM php:8.4.27-fpm-alpine

Запустите повторную сборку с флагом очистки кэша:

docker build --no-cache -t web-app:latest .

3. Настройка фильтрации на сетевом периметре

До завершения обновления серверов приложений включите проверку входящего трафика на обратных прокси или Web Application Firewall. Ограничьте размер заголовков, контролируйте частоту многокомпонентной загрузки файлов (multipart) и блокируйте нестандартные запросы до передачи рабочим процессам PHP.

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