Проверка PHP2Shell
Узнайте, уязвима ли версия PHP на сайте к CVE-2026-109618 и CVE-2026-109619 — удаленному выполнению кода одним запросом, до запуска приложения.
Проверка пассивная: один обычный запрос к главной странице, как из браузера. Проверяйте свои сайты или с разрешения владельца. Что можно и чего нельзя
Хотите дайджест раз в неделю?
Оставьте email — раз в неделю письмо с тем, что мы опубликовали. Перепроверку по этому инструменту пока не делаем.
Отписаться — одним кликом из любого письма. Никому не передаем адрес. Подписываясь, соглашаетесь с политикой конфиденциальности.
Что такое PHP2Shell и где исправлено
PHP2Shell — две критические уязвимости PHP (CVSS 9.2), раскрытые 21 октября 2026 года. Атакующему достаточно одного запроса без авторизации: ошибка срабатывает при разборе запроса, до кода сайта. Удаленное выполнение кода подтверждено для Apache с mod_php; PHP-FPM, CGI, FrankenPHP и LiteSpeed, по оценке разработчиков PHP, тоже уязвимы. Попытки эксплуатации зафиксированы еще до раскрытия.
| Ветка | Исправлено в |
|---|---|
| 8.5 | 8.5.12 |
| 8.4 | 8.4.27 |
| 8.3 | 8.3.36 |
| 8.2 | 8.2.35 |
| 8.1 и старше | официального релиза нет — обновиться на поддерживаемую ветку или взять пакет дистрибутива |
WAF снижает риск известных вариантов атаки, но не заменяет обновление. Обновление кода сайта или плагинов уязвимость не закрывает — нужен новый PHP.
Как проверить у себя на сервере
Снаружи версия PHP видна только тем сайтам, которые сами ее сообщают (заголовки X-Powered-By или Server). Если проверка ответила «версия скрыта», это не значит «защищено» — проверьте на сервере:
php -v
php -r 'echo PHP_VERSION, " ", PHP_SAPI, PHP_EOL;'
# Debian / Ubuntu: пакет дистрибутива может содержать исправление под старым номером версии
apt changelog php8.2 | grep -m3 -i -E 'CVE-2026-10961[89]'
# RHEL / Alma / Rocky
rpm -q --changelog php | grep -m3 -i -E 'CVE-2026-10961[89]'
# Docker
docker run --rm php:8.4-apache php -v
Как закрыть уязвимость и ничего не сломать
Уязвим сам интерпретатор PHP, поэтому обновление CMS, плагинов или кода сайта не помогает. Порядок действий:
-
Сделайте резервную копию и оцените обновление
Обновление внутри своей ветки (например, 8.3.30 → 8.3.36) — исправительный релиз без изменений в языке: его ставят сразу, сохранив копию файлов сайта и базы. Переход на другую ветку (с 8.1 на 8.3 и выше) может сломать старый код — сначала проверьте сайт на тестовой копии.
-
Обновите PHP
Выберите способ по тому, как у вас установлен PHP, и подставьте свою ветку вместо 8.3. Ключ --only-upgrade обновляет только уже установленные пакеты и ничего не добавляет. Если в репозитории дистрибутива исправленной версии еще нет, проверьте changelog пакета (исправление могли перенести без смены номера) или возьмите PHP из репозитория ondrej/sury.
# Debian / Ubuntu: какие пакеты PHP ждут обновления sudo apt update apt list --upgradable 2>/dev/null | grep php # добавьте свои: libapache2-mod-php8.3, php8.3-mysql и другие модули sudo apt install --only-upgrade php8.3-common php8.3-cli php8.3-fpm # RHEL / AlmaLinux / Rocky Linux: какие пакеты PHP ждут обновления dnf check-update 'php*' sudo dnf upgrade php-common php-cli php-fpm # Docker: pull — для готовых образов (image:), build --pull — для своих Dockerfile; закрепленный тег вроде php:8.3.30-fpm замените на исправленный docker compose pull docker compose build --pull docker compose up -dВиртуальный хостинг или панель (ISPmanager, cPanel, Plesk): выберите в настройках сайта исправленную версию PHP. Если ее нет в списке — напишите в поддержку: на таком тарифе PHP обновляет хостер.
-
Перезапустите PHP
Пока работают старые процессы, в памяти остается уязвимый код. Перед перезапуском проверьте конфигурацию — команды ниже не перезапустят службу, если в ней ошибка. Перезапуск занимает секунды, но запросы в этот момент могут получить ошибку — делайте его в часы низкой нагрузки. Перезапустите и другие долгоживущие процессы на PHP: воркеры очередей, демоны под supervisor, RoadRunner или Swoole. В Docker после up -d контейнеры уже новые.
# nginx или Apache + PHP-FPM: достаточно перезапустить PHP-FPM (на RHEL служба называется php-fpm) sudo php-fpm8.3 -t && sudo systemctl restart php8.3-fpm # Apache с mod_php: перезапустить Apache (на RHEL — httpd) sudo apachectl configtest && sudo systemctl restart apache2 -
Проверьте результат
На сервере — версию того бинарника, который обслуживает сайт (php-fpm8.3 -v, а не только php -v), или changelog пакета (команды выше). Снаружи — повторите проверку на этой странице.
-
Если сайт был уязвим — поищите следы взлома
По данным Help Net Security, ловушки Amazon MadPot фиксировали попытки эксплуатации с 17 октября 2026 года. Посмотрите, не появились ли в каталоге сайта новые или измененные PHP-файлы, которых вы не выкладывали. Команда только читает список файлов и ничего не меняет. Пустой результат не доказывает, что взлома не было: дату изменения файла можно подделать.
# подставьте каталог своего сайта find /var/www \( -name '*.php' -o -name '*.phtml' -o -name '*.phar' \) -newermt '2026-10-17' -lsНашли незнакомые файлы — не удаляйте их сразу: сохраните копии и журналы веб-сервера, смените пароли и ключи доступа к серверу и обратитесь к специалисту по разбору инцидентов.
Если обновиться сегодня нельзя
Включите правила WAF против PHP2Shell, если они есть у вашего провайдера, и назначьте обновление на ближайшие дни. WAF снижает риск известных вариантов атаки, но уязвимость не закрывает. Скрыть версию из заголовков (expose_php = Off) полезно, но это тоже не защита.
Проверка законная — если сайт ваш
Инструмент делает один обычный GET-запрос к главной странице (проходит не больше трех редиректов) и читает только заголовки, которые сайт отдает любому посетителю. Атак, проверочных эксплойтов, подбора и нагрузки нет — это то же, что открыть сайт в браузере. Сайт от проверки не меняется и не ломается.
- Проверяйте свои сайты или сайты, владелец которых разрешил проверку.
- Не запускайте публичные эксплойты, чтобы «убедиться»: на рабочем сайте это может его уронить, а на чужом без разрешения это уже неправомерный доступ к компьютерной информации (ст. 272 УК РФ). Создание, использование и распространение вредоносных программ запрещает ст. 273 УК РФ. Похожие нормы есть и в других странах.
- Увидели уязвимую версию на чужом сайте — сообщите владельцу через контакты сайта или файл /.well-known/security.txt и не проверяйте дальше.
Это пояснение, а не юридическая консультация.