| bin | ||
| docs | ||
| examples | ||
| php2shell_patchkit | ||
| tests | ||
| .gitignore | ||
| LICENSE | ||
| Makefile | ||
| pyproject.toml | ||
| README.md | ||
php2shell-patchkit
Boîte à outils d'audit, de plan de correction et de mitigation temporaire pour PHP2Shell :
- CVE-2026-109618 / GHSA-w8hw-w9fx-j79w — RCE par corruption d'état lors
d'un OOM (
longjmp). - CVE-2026-109619 / GHSA-6wmf-4rv5-p3rp — RCE par état global obsolète entre deux requêtes (session upload progress, backtraces de fatal error).
La mise à jour est la seule correction complète. Les mitigations de cet outil sont temporaires et ne remplacent pas une version corrigée : PHP 8.2.35, 8.3.36, 8.4.27 ou 8.5.12 (ou plus récent).
Ce que fait l'outil
| Commande | Rôle |
|---|---|
scan |
Inventorie les runtimes PHP : binaires hôte, pools FPM, mod_php, images/conteneurs Docker, Compose, Dockerfiles, manifestes Kubernetes, arbres source, paquets. |
plan |
Produit un plan par type d'hébergement : mise à jour, backport 8.1, mitigation, revue .htaccess. |
mitigate |
Applique (ou simule) la désactivation de session.upload_progress.enabled, de fatal_error_backtraces et, en option, memory_limit=-1. Sauvegarde et manifeste de rollback. |
verify |
Re-scanne et vérifie les versions et les réglages de mitigation. |
rollback |
Restaure les fichiers depuis le manifeste. |
probe |
Sonde OOM de laboratoire uniquement, opt-in explicite. |
Démarrage rapide
# Audit local (lecture seule)
./bin/php2shell-patchkit scan --root / --docroot /var/www
# Plan lisible ou JSON
./bin/php2shell-patchkit plan --root / --docroot /var/www
./bin/php2shell-patchkit plan --root / --json > plan.json
# Mitigation temporaire : simulation puis application
./bin/php2shell-patchkit mitigate --root / --docroot /var/www
./bin/php2shell-patchkit mitigate --root / --docroot /var/www --apply
# Vérification et rollback
./bin/php2shell-patchkit verify --root / --docroot /var/www
./bin/php2shell-patchkit rollback --backup-dir /var/lib/php2shell-patchkit/backups
./bin/php2shell-patchkit rollback --backup-dir /var/lib/php2shell-patchkit/backups --apply
scan et plan sont en lecture seule. mitigate est en dry-run par défaut.
--apply est obligatoire pour écrire.
Versions
| Branche | Dernière version vulnérable | Première version corrigée |
|---|---|---|
| 8.5 | 8.5.11 | 8.5.12 |
| 8.4 | 8.4.26 | 8.4.27 |
| 8.3 | 8.3.35 | 8.3.36 |
| 8.2 | 8.2.34 | 8.2.35 |
| 8.1 et antérieur | EOL | backport officiel 8.1, migration recommandée |
Le backport officiel 8.1 est la branche
PHP-8.1-CVE-2026-109618-109619, commit
1d7dec178a094e6e75b229ce22754045f8c6070a, basé sur 8.1.34. C'est une
mitigation minimale, pas le correctif complet.
Couverture des hébergements
- Debian/Ubuntu : paquets
php*, dépôt Sury si nécessaire. - RHEL/Rocky/Alma :
dnf upgrade php*, modules Remi si nécessaire. - Alpine :
apk upgrade php*. - Apache mod_php : détection
libphp*.so/php_module, mitigationphp_admin_flag/php_admin_value. - PHP-FPM : pools
pool.d/*.conf, overridesphp_admin_*, mitigation dans le pool. - Docker / Compose : images
php:*, services, Dockerfiles, contextes de build. - Kubernetes : images PHP dans les manifestes.
- Sources :
main/php_version.h, backport 8.1, recompilation. - Hébergement mutualisé : pas de root,
.htaccess, panneau de contrôle ; voirdocs/HOSTING-CASES.md.
Sécurité
- Ne pas exposer les laboratoires sur Internet.
probeenvoie une requête qui peut provoquer un OOM : uniquement sur un laboratoire isolé, avec--allow-probe.memory_limit=-1n'est pas appliqué par défaut. Il supprime la limite PHP et peut provoquer un OOM système ; ne l'utiliser qu'avec une limite mémoire externe (cgroup/conteneur) et après avoir vérifié qu'aucun pool, répertoire ou réglage applicatif ne remet une limite finie.- Ne pas utiliser
RLIMIT_AS/RLIMIT_DATAcomme mitigation.
Validation
Le dépôt de formation associé contient un laboratoire 8.4.26/8.4.27 et un PoC
contrôlé. Voir docs/VALIDATION.md pour les résultats et la procédure de
reproduction.
Licence
MIT. Voir LICENSE.