Уязвимости PHP: что такое PHP2Shell и как защитить сайт
Читать 12 мин. Автор: Александр Третьяк
Коротко: PHP2Shell — две критические уязвимости PHP (CVE-2026-109618 и CVE-2026-109619, 9,2 по CVSS 4.0): они позволяют выполнить код на сервере без пароля. Исправления вышли в PHP 8.2.35, 8.3.36, 8.4.27 и 8.5.12. Что делать: узнать версию PHP, обновить её и проверить журналы с 17 октября 2026 года.
Данные о PHP2Shell актуальны на 27 октября 2026 года, расхождения источников указаны в тексте.
Что такое PHP2Shell и чем он опасен для бизнеса?
PHP2Shell — общее название двух уязвимостей в самом языке PHP: CVE-2026-109618 и CVE-2026-109619. Обе получили 9,2 из 10 по шкале CVSS 4.0 и уровень «критическая». По описанию разработчиков PHP, атака идёт по сети, не требует пароля и участия пользователя, а в случае успеха код выполняется на сервере с правами процесса веб-сервера.
Проблема не в вашем сайте и не в CMS, а в «движке», на котором они работают. Поэтому аккуратно написанный сайт сам по себе не защищает. По данным «Лаборатории Касперского», на PHP работает почти 70% веб-ресурсов, включая WordPress, Drupal и Joomla.
Для бизнеса это три риска: утечка данных клиентов и заявок, подмена содержимого сайта и простой, который бьёт по выручке, если сайт принимает заказы или платежи.
Когда начались атаки и что известно о масштабе?
Бюллетени безопасности PHP опубликованы 21 октября 2026 года, а в журнале изменений php.net исправленные версии датированы 22 октября. Но атаки начались раньше: по данным Amazon Threat Intelligence, которые приводит SecurityLab, первые попытки эксплуатации зафиксированы 17 октября — за четыре дня до исправлений. Это первая известная дата в их данных, не обязательно начало атак.
По данным Cloudflare, на которые ссылается «Лаборатория Касперского», к 22 октября счёт попыток взлома шёл на миллионы. Ряд организаций в разных странах временно отключал сайты до установки обновлений.
Каких версий PHP это касается?
Согласно бюллетеням php-src на GitHub, уязвимы версии ниже 8.2.35, 8.3.36, 8.4.27 и 8.5.12. Для веток 8.1 и старше проект PHP исправлений не выпускает. «Лаборатория Касперского» сообщает, что для PHP 7.4, 8.0 и 8.1 разработчики подготовили минимальные бэкпорты исходного кода для самостоятельной сборки.
Какие версии PHP закрывают PHP2Shell
| Ветка PHP | Исправленная версия | Поддержка безопасности до (php.net) | Что делать |
|---|---|---|---|
| 8.5 | 8.5.12 | 31 декабря 2029 | Обновить до 8.5.12 или выше |
| 8.4 | 8.4.27 | 31 декабря 2028 | Обновить до 8.4.27 или выше |
| 8.3 | 8.3.36 | 31 декабря 2027 | Обновить до 8.3.36 или выше |
| 8.2 | 8.2.35 | 31 декабря 2026 | Обновить до 8.2.35 и запланировать переход на 8.3+ |
| 8.1 и старше | официального исправления нет | не поддерживаются | Взять исправленный пакет у поставщика ОС или хостинга, собрать из бэкпортов либо перейти на поддерживаемую ветку |
По данным разработчиков PHP в пересказе «Лаборатории Касперского», под угрозой все непропатченные установки, обрабатывающие веб-запросы: PHP-FPM, Apache с mod_php, php-cgi, FrankenPHP и LiteSpeed. Бюллетени уточняют: полноценный взлом без пароля подтверждён на связке с Apache mod_php; для PHP-FPM, FrankenPHP и LiteSpeed анализ кода указывает на вероятную уязвимость, но для CVE-2026-109618 полного эксплойта под FPM пока не продемонстрировано. Для CVE-2026-109619 взлом через жизненный цикл сессий подтверждён и на mod_php, и на FPM.
Как проверить, затронут ли ваш сайт?
Начните с одного вопроса: «Какая версия PHP работает на нашем сервере?» Ответ знает ваш хостинг-провайдер или администратор. Если версия ниже исправленной для своей ветки — сайт уязвим. Если PHP установлен из пакетов дистрибутива, номер версии может остаться прежним и после патча, поэтому сверяйтесь с журналом изменений пакета.
Если сервером управляет хостинг, «Лаборатория Касперского» советует попросить провайдера применить обновление. Начинать советуют с систем, доступных из интернета, включая старые сайты.
Как защитить сайт: пошаговый план
- Обновите PHP до 8.5.12, 8.4.27, 8.3.36 или 8.2.35 (или выше). По бюллетеням PHP, обновление — единственная полная мера защиты.
- Перезапустите PHP-FPM или веб-сервер, чтобы процессы загрузили новый код, и проверьте версию командой php -v.
- Проверьте журналы с 17 октября 2026 года, а при наличии — с 17 сентября. Тревожные признаки: процесс веб-сервера запускает командные оболочки,
curlилиwget; необычные POST-запросы сmultipart/form-data; ответы HTTP 500 с сообщениями PHP о нехватке памяти. Один такой запрос ещё не атака, но серия — повод для проверки. - Если обновиться сразу нельзя, примените временные меры из бюллетеней: отключите
session.upload_progress(параметрsession.upload_progress.enabled=0), ограничьте размер входящих запросов, а если сайт не использует multipart-формы — блокируйте такие запросы до PHP. Это снижает риск, но полностью не закрывает уязвимость. «Лаборатория Касперского» также советует временно ограничить доступ к уязвимому сервису из сети. - Подключите WAF — межсетевой экран веб-приложений. Он блокирует часть вредоносных запросов, пока администраторы ставят обновления.
- Проверьте резервные копии: свежая копия, которую вы умеете восстановить, — страховка на случай взлома.
Чек-лист: что сделать с сайтом на PHP
| Шаг | Зачем | Как проверить результат |
|---|---|---|
| Узнать версию PHP | Понять, затронут ли сайт | Версия названа хостингом или администратором письменно |
| Обновить PHP до исправленной версии | Закрыть обе уязвимости: полностью это делает только обновление | После перезапуска команда php -v показывает версию не ниже исправленной |
| Перезапустить PHP-FPM или веб-сервер | Рабочие процессы загрузят новый код | Версия проверена после перезапуска; для пакетов дистрибутива — по журналу изменений пакета |
| Просмотреть журналы с 17 октября 2026 года | Найти следы атаки, которая могла начаться до обновления | Нет запуска командных оболочек, curl и wget процессом веб-сервера; нет серий странных POST-запросов |
| Включить мониторинг и резервные копии | Быстро заметить сбой и уметь восстановиться | Свежая копия проверена на восстановление |
Достаточно ли просто обновить PHP?
Не всегда. Патч закрывает дыру, но не выгоняет того, кто уже проник. Эксперты Axxtel на SecurityLab напоминают: после взлома атакующий может закрепиться на сервере и использовать обычный HTTPS и права веб-сервера, часть его запросов будет выглядеть легитимно, а сайт продолжит работать. Поэтому после обновления важно искать неизвестные файлы, подозрительные процессы и необычные соединения.
Какие ещё уязвимости PHP стоит знать владельцу сайта?
PHP2Shell — не единственная угроза. Как отмечает Хабр, сообщество в основном обсуждает классические проблемы: SQL-инъекции, XSS, CSRF и подключение посторонних файлов (LFI/RFI). Там же разобраны менее известные:
- Небезопасная десериализация. Руководство PHP прямо предупреждает: не передавайте в
unserialize()данные от пользователя, иначе возможно выполнение кода. Вместо этого используйте формат JSON. - Подмена путей через php://filter. Если сайт принимает имя файла от пользователя без проверки, злоумышленник может прочитать исходный код и конфиги. Защита — проверять путь и отключать allow_url_include.
Кто должен следить за безопасностью сайта: вы, штатный администратор или техподдержка?
У владельца бизнеса обычно три варианта. Сравним их по задачам, которые возникают при выходе такой уязвимости.
Кто закрывает уязвимость: владелец, штатный администратор или техподдержка
| Что нужно | Владелец сам | Штатный администратор | Техподдержка агентства |
|---|---|---|---|
| Узнать о новой уязвимости | Только если следит за новостями безопасности | Входит в его задачи | Входит в сопровождение: проверка состояния CMS, модулей и PHP |
| Обновить PHP и проверить совместимость | Нужны доступ к серверу и технические знания | Делает, если есть доступ к серверу | Обновление с проверкой совместимости и контролем результата |
| Проверить журналы на следы взлома | Как правило, не по силам без специалиста | Делает, если умеет читать журналы безопасности | Диагностика после получения доступов |
| Резервные копии и восстановление | Зависит от тарифа хостинга | Настраивает и проверяет | Настройка копирования и восстановление сайта в базовом тарифе |
| Стоимость | Время владельца и риск | Зарплата и налоги | Тарифы «Приоритета» от 34 800 ₽ в месяц или 3 500 ₽ за час без абонентской платы; без хостинга и лицензий |
Подробнее о том, что обычно входит в сопровождение, мы писали в статье «Что входит в поддержку сайта».
Как «Приоритет» помогает владельцам сайтов с такими ситуациями?
Если у вас нет своего администратора, вы можете передать сайт на техническую поддержку. Что входит в сопровождение по данным нашей страницы услуги:
- проверка состояния CMS, модулей, PHP, резервных копий и критичных настроек окружения;
- закрытие уязвимостей, удаление вредоносного кода и помощь в восстановлении сайта после взлома;
- обновления с проверкой совместимости и контролем результата;
- мониторинг работоспособности сайта 24/7, настройка резервного копирования и восстановление сайта, контроль продления домена, хостинга и SSL-сертификата;
- персональный менеджер и прозрачный учёт часов по тарифу.
Тарифы: «Базовый» — 34 800 ₽ в месяц, «Бизнес» — 46 400 ₽ в месяц. Если задачи по сайту появляются время от времени, можно работать без абонентской платы — по часам: каждую задачу оцениваем заранее, час работы стоит 3 500 ₽. Стоимость указана без учёта хостинга, лицензий CMS и платных модулей. Если нужна разовая проверка без абонемента, закажите аудит сайта: в аудит безопасности входит проверка версий CMS, модулей и плагинов, HTTPS, доступов к админке и хостингу, резервного копирования, форм и загрузки файлов. Стоимость проверки безопасности считаем после первичной оценки сайта.
Мы работаем с проектами на 1С-Битрикс и других CMS; если сайт устарел и его проще пересобрать, обсудим разработку нового сайта, в том числе на готовом решении 1С-Битрикс. Важное ограничение: исправить проблему без доступа к проекту и диагностики мы не обещаем — сначала смотрим, что происходит на вашем сайте.
Хотите разобраться, в каком состоянии ваш сайт? Заполните бриф на техподдержку или позвоните нам: +7 (3452) 29-04-14 (пн–пт, 9:00–18:00).
Источники
- GitHub php/php-src: бюллетень GHSA-w8hw-w9fx-j79w (CVE-2026-109618), RCE via OOM corruption
- GitHub php/php-src: бюллетень GHSA-6wmf-4rv5-p3rp (CVE-2026-109619), RCE via stale global state
- PHP.net: журнал изменений PHP 8
- PHP.net: поддерживаемые версии
- PHP.net: руководство, функция unserialize()
- Блог Касперского: PHP2Shell — как защитить сервер
- Kaspersky: В PHP нашли критические уязвимости (обновлено 23.10.2026)
- SecurityLab, Axxtel: PHP2Shell — пять дней спустя (26.10.2026)
- Хабр, «Программный Продукт»: Малоизвестные уязвимости PHP (06.11.2025)