
Только для чтения проверщик пакетов PHP2Shell для Debian 12/13 (CVE-2026-109618, CVE-2026-109619).
Аудит PHP-пакетов только для чтения для Debian 12 (bookworm) и Debian 13 (trixie). Проверяет версии пакетов на соответствие опубликованным исправлениям для CVE-2026-109618 и CVE-2026-109619, обычно называемых PHP2Shell.
Он составляет инвентаризацию основных пакетов PHP по установленным веткам, включая PHP-FPM,
CLI, CGI и Apache mod_php, вместо того чтобы полагаться на команду php -v по умолчанию.
Он также сообщает о кандидатах APT, удержаниях пакетов и распространённых путях выполнения вне
оцениваемых пакетов.
Это средство проверки версий пакетов, а не эксплойт уязвимости и не гарантия безопасности сервера. Оно не устанавливает пакеты, не изменяет конфигурацию, не обновляет индексы APT, не перезапускает службы, не выполняет бинарные файлы PHP и не делает сетевых запросов.
Требования: Debian 12 или 13, Python 3.9+ и стандартные инструменты dpkg/APT.
Сторонних зависимостей Python нет. Для проверки не требуются права root;
недоступные пути сканирования отмечаются как неполные.
git clone https://github.com/toxy4ny/php2shell-checker.git
cd php2shell-checker
# Optional, separate operation: refresh available package versions.
sudo apt update
python3 check-php2shell.py
Зеркало на GitHub: https://github.com/toxy4ny/php2shell-checker
Вы также можете скачать только check-php2shell.py, изучить его и запустить локально.
Чтобы указать пользовательский каталог установки:
python3 check-php2shell.py --scan-root /www/server/php --scan-root /srv/php
Сканирование по умолчанию охватывает /usr/bin, /usr/sbin, /usr/lib/cgi-bin,
/usr/lib/apache2/modules, /usr/local и /opt. Оно распознаёт типичные имена файлов PHP,
PHP-FPM, CGI, LiteSpeed PHP, FrankenPHP и модулей Apache. Символические ссылки на каталоги
не обходятся; передавайте их целевые каталоги явно.
| Статус | Значение |
|---|---|
FIXED | Метаданные пакета соответствуют известному порогу исправленного выпуска. |
UPDATE | Распознаваемая версия пакета Debian ниже её исправленного порога. |
UNKNOWN | Устранение уязвимости невозможно проверить автоматически. Обратитесь к поставщику пакета. |
Более старые сторонние пакеты не объявляются уязвимыми автоматически: их
поставщик мог перенести исправление (backport). Они остаются в статусе UNKNOWN, пока не будет установлен
поддерживаемый исправленный выпуск или пока перенос исправления не будет проверен независимо. Один только epoch или крупная
ревизия упаковки никогда не считается исправлением в upstream. Именование версий не является
доказательством подлинности репозитория или целостности пакета.
Пример вывода (иллюстративный, не результат сканирования вашего хоста):
[UPDATE] php8.2-fpm installed=8.2.34-1~deb12u1
Debian package version below 8.2.35-1~deb12u1; source=php8.2 (8.2.34-1~deb12u1)
Candidate: 8.2.35-1~deb12u1 [FIXED] — Debian package version >= 8.2.35-1~deb12u1
Если APT предлагает более новый исправленный кандидат, отчёт выводит команду симуляции и команду обновления для подходящих пакетов. Ни одна из них не выполняется. Удерживаемые пакеты определяются и исключаются из предлагаемой команды. Зависимости и удержания всё равно могут повлиять на полную транзакцию: проверьте симуляцию перед продолжением.
Коды выхода:
| Код | Значение |
|---|---|
0 | Все обнаруженные пакеты ядра PHP соответствуют известным исправленным порогам, без дополнительных неизвестных находок в просканированной области. |
1 | Как минимум один пакет требует обновления, без неизвестных находок. |
2 | Неизвестные находки, неполный аудит, пакеты ядра PHP не найдены, неподдерживаемая система или ошибка выполнения. Имеет приоритет над 1. |
Правила проверены 2026-10-22. Они встроены в скрипт и не
обновляются автоматически. Будущая/несопоставленная ветка помечается как UNKNOWN.
| Пакет или ветка | Исправленный порог |
|---|---|
Исходный пакет Debian 12 php8.2 | 8.2.35-1~deb12u1 |
Исходный пакет Debian 13 php8.4 | 8.4.27-1~deb13u1 |
| Upstream PHP 8.2 | 8.2.35 |
| Upstream PHP 8.3 | 8.3.36 |
| Upstream PHP 8.4 | 8.4.27 |
| Upstream PHP 8.5 | 8.5.12 |
Основные источники:
apt update, прежде чем полагаться на предложенный план обновления.FIXED не доказывает, что хост никогда не был скомпрометирован.python3 -m unittest discover -s tests -v
Фикстурные тесты выполняются без Debian. В Debian дополнительные тесты используют настоящий
dpkg --compare-versions для покрытия границ релизов, предрелизов, эпох и
ревизий пакетов. CI запускает тесты и smoke-проверку установленного PHP на обоих
релизах Debian, в GitHub и GitLab.
Для изменений в правилах версий приложите первичный бюллетень производителя и регрессионный тест. Пожалуйста, скрывайте имена хостов и конфиденциальные пути в отчётах об ошибках. Не включайте учётные данные или дампы производственной конфигурации.
MIT. Copyright (c) 2026 PHP2Shell Checker contributors.