
Vérificateur en lecture seule des paquets PHP2Shell pour Debian 12/13 (CVE-2026-109618, CVE-2026-109619).
Un audit en lecture seule des paquets PHP pour Debian 12 (bookworm) et Debian 13 (trixie). Compare les versions des paquets aux correctifs publiés pour CVE-2026-109618 et CVE-2026-109619, communément appelés PHP2Shell.
Il inventorie les paquets PHP principaux sur l'ensemble des branches installées, y compris PHP-FPM,
CLI, CGI et Apache mod_php, au lieu de se fier à la commande par défaut php -v.
Il signale également les candidats APT, les paquets retenus (holds) et les chemins d'exécution courants en dehors
des paquets évalués.
Il s'agit d'un vérificateur de versions de paquets, et non d'un exploit de vulnérabilité ni d'un certificat attestant qu'un serveur est sûr. Il n'installe pas de paquets, ne modifie pas la configuration, n'actualise pas les index APT, ne redémarre pas les services, n'exécute pas de binaires PHP et n'effectue aucune requête réseau.
Prérequis : Debian 12 ou 13, Python 3.9+ et les outils standard dpkg/APT.
Il n'y a aucune dépendance Python tierce. Les droits root ne sont pas requis pour le vérificateur ;
les chemins de scan inaccessibles sont signalés comme incomplets.
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
Miroir GitHub : https://github.com/toxy4ny/php2shell-checker
Vous pouvez également télécharger uniquement check-php2shell.py, l'inspecter et l'exécuter localement.
Pour inclure un répertoire d'installation personnalisé :
python3 check-php2shell.py --scan-root /www/server/php --scan-root /srv/php
Le scan par défaut couvre /usr/bin, /usr/sbin, /usr/lib/cgi-bin,
/usr/lib/apache2/modules, /usr/local et /opt. Il reconnaît les noms de fichiers courants de PHP,
PHP-FPM, CGI, LiteSpeed PHP, FrankenPHP et des modules Apache. Les liens symboliques de répertoire
ne sont pas parcourus ; passez explicitement leurs répertoires cibles.
| Statut | Signification |
|---|---|
FIXED | Les métadonnées du paquet atteignent un seuil de version corrigée connu. |
UPDATE | Une version de paquet Debian reconnaissable est inférieure à son seuil corrigé. |
UNKNOWN | La remédiation ne peut pas être vérifiée automatiquement. Consultez le fournisseur du paquet. |
Les paquets tiers plus anciens ne sont pas automatiquement déclarés vulnérables : leur
fournisseur a peut-être rétroporté le correctif. Ils restent UNKNOWN jusqu'à ce qu'une version corrigée
prise en charge soit installée ou que le rétroportage soit vérifié indépendamment. Une epoch ou une révision
d'empaquetage importante ne constitue jamais à elle seule un correctif amont. Le nommage des versions ne
prouve ni l'authenticité du dépôt ni l'intégrité du paquet.
Exemple de sortie (illustratif, il ne s'agit pas d'un scan de votre hôte) :
[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 propose un candidat corrigé plus récent, le rapport affiche une commande de simulation et une commande de mise à jour pour les paquets éligibles. Aucune des deux n'est exécutée. Les paquets retenus (held) sont identifiés et exclus de la commande suggérée. Les dépendances et les blocages (holds) peuvent toujours affecter la transaction complète : examinez la simulation avant de poursuivre.
Codes de sortie :
| Code | Signification |
|---|---|
0 | Tous les paquets cœur PHP découverts atteignent les seuils corrigés connus, sans autre constat inconnu dans le périmètre analysé. |
1 | Au moins un paquet nécessite une mise à jour, sans constat inconnu. |
2 | Constats inconnus, audit incomplet, aucun paquet cœur PHP trouvé, système non pris en charge ou erreur d'exécution. Prioritaire sur 1. |
Règles vérifiées le 2026-10-22. Elles sont intégrées au script et ne sont pas rafraîchies automatiquement. Une branche future/non mappée est signalée comme UNKNOWN.
| Paquet ou branche | Seuil corrigé |
|---|---|
Paquet source Debian 12 php8.2 | 8.2.35-1~deb12u1 |
Paquet source Debian 13 php8.4 | 8.4.27-1~deb13u1 |
| PHP 8.2 amont | 8.2.35 |
| PHP 8.3 amont | 8.3.36 |
| PHP 8.4 amont | 8.4.27 |
| PHP 8.5 amont | 8.5.12 |
Références principales :
apt update avant de vous fier au plan de mise à niveau suggéré.FIXED n'établit pas qu'un hôte n'a jamais été compromis.python3 -m unittest discover -s tests -v
Les tests de fixtures s'exécutent sans Debian. Sur Debian, des tests supplémentaires utilisent le véritable dpkg --compare-versions pour couvrir les frontières de version, les préversions, les epochs et les révisions de packaging. La CI exécute les tests et une vérification de fumée sur PHP installé sur les deux versions de Debian, sur GitHub et GitLab.
Pour les modifications des règles de version, incluez un avis de fournisseur principal et un test de régression. Veuillez masquer les noms d'hôtes et les chemins sensibles dans les rapports de bogues. N'incluez pas d'identifiants ni de vidages de configuration de production.
MIT. Copyright (c) 2026 PHP2Shell Checker contributors.