Первые сообщения об эксплуатации двух уязвимостей в интерпретаторе PHP поступили 21 октября 2026 года, до выхода исправлений. Хостинг-партнёры Patchstack зафиксировали инциденты в 07:34 UTC, Cloudflare сообщила об атаках на PHP-сайты в 07:43 UTC. Плановый выпуск патчей назначен на 14:00 UTC. Уязвимы все веб-серверы с PHP 5.4 и выше, включая магазины на Magento, Shopware и WooCommerce и сайты на WordPress, Drupal, Joomla и Laravel. Аналитики Sansec прогнозируют массовые автоматизированные атаки в первые 15 минут после публикации исправлений.
CVE-2026-109618 и CVE-2026-109619, механизм атаки и обходные меры до патча
Обе уязвимости находятся в ядре интерпретатора, а не в коде приложения. Оценка обеих по CVSS v4.0 составляет 9.2. Вектор атаки сетевой, аутентификация не требуется: исследователи описывают их как удалённое выполнение кода (RCE, запуск команд атакующего на сервере). Идентификаторы подтвердила компания watchTowr, она же воспроизвела CVE-2026-109618. Официальный перечень затронутых версий PHP опубликует вместе с релизом.
По данным открытых прототипов, проблема связана с механизмом session.upload_progress, который отслеживает ход загрузки файлов через веб-формы и включён по умолчанию с PHP 5.4.0. При обновлении данных пользовательской сессии связанные структуры в оперативной памяти освобождаются, а последующее обращение к прежним адресам даёт ошибку класса use-after-free (обращение к уже освобождённой памяти). Атака проходит через разбор запросов с типом содержимого multipart/form-data: этот формат браузеры используют для передачи файлов, и PHP разбирает его до запуска кода приложения. Наличия формы загрузки на сайте не требуется. Для успешной эксплуатации нужна раскладка структур в памяти конкретной сборки, поэтому в прототипах перебираются заранее вычисленные смещения для пакетов разных дистрибутивов.
В сети распространяется демонстрация инструмента PHP2Shell, приписываемого исследователям Calif.IO. Его баннер заявляет работу против всех выпусков PHP начиная с 5.4.0, а на записи показан запуск команд на серверах с WordPress, MediaWiki, phpBB, Magento, Joomla, Laravel, Symfony, Drupal и WHMCS, в конфигурациях Apache с модулем PHP и PHP-FPM. Независимой проверки всех сценариев нет. Отдельный исследователь под псевдонимом J4ck3LSyN опубликовал проект PHP-UP-2026 с прототипами для обоих идентификаторов. Автор характеризует набор как пригодный для лабораторной эксплуатации.
Что делать до установки патча
Основной путь закрытия - обновление самого PHP, а не системы управления содержимым. Конфигурационные настройки и правила межсетевого экрана веб-приложений (WAF, фильтрация HTTP-запросов) разработчики ядра называют временной мерой. PHP core developer Джина Питер Баниард указала, что патч остаётся единственной полноценной мерой.
На серверах, которым не нужна загрузка файлов, запросы с Content-Type multipart отклоняют на уровне веб-сервера, чтобы PHP их не разбирал. Правило настраивается в nginx, Apache и Caddy; оно ломает любую загрузку файлов, включая изображения товаров в админке Magento и медиатеку WordPress, поэтому после включения стоит оформить тестовый заказ. Правило снимают после обновления PHP.
| 1 2 | session.upload_progress.enabled = 0 session.use_strict_mode = 1 |
Для магазинов без собственной фильтрации подойдёт Cloudflare: правила WAF для известных эксплойтов развёрнуты для всех тарифов, включая бесплатный, и обновляются по мере появления новых методов. Защита работает только при условии, что исходный сервер не принимает соединения напрямую, поэтому межсетевой экран ограничивают диапазонами адресов Cloudflare. Перевод домена на серверы имён Cloudflare занимает часы, начинать нужно заранее.
Если сервер можно вывести из работы на сутки, это наиболее надёжный вариант. Остановить PHP-FPM и показывать статическую страницу обслуживания: штатные режимы обслуживания в Magento и WordPress не помогают, поскольку PHP разбирает запрос раньше, чем приложение проверит флаг. В качестве компромисса магазин переводят в режим только для чтения, отклоняя все методы, кроме GET и HEAD: каталог остаётся доступным, вход и оформление заказа не работают. 21 октября так поступили Tweakers, палата представителей Нидерландов, национальный центр кибербезопасности Нидерландов и Security.NL, позднее - DigiD и MijnOverheid.
В php.ini или в отдельном файле в conf.d отключают session.upload_progress.enabled и включают session.use_strict_mode. Для PHP-FPM значения задают в конфигурации каждого пула через php_admin_flag, затем перезагружают рабочие процессы. Обе настройки безопасны для обычного магазина: отключение прогресса загрузки затрагивает только встроенные индикаторы PHP, которыми Magento, Shopware и WooCommerce не пользуются. Для сессий в Redis или базе данных строгий режим не даёт эффекта, поскольку обработчик сессий PHP не выполняет нужную проверку идентификатора.
Версии исправления и неподдерживаемые ветки
Вместе с релизом выходят сборки 8.5.12, 8.4.27, 8.3.36 и 8.2.35. Серверам на PHP 8.1 и старше официального исправления не будет: проект поддерживает ветки 8.2 и новее. Для них запрашивают backport (перенос исправления в старую ветку) у поставщика операционной системы или переходят на поддерживаемую версию.
Серверам на RHEL-совместимых системах, где PHP установлен из репозитория Remi, исправление 21 октября недоступно: PHP Foundation сообщила, что волонтёрский репозиторий обновления в этот день не выпустит. Им стоит перейти на пакеты дистрибутива или собрать PHP из исходного кода заранее. После установки пакетов перезапускают PHP-FPM и Apache с модулем PHP, а контейнеры пересобирают из исправленных базовых образов, поскольку перезапуск не убирает уязвимый интерпретатор из образа.
Проверка на компрометацию
После обновления ищут веб-оболочки (webshell, скрипт для удалённого управления сервером) и новые файлы в корне сайта, недавно созданных администраторов, изменения в файлах PHP и необычные исходящие соединения. Глубина проверки - не менее чем с июня 2026 года. Признак эксплуатации - порождение процессом веб-сервера оболочек, интерпретаторов или утилит загрузки.
Значимость этих уязвимостей определяется местом компонента: исправление одного интерпретатора закрывает всю инфраструктуру, но неподдерживаемые ветки остаются без патча, а временные меры снижают поверхность атаки, не устраняя её.
Ссылки
- https://patchstack.com/articles/php-major-vulnerability-alert-10-2026/
- https://www.php.net/archive/2026.php#2026-10-20-1
- https://blog.virustotal.com/2026/10/sizing-php-exposure-window-for-cve-2026.html
- https://www.cert.hr/upozorenje-kriticne-ranjivosti-u-php-u-ceka-se-nadogradnja/
- https://www.ncsc.gov.uk/news/critical-security-issue-affecting-php
- https://research.jfrog.com/post/php2shell-all-you-need-to-know-about-cve-2026-109618-and-cve-2026-109619/
- https://www.sk-cert.sk/sk/17345-2/index.html
- https://nsm.no/fagomrader/digital-sikkerhet/digital-hendelseshandtering/varsler-fra-nsm/to-kritiske-sarbarheter-i-php
- https://blog.qualys.com/vulnerabilities-threat-research/2026/10/20/php-announces-critical-security-release-for-two-vulnerabilities
- https://www.huntress.com/blog/php2shell-leaked-critical-php-vulnerabilities