Audit et procédure de correction PHP2Shell (CVE-2026-109618/109619)
Find a file
2026-11-02 21:43:49 +01:00
bin php2shell-patchkit: audit, plan, mitigation and rollback for CVE-2026-109618/109619 2026-11-02 21:43:49 +01:00
docs php2shell-patchkit: audit, plan, mitigation and rollback for CVE-2026-109618/109619 2026-11-02 21:43:49 +01:00
examples php2shell-patchkit: audit, plan, mitigation and rollback for CVE-2026-109618/109619 2026-11-02 21:43:49 +01:00
php2shell_patchkit php2shell-patchkit: audit, plan, mitigation and rollback for CVE-2026-109618/109619 2026-11-02 21:43:49 +01:00
tests php2shell-patchkit: audit, plan, mitigation and rollback for CVE-2026-109618/109619 2026-11-02 21:43:49 +01:00
.gitignore php2shell-patchkit: audit, plan, mitigation and rollback for CVE-2026-109618/109619 2026-11-02 21:43:49 +01:00
LICENSE php2shell-patchkit: audit, plan, mitigation and rollback for CVE-2026-109618/109619 2026-11-02 21:43:49 +01:00
Makefile php2shell-patchkit: audit, plan, mitigation and rollback for CVE-2026-109618/109619 2026-11-02 21:43:49 +01:00
pyproject.toml php2shell-patchkit: audit, plan, mitigation and rollback for CVE-2026-109618/109619 2026-11-02 21:43:49 +01:00
README.md php2shell-patchkit: audit, plan, mitigation and rollback for CVE-2026-109618/109619 2026-11-02 21:43:49 +01:00

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, mitigation php_admin_flag/php_admin_value.
  • PHP-FPM : pools pool.d/*.conf, overrides php_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 ; voir docs/HOSTING-CASES.md.

Sécurité

  • Ne pas exposer les laboratoires sur Internet.
  • probe envoie une requête qui peut provoquer un OOM : uniquement sur un laboratoire isolé, avec --allow-probe.
  • memory_limit=-1 n'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_DATA comme 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.