

Обращение к SEO-специалисту нередко сопровождается тем, что владелец бизнеса хочет невозможного. И причина здесь понятна...


PHP2Shell — название двух критических уязвимостей PHP: CVE-2026-109618 и CVE-2026-109619. При успешной атаке они позволяют постороннему выполнить код на сервере без авторизации. Проблема находится в самом интерпретаторе: обновление CMS или смена пароля администратора не заменяют установку исправлений PHP.
21 октября 2026 года разработчики выпустили экстренные обновления безопасности: PHP 8.2.35, 8.3.36, 8.4.27 и 8.5.12. Это первые исправленные выпуски соответствующих веток. Для пакетов Linux с перенесенными исправлениями нужно проверять бюллетень поставщика и номер сборки: прежний номер базовой версии еще не доказывает наличие уязвимости.
Что делать владельцу сайта:
Выяснить, какая сборка PHP обрабатывает веб-запросы именно его сайта.
Установить исправление из доверенного источника и перезапустить PHP-процессы.
Проверить работу сайта после обновления и изучить признаки возможного взлома.
Установка патча закрывает уязвимость, но сама по себе не устраняет последствия уже состоявшейся атаки. Ниже разберем, как проверить сервер, обновить PHP и убедиться, что исправление действительно действует.
PHP выполняет серверный код сайта: обрабатывает формы, обращается к базе данных, формирует страницы. PHP2Shell затрагивает внутренние механизмы работы с памятью. Поэтому отсутствие ошибок в коде приложения не защищает от этих двух уязвимостей.
CVE-2026-109618 — повреждение памяти при ее нехватке. Если выделение памяти завершается ошибкой в определенный момент обработки запроса, PHP может прервать операцию до завершения инициализации внутренних данных. При последующей очистке интерпретатор обращается к некорректному состоянию. Специально подготовленный запрос позволяет превратить такую ошибку в удаленное выполнение кода.
CVE-2026-109619 — обращение к уже освобожденной памяти. Рабочий процесс PHP может сохранить ссылку на данные завершенного запроса, хотя память под них уже освобождена. При обработке следующего запроса тот же процесс способен использовать устаревшую ссылку. Это ошибка класса use-after-free; при подходящих условиях она также позволяет выполнить посторонний код.
Для владельца сайта главное — возможные последствия. Атакующий получает возможности в пределах прав процесса PHP: например, доступ к файлам приложения и секретам, которые этот процесс вправе читать. Если среди них окажутся реквизиты подключения к базе данных, под угрозой будет и ее содержимое. При этом успешная эксплуатация не означает автоматического получения прав root: масштаб ущерба зависит от настроек сервера и разграничения доступа.
Авторизация в CMS не перекрывает проблему. Разработчики PHP отдельно выделяют Apache с mod_php: для него продемонстрирована атака, запускаемая до выполнения кода приложения. Следовательно, проверка пароля, CAPTCHA и защитный плагин CMS могут еще не участвовать в обработке запроса, когда уязвимый механизм уже сработал. Проверять и исправлять необходимо серверную среду, а не только сам сайт.
Проверять нужно все установки PHP, обслуживающие веб-запросы. В официальном уведомлении перечислены PHP-FPM, Apache с mod_php, php-cgi, FrankenPHP и LiteSpeed. Поэтому связка Nginx + PHP-FPM тоже требует внимания: отсутствие Apache не исключает риск PHP2Shell.
Для поддерживаемых веток ориентиром служат следующие выпуски:
Ветка PHP | Версии до исправления | Первый выпуск с патчем PHP2Shell |
8.2 | Ниже 8.2.35 в ветке 8.2 | 8.2.35 |
8.3 | Ниже 8.3.36 в ветке 8.3 | 8.3.36 |
8.4 | Ниже 8.4.27 в ветке 8.4 | 8.4.27 |
8.5 | Ниже 8.5.12 в ветке 8.5 | 8.5.12 |
Это минимальные исправленные версии соответствующих веток, а не требование установить именно их: более поздняя сборка должна включать эти исправления. Исключение при оценке по номеру — пакеты поставщиков, которые перенесли патч в прежнюю базовую версию. Их статус проверяют по бюллетеню безопасности.
Для PHP 8.1 и более старых веток обычные обновления от команды PHP уже не выпускаются. Разработчики подготовили минимальные исправления исходного кода для PHP 7.4, 8.0 и 8.1, но это не возобновляет поддержку этих веток. Если сайт использует устаревшую среду, необходимо уточнить наличие патча у поставщика сборки и запланировать переход на поддерживаемую ветку.
Инвентаризацию проводите по сайтам и обработчикам, а не только по физическим серверам. На одном VPS основной сайт может работать на PHP 8.3, старый поддомен — на PHP 7.4, а тестовая копия — в отдельном контейнере. Исправление одной установки не обновит остальные.
Проверьте основной домен, поддомены, API, административные интерфейсы и доступные извне тестовые площадки. Для каждого проекта зафиксируйте три вещи: какая сборка PHP выполняет запросы, откуда она установлена и кто отвечает за ее обновление. Этот список поможет не пропустить отдельный пул, контейнер или сайт на другом тарифе хостинга.
Команда php -v не подтверждает безопасность сайта. Она показывает версию запущенной консольной программы PHP. Веб-сервер при этом может передавать запросы другому обработчику — например, отдельному пулу PHP-FPM. На сервере с несколькими версиями эти значения могут различаться.
Начните с панели хостинга: откройте настройки нужного домена и найдите выбранную версию PHP. Затем уточните у провайдера статус исправлений. Вместо общего вопроса «PHP обновлен?» отправьте конкретный запрос:
Подтвердите, пожалуйста, устранены ли CVE-2026-109618 и CVE-2026-109619 в сборке PHP, которая обслуживает мой домен. Укажите версию пакета или сборки и подтвердите перезапуск рабочих процессов после установки исправлений.
Если сервер администрирует ваша команда, нужно сопоставить настройки домена с фактическим обработчиком. Для дополнительной проверки можно временно разместить в каталоге сайта небольшой PHP-файл, предварительно ограничив доступ к нему своим IP средствами веб-сервера:
<?php
header('Content-Type: text/plain; charset=utf-8');
header('Cache-Control: no-store');
echo 'PHP: ', phpversion(), PHP_EOL;
echo 'SAPI: ', php_sapi_name(), PHP_EOL;
Откройте файл через адрес проверяемого сайта. Функция phpversion() вернет версию интерпретатора, выполнившего запрос, а php_sapi_name() — используемый интерфейс, например fpm-fcgi или apache2handler. После проверки удалите файл. Для этой задачи не требуется публиковать полный вывод phpinfo() с подробностями конфигурации.
Полученный номер — только часть проверки. Если поставщик перенес исправления в старую версию, решающим подтверждением будет его бюллетень для конкретного пакета. Если сайт работает на нескольких узлах, проверить нужно каждый: один ответ через балансировщик не характеризует весь кластер.
Результат проверки должен быть однозначным: известна обслуживающая сайт сборка, подтверждено наличие исправлений для обеих CVE и установлено, что именно эту сборку используют работающие процессы. Пока хотя бы один пункт неизвестен, считать устранение риска подтвержденным рано.
Обновлять нужно ту установку PHP, которую вы определили на предыдущем шаге. Универсальная команда здесь не подходит: системный пакет, сборка панели хостинга и PHP внутри контейнера обновляются разными способами.
Перед установкой подготовьте возможность восстановления. Проверьте наличие свежей резервной копии файлов, базы данных и конфигурации сервера. Зафиксируйте текущую версию PHP и список расширений. Если приложение требует конкретных модулей или загрузчика защищенного кода, убедитесь, что они доступны для выбранной сборки.
Для срочного исправления обычно разумнее сначала обновить текущую поддерживаемую ветку. Переход между ветками, например с PHP 7.4 на 8.4, требует отдельной проверки совместимости CMS, модулей и собственного кода.
Порядок установки зависит от окружения:
Где работает PHP | Что необходимо обновить |
Виртуальный хостинг | Сборку провайдера; запросите подтверждение исправления для своего домена |
VPS с системными пакетами | Пакеты PHP и установленных расширений из используемого репозитория |
Сервер с панелью управления | Обработчик PHP средствами панели или по инструкции поставщика |
Контейнер | Образ с PHP; затем пересоздайте контейнер на его основе |
Ручная сборка | Интерпретатор из исправленных исходников с сохранением необходимых параметров сборки |
Не смешивайте способы установки без проверки зависимостей. Например, обновление системного PHP не исправит отдельную сборку, которую панель использует для сайта. Аналогично обновление пакетов на хосте не меняет интерпретатор внутри контейнера.
После установки перезапустите соответствующие службы или пересоздайте контейнеры. Замена файлов на диске и запуск сайта на исправленном коде — разные этапы. Убедитесь, что старые рабочие процессы завершены, а новые используют обновленную сборку.
Затем проверьте пользовательские сценарии: вход в личный кабинет, отправку форм, поиск, загрузку файлов, корзину и оформление заказа, если они есть на сайте. Просмотрите журнал ошибок PHP и ответы сервера: главная страница может открываться, даже когда отдельная функция перестала работать.
Завершайте работы повторной проверкой веб-обработчика и фиксацией результата: какая сборка установлена, когда перезапущены процессы и какие сценарии проверены. Если обновление вызвало сбой, не оставляйте публичный сайт на уязвимой версии после отката: ограничьте доступ на время устранения несовместимости.
Временные ограничения не устраняют PHP2Shell. Их задача — сократить доступность уязвимого обработчика и затруднить отдельные способы эксплуатации, пока готовится обновление.
Если приложение допускает перерыв в работе, временно закройте доступ к нему на уровне веб-сервера, прокси или межсетевого экрана. Для внутреннего сервиса можно оставить подключения только через VPN или с доверенных адресов. Обычная страница «Технические работы», сформированная средствами CMS, не гарантирует изоляцию: запросы по-прежнему могут поступать в PHP.
Если используется WAF, уточните у поставщика наличие правил именно для CVE-2026-109618 и CVE-2026-109619. Проверьте, что трафик действительно проходит через защиту и сервер нельзя обойти прямым обращением к его IP. Это дополнительный барьер, а не подтверждение безопасности установленной сборки.
Для администратора разработчики PHP перечисляют настройки против отдельных путей атаки. В частности, отключение session.upload_progress.enabled в серверной конфигурации с перезапуском всех рабочих процессов блокирует подтвержденные сценарии через механизм отслеживания загрузки. Для PHP 8.5 предусмотрено отключение fatal_error_backtraces. Эти настройки не перекрывают все варианты эксплуатации.
Не переносите рекомендации по памяти без оценки последствий. Параметр memory_limit=-1 снимает лимит памяти PHP; это не универсальное «безопасное значение». Его применение требует отдельного ограничения ресурсов и контроля доступности сервера. Настройку должен выбирать администратор с учетом архитектуры приложения.
Для каждой временной меры зафиксируйте ответственного и срок установки исправления. Критерий завершения работ — запуск исправленной сборки, а не отсутствие новых предупреждений WAF или ошибок в журнале.


Патч устраняет уязвимость, но не последствия уже состоявшейся атаки. После обновления проверьте:
Файлы сайта: неизвестные PHP-скрипты, изменения конфигурации и отличия от доверенной копии.
Доступы: новых администраторов CMS, посторонние SSH-ключи и изменения прав.
Сервер: незнакомые процессы, задания cron и необычные исходящие соединения.
Журналы: сбои PHP и подозрительные запросы, совпадающие по времени с изменениями системы.
Отдельная ошибка или подозрительный запрос не доказывают взлом. Отсутствие записей в журналах тоже не гарантирует, что атаки не было.
При обнаружении признаков компрометации сохраните журналы и копии подозрительных файлов, ограничьте доступ к системе и привлеките специалиста. Заменяйте раскрытые пароли и ключи из доверенной среды после устранения доступа злоумышленника.
Обновления CMS нужны для устранения ее собственных уязвимостей, но PHP2Shell требует исправления интерпретатора PHP. Даже актуальная CMS может работать на уязвимой серверной сборке.
Нет. HTTPS шифрует соединение между клиентом и сервером, но не исправляет ошибки обработки запросов. Специально сформированный запрос может поступить и по защищенному соединению.
Внешняя проверка может дать дополнительный сигнал, но не заменяет проверку установленной сборки. Сканер способен ошибиться, если версия скрыта или поставщик перенес исправление без изменения базового номера. Запускать публичный эксплойт на рабочем сайте для проверки не следует.
Команда PHP публикует исправленные исходники бесплатно. Оплата может потребоваться за работу администратора, услуги хостинга или сопровождение устаревшей сборки сторонним поставщиком.
Название отсылает к возможности перейти от обработки веб-запроса к выполнению постороннего кода на сервере. Оно не означает, что на каждом затронутом сайте уже установлен веб-шелл: наличие уязвимости и подтвержденный взлом — разные состояния.


Обращение к SEO-специалисту нередко сопровождается тем, что владелец бизнеса хочет невозможного. И причина здесь понятна...


Ранее мы уже писали о сниппетах для Яндекс, теперь пришло время рассказать про другую поисковую систему — Google. Он не дает собственных...


Естественные ссылки — это те, которые другие веб-ресурсы дают сайту добровольно, без вашего участия, как подтверждение качества контента..
Мы используем файлы cookie для улучшения работы нашего сайта и предоставлении вам наиболее полезного контента.
Связаться с нами
Как вам удобнее связаться с нами?
Получим ваш запрос и быстро подключимся к решению проблемы
Спасибо за заявку!
Наш менеджер свяжется с вами в ближайшее время.
Успешно!
Чек-лист отправлен на указанный Email-адрес