
Comprobador de paquetes PHP2Shell de solo lectura para Debian 12/13 (CVE-2026-109618, CVE-2026-109619).
Una auditoría de solo lectura de paquetes PHP para Debian 12 (bookworm) y Debian 13 (trixie). Comprueba las versiones de los paquetes frente a las correcciones publicadas para CVE-2026-109618 y CVE-2026-109619, comúnmente conocidas como PHP2Shell.
Inventaría los paquetes principales de PHP en todas las ramas instaladas, incluidos PHP-FPM,
CLI, CGI y Apache mod_php, en lugar de basarse en el comando predeterminado php -v.
También informa de los candidatos de APT, las retenciones de paquetes y las rutas de ejecución comunes fuera
de los paquetes evaluados.
Esto es un comprobador de versiones de paquetes, no un exploit de vulnerabilidad ni un certificado de que un servidor sea seguro. No instala paquetes, no cambia la configuración, no actualiza los índices de APT, no reinicia servicios, no ejecuta binarios PHP ni realiza solicitudes de red.
Requisitos: Debian 12 o 13, Python 3.9+ y las herramientas estándar dpkg/APT.
No hay dependencias de Python de terceros. No se requiere root para el comprobador;
las rutas de escaneo inaccesibles se informan como incompletas.
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
Mirror de GitHub: https://github.com/toxy4ny/php2shell-checker
También puedes descargar solo check-php2shell.py, inspeccionarlo y ejecutarlo localmente.
Para incluir un directorio de instalación personalizado:
python3 check-php2shell.py --scan-root /www/server/php --scan-root /srv/php
El escaneo predeterminado cubre /usr/bin, /usr/sbin, /usr/lib/cgi-bin,
/usr/lib/apache2/modules, /usr/local y /opt. Reconoce nombres de archivo comunes de PHP,
PHP-FPM, CGI, LiteSpeed PHP, FrankenPHP y módulos de Apache. No se recorren los enlaces simbólicos de directorios; pasa sus directorios de destino explícitamente.
| Estado | Significado |
|---|---|
FIXED | Los metadatos del paquete cumplen un umbral de versión parcheada conocido. |
UPDATE | Una versión reconocible de paquete Debian está por debajo de su umbral corregido. |
UNKNOWN | La remediación no se puede verificar automáticamente. Consulta al proveedor del paquete. |
Los paquetes de terceros más antiguos no se declaran automáticamente vulnerables: su
proveedor puede haber aplicado el parche mediante backport. Permanecen como UNKNOWN hasta que se instale una versión corregida compatible o el backport se verifique de forma independiente. Un epoch o una gran
revisión de empaquetado por sí solos nunca cuentan como una corrección upstream. El nombre de la versión no es
prueba de autenticidad del repositorio ni de integridad del paquete.
Salida de ejemplo (ilustrativa, no es un escaneo de tu host):
[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
Si APT ofrece un candidato corregido más reciente, el informe imprime un comando de simulación y un comando de actualización para los paquetes elegibles. Ninguno de los dos se ejecuta. Los paquetes retenidos se identifican y se excluyen del comando sugerido. Las dependencias y las retenciones aún pueden afectar la transacción completa: revise la simulación antes de continuar.
Códigos de salida:
| Código | Significado |
|---|---|
0 | Todos los paquetes del núcleo de PHP descubiertos cumplen los umbrales corregidos conocidos, sin hallazgos desconocidos adicionales en el ámbito analizado. |
1 | Al menos un paquete necesita una actualización, sin hallazgos desconocidos. |
2 | Hallazgos desconocidos, auditoría incompleta, no se encontraron paquetes del núcleo de PHP, sistema no compatible o error de ejecución. Tiene prioridad sobre 1. |
Reglas verificadas el 2026-10-22. Están integradas en el script y no se actualizan automáticamente. Una rama futura/no mapeada se informa como UNKNOWN.
| Paquete o rama | Umbral corregido |
|---|---|
Paquete fuente php8.2 de Debian 12 | 8.2.35-1~deb12u1 |
Paquete fuente php8.4 de Debian 13 | 8.4.27-1~deb13u1 |
| PHP 8.2 upstream | 8.2.35 |
| PHP 8.3 upstream | 8.3.36 |
| PHP 8.4 upstream | 8.4.27 |
| PHP 8.5 upstream | 8.5.12 |
Referencias principales:
apt update antes de confiar en el plan de actualización sugerido.FIXED no establece que un host nunca haya sido comprometido.python3 -m unittest discover -s tests -v
Las pruebas de fixture se ejecutan sin Debian. En Debian, las pruebas adicionales usan dpkg --compare-versions real para cubrir límites de versión, versiones preliminares, épocas y revisiones de empaquetado. CI ejecuta las pruebas y una comprobación rápida de PHP instalado en ambas versiones de Debian, en GitHub y GitLab.
Para cambios en las reglas de versión, incluya un aviso del proveedor principal y una prueba de regresión. Por favor, oculte los nombres de host y las rutas sensibles en los informes de errores. No incluya credenciales ni volcados de configuración de producción.
MIT. Copyright (c) 2026 PHP2Shell Checker contributors.