PHP2Shell: как проверить PHP и найти исправление
PHP2Shell объединяет две критические уязвимости PHP: CVE-2026-109618 и CVE-2026-109619. Ошибки обработки памяти и состояния между запросами могут привести к удалённому выполнению кода. Обновлять нужно сам PHP, даже если приложение и его плагины уже обновлены.
Почему нельзя ограничиться php -v
Дистрибутивы часто переносят исправления в старую версию PHP, сохраняя её основной номер. Это называется бэкпортом. Поэтому сравнение вывода php -v с номером последнего релиза может ошибочно объявить исправленный сервер уязвимым.
Для проверки нужен полный выпуск пакета. На системах с RPM получите список командой:
rpm -qa 'php*'
На Debian и Ubuntu:
dpkg -l 'php*'
Вставьте результат в проверку PHP2Shell от GetPageSpeed. Она учитывает исправления поставщиков пакетов. Разбор вставленного списка выполняется в браузере, без отправки его на сервер.
Где взять исправленный PHP
Для поддерживаемой системы начните с обновлений своего дистрибутива. Если система или ветка PHP уже снята с поддержки, проверьте наличие исправленной сборки:
- PHP2Shell на CentOS 7: исправленные пакеты PHP.
- Исправления PHP2Shell для Ubuntu и Debian, включая старые выпуски.
В инструкциях указаны совместимые версии, команды установки и условия использования пакетов. После обновления перезапустите PHP-FPM или другой процесс, исполняющий PHP: уже работающие процессы продолжают использовать загруженный код. Затем повторно проверьте установленные пакеты.
Поможет ли настройка NGINX
Ограничение размера тела запроса и буферизация могут сократить отдельные пути атаки. Но они не исправляют уязвимости PHP. Подробности и ограничения описаны в разборе мер защиты на стороне NGINX. Основное действие остаётся прежним: установить исправленный PHP.