ZAP научился замечать PHP2Shell по ответам сервера — без дополнительных запросов
Пассивное правило сверяет версию PHP из заголовков с известными CVE. Разбираемся, что означает предупреждение и когда оно может быть ложным.

22 октября команда ZAP представила пассивное правило для поиска известных уязвимостей PHP, включая PHP2Shell — пару CVE-2026-109618 и CVE-2026-109619, связанных с удалённым выполнением кода без аутентификации. Правило работает с ответами, которые уже прошли через ZAP: новые запросы к приложению ему не нужны.
Проверка читает версию PHP из заголовков вроде X-Powered-By и Server, затем сопоставляет её со списком известных CVE. Для одной комбинации сайта, технологии и версии создаётся предупреждение с перечнем подходящих уязвимостей. Неполная версия снижает уверенность результата. По сообщению ZAP, исправления PHP2Shell выпущены в PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35; устаревшие ветки самого PHP таких обновлений не получают. Список для правила формируется из официальных security advisories проекта php-src.
Как читать предупреждение

Срабатывание означает, что сервер сообщил о потенциально уязвимой версии. В некоторых дистрибутивах исправление переносят в старый пакет, сохраняя основной номер PHP. Поэтому до заведения подтверждённого бага нужно сопоставить ответ сервера с версией установленного пакета и бюллетенем дистрибутива. Если заголовок вообще не раскрывает версию, эта проверка не сможет определить уязвимость по нему.
Для отчёта сохраните конкретный ответ и попросите владельца окружения подтвердить установленные исправления. Когда ложное срабатывание доказано, фильтр стоит привязать к URL, типу предупреждения и обнаруженной версии. Тогда смена версии снова попадёт в поле зрения сканера. Простое скрытие заголовка уменьшит объём раскрываемой информации, но состояние установленного PHP и необходимость обновления придётся проверять отдельно.


