PHP2Shell est le nom utilisé pour les vulnérabilités PHP critiques CVE-2026-109618 et CVE-2026-109619.. Les administrateurs de serveur doivent identifier les applications PHP exposées, préparez-vous à installer les correctifs confirmés par le fournisseur, et décider si des restrictions d’accès temporaires sont nécessaires. Ce guide couvre les sites Web PHP sur l'hébergement partagé, serveurs virtuels et dédiés, et déploiements basés sur des conteneurs.
Mis à jour: 21 Octobre 2026, après la version de sécurité PHP. Les versions corrigées en amont sont maintenant disponibles. La livraison du référentiel est une étape distincte: confirmer le package exact fourni par votre système d'exploitation, panneau de contrôle ou gestionnaire d'image.
Versions corrigées de PHP2Shell
Le Annonce de sécurité PHP identifie ces versions corrigées pour CVE-2026-109618 et CVE-2026-109619:
| Branche PHP | Première version corrigée en amont |
|---|---|
| 8.2 | 8.2.35 |
| 8.3 | 8.3.36 |
| 8.4 | 8.4.27 |
| 8.5 | 8.5.12 |
Un rétroportage de distribution peut conserver une ancienne chaîne de version PHP. Vérifier la version complète du package par rapport à son avis du fournisseur. Installer une nouvelle version de PHP dans un autre répertoire ne remplace pas le runtime servant un site Web.
Des rétroportages de sources minimaux existent également pour PHP 7.4, 8.0 et 8.1. Ce sont des changements de source pour les constructeurs de packages, les mises à jour RPM/DEB ne sont pas automatiquement installées ou le support en amont renouvelé.
Comment une attaque d'exécution de code à distance PHP pourrait-elle fonctionner?
Au niveau général, un RCE Web non authentifié permet à un attaquant de soumettre une entrée contrefaite à un service accessible et de provoquer une exécution en dehors de l'application’le comportement prévu. Une vulnérabilité d'exécution PHP peut affecter les applications même lorsque leur propre code, les plugins et les mots de passe sont à jour.
Hébergement Web WordPress
À partir de 3,99 $/mois
Les avis officiels décrivent désormais deux défauts distincts: corruption de mémoire insuffisante impliquant des données de requête partiellement initialisées, et état mondial obsolète qui peut survivre dans une demande ultérieure. C'est un problème d'exécution, pas une exigence pour un plugin WordPress vulnérable. L'exploitabilité dépend de l'environnement d'exécution; « chaque site Web donne racine avec une seule requête » n'est pas une conclusion justifiée.
Si le code s'exécute dans un travailleur PHP, l'impact initial dépend de ce travailleur’s identité et autorisations du système d'exploitation. Les conséquences potentielles incluent la lecture de la configuration de l'application, obtenir les informations d'identification de la base de données, modifier des fichiers de sites Web inscriptibles ou créer de la persistance. L'exécution en tant que compte de site Web n'est pas automatiquement exécutée en tant que root. Identifiants partagés, des autorisations excessives ou des vulnérabilités supplémentaires peuvent néanmoins augmenter les dégâts.
Cette distinction est importante sur les serveurs partagés: des utilisateurs d'abonnement distincts et un accès restreint au système de fichiers peuvent limiter l'impact d'un incident, mais ils ne réparent pas la vulnérabilité PHP elle-même.
Quels sites Web et serveurs nécessitent une attention particulière?
Inventaire des charges de travail PHP accessibles sur Internet sur WordPress, WooCommerce, WHMCS, Applications Laravel, API personnalisées, webmail et autres services basés sur PHP. Inclure la production, mise en scène, sous-domaines oubliés, ports et conteneurs alternatifs. Un site qui reçoit peu de trafic peut quand même exposer un runtime obsolète.
Sur une base autogérée VPS ou serveur dédié, établir qui gère les packages PHP. Sur l'hébergement géré, demandez à l'opérateur quelle version de package sert votre compte et si cette version inclut des correctifs pour les deux CVE. Une déclaration indiquant que le panneau d'hébergement est mis à jour ne constitue pas une preuve suffisante du temps d'exécution..
Ne déduisez pas la sécurité de la seule version majeure. PHP 8.2 ou 8.3 est une branche, pas une preuve qu'une version particulière a été corrigée. Inversement, certains fournisseurs rétroportent les correctifs de sécurité sans adopter le numéro de version en amont le plus récent, donc la version du package et l'avis de sécurité du fournisseur sont également importants.
Serveur VPS pas cher
À partir de 2,99 $/mois
Que pouvez-vous faire avant qu'un correctif vérifié soit disponible?
Le CERT-EU recommande d'envisager l'isolement des applications PHP accessibles sur Internet lorsqu'un correctif immédiat n'est pas possible.. L'objectif est d'arrêter les requêtes non fiables avant qu'elles n'atteignent le runtime vulnérable. Choisissez un contrôle qui correspond à l'impact métier et vérifiez qu'il couvre tous les chemins vers l'application.
| Action temporaire | Ce qu'il réalise | Conséquence opérationnelle |
|---|---|---|
| Autoriser uniquement les adresses IP de confiance ou l'accès VPN au serveur Web ou à la limite du réseau | Empêche les clients non approuvés d'accéder à l'application protégée lorsque tous les points d'entrée sont couverts | Les clients publics et les intégrations externes peuvent perdre l'accès |
| Servir une page de maintenance statique et bloquer le routage PHP public | Maintient un avis public disponible sans envoyer de demandes de visiteurs à PHP | Se connecter, vérifier, Les API et autres fonctionnalités dynamiques s'arrêtent |
| Gardez l'application publique avec le filtrage et la surveillance existants | Préserve la disponibilité et peut réduire certains trafics malveillants | L’exposition résiduelle demeure; ce n'est pas une solution vérifiée |
Un plugin de maintenance WordPress fonctionne toujours via PHP. Restreindre uniquement /wp-admin/, le répertoire de l'administrateur WHMCS ou le port de connexion de Plesk ne supprime pas l'exposition via l'application publique. Si vous utilisez une réponse statique, assurez-vous que les itinéraires du contrôleur frontal, les URL PHP directes et les hôtes virtuels alternatifs ne peuvent pas le contourner.
Pour les sites derrière un proxy inverse ou un CDN, vérifiez l'accès d'origine directe ainsi que le nom d'hôte public. Appliquer des restrictions de manière cohérente à IPv4, IPv6 et ports d'écoute alternatifs. Test à partir d'une connexion externe non approuvée, pas seulement de l'administrateur’s adresse autorisée.
Atténuations temporaires de la configuration PHP
PHP confirme désormais que la désactivation de la progression du téléchargement bloque les chemins connus liés à la session, mais pas toutes les variantes. Définissez ceci dans la configuration PHP chargée au niveau du serveur ou dans le pool FPM avant l'analyse de la demande.:
session.upload_progress.enabled = Off
Pour PHP 8.5, également défini:
fatal_error_backtraces = Off
Redémarrez chaque travailleur concerné. Un niveau application ini_set() ou FPM .user.ini n'est pas suffisant à cet effet. Vérifier les remplacements de pool et d'hôte virtuel. Ces mesures réduisent l'exposition spécifique; ils ne remplacent pas le binaire corrigé.
Hébergement VPS Windows
Accès à distance et administrateur complet
L'avis du MOO traite memory_limit=-1 avec commandes de mémoire externe. Ne déployez pas ce changement aveuglément sur l'hébergement partagé: supprimer PHP’La limite peut créer un épuisement des ressources, et des échecs d’allocation sous-jacents restent possibles. Les limites de taille des requêtes doivent correspondre aux exigences de l'application. Voir le avis officiel du MOO avant de concevoir cette atténuation.
Cloudflare peut-il, une protection WAF ou DDoS Remplacer le patch?
Une règle validée par le fournisseur peut fournir une protection temporaire contre un modèle de demande connu, mais le simple fait d'activer un WAF ne démontre pas la couverture des deux CVE. Une règle peut également ne pas être utile si le trafic atteint le point d'origine par un autre itinéraire..
La protection de la disponibilité du réseau et les correctifs d'exécution résolvent différents problèmes. Notre guide pour Fonctionnalités et limites du VPS protégé contre les DDoS explique le côté disponibilité; un PHP RCE nécessite toujours sa propre remédiation. Garder les contrôles existants activés, mais ne transformez pas leur présence en une affirmation selon laquelle PHP2Shell est résolu.
Comment patcher PHP sur les serveurs et les sites Web
Vérifiez d'abord que le fournisseur de packages a publié une version traitant explicitement des deux CVE.. Le temps de publication en amont et la disponibilité dans un référentiel de panneau d'hébergement sont des étapes distinctes. Une mise à jour réussie sans nouveaux packages installés ne clôture pas l'incident.
- Préparer la récupération: confirmer une sauvegarde restaurable récente et conserver l'inventaire actuel des packages et des configurations. Évitez de remplacer la seule sauvegarde en bon état.
- Faites correspondre le fournisseur: distinguer les packages de système d'exploitation, environnements d'exécution du panneau de commande, packages tiers et images de conteneurs.
- Installez les packages corrigés: préférer une mise à jour au sein de la branche prise en charge existante lorsque cela est approprié, plutôt qu'une migration de version majeure non testée.
- Remplacer les processus vulnérables en cours d'exécution: suivre le vendeur’s instructions de redémarrage pour les services PHP-FPM concernés, modules de serveur Web ou pools d'applications.
- Vérifiez chaque charge de travail affectée: comparer les versions de packages installés avec l'avis et confirmer que le moteur d'exécution dessert réellement chaque domaine.
Choisissez la méthode de mise à jour pour votre environnement d'hébergement
| Environnement | Approche de remédiation | Que vérifier |
|---|---|---|
| Serveur Linux ou Windows autogéré | Installez la version PHP corrigée du fournisseur responsable de l'installation existante. | Le package ou la construction binaire, intégration du serveur Web et processus d'exécution. |
| Hébergement mutualisé ou géré | Demander à l'opérateur d'hébergement d'appliquer le runtime corrigé au compte. | Confirmation couvrant à la fois les CVE et la version PHP servant le site Web. |
| Panneau de contrôle d'hébergement | Suivez ce fournisseur de panneaux’s avis sur le package et procédure de mise à jour prise en charge. | Chaque version PHP active et ses attributions de domaine. |
| Conteneurs | Créer ou obtenir une image corrigée et redéployer les charges de travail en cours d'exécution. | L'image et la construction PHP dans chaque instance en cours d'exécution. |
| Création de sources personnalisées | Reconstruire à partir d'une version corrigée confirmée par le fournisseur à l'aide des extensions et de la configuration requises. | Que le service Web utilise le nouveau binaire plutôt qu'une ancienne installation. |
Il n'existe pas de commande de mise à jour unique qui couvre en toute sécurité tous ces environnements. Installation du système d'exploitation’le package PHP par défaut peut laisser inchangé un runtime installé séparément. De la même manière, l'installation d'une image corrigée sur un hôte de conteneur ne remplace pas les conteneurs déjà en cours d'exécution.
Coordonner les mises à jour avec les propriétaires d'applications et tester les fonctions qui dépendent de PHP. Quand plusieurs versions cohabitent, traiter chacun comme un élément de remédiation distinct.
Commandes de correctifs Linux: Inspecter, Mise à jour, Redémarrage, Vérifier
Exécutez les commandes appropriées sur un hôte autorisé après avoir vérifié les sauvegardes et une fenêtre de maintenance. Ces exemples utilisent des référentiels existants et des packages installés. Ils ne changent pas de flux de module PHP et n'ajoutent pas de référentiel externe. Examinez la transaction proposée avant de l’accepter.
AlmaLinux, Rocky Linux et RHEL avec DNF
rpm -q php-common php-cli php-fpm
dnf --refresh check-update 'php*'
dnf --refresh upgrade 'php*'
check-update retours 100 quand les mises à jour sont disponibles; ce n'est pas une mise à jour qui a échoué. Pour une mise à jour planifiée de l'hôte entier au lieu de PHP uniquement, utiliser dnf --refresh upgrade. Examiner les packages ignorés ou exclus et les conflits de dépendances. Ne supprimez pas les extensions avec --allowerasing simplement pour forcer la transaction. Référence de la commande DNF.
Ubuntu et Debian avec APT
sudo apt-get -o APT::Update::Error-Mode=any update
dpkg-query -W 'php*'
apt-cache policy php8.2-common php8.2-cli php8.2-fpm
sudo apt-get --only-upgrade install php8.2-common php8.2-cli php8.2-fpm
Cet exemple concerne un PHP existant 8.2 Installation du FPM. Remplacez la branche réellement installée et incluez ses packages d'extension installés; un déploiement de module Apache a également besoin de son package correspondant. Pour une mise à jour générale planifiée, sudo apt-get --with-new-pkgs upgrade met à jour les packages installés et autorise de nouvelles dépendances sans supprimer les packages. Les blocages et les contraintes de dépendance peuvent toujours laisser les packages en attente. Voir le Documentation APT.
Redémarrez le runtime qui traite actuellement les requêtes
Pour un service RPM PHP-FPM standard:
sudo php-fpm -t && sudo systemctl restart php-fpm
systemctl is-active php-fpm
Pour un PHP Debian/Ubuntu standard 8.2 Service FPM:
sudo php-fpm8.2 -t && sudo systemctl restart php8.2-fpm
systemctl is-active php8.2-fpm
Adapter le binaire, chemin de configuration et nom du service pour les pools personnalisés ou les panneaux d'hébergement. Apache mod_php nécessite le remplacement des travailleurs Apache après un test de configuration réussi. Redémarrez les travailleurs d'application PHP de longue durée, le cas échéant. Une mise à jour PHP seule ne nécessite normalement pas de redémarrer toute la machine; d'autres composants mis à jour peuvent nécessiter un redémarrage planifié séparément.
Confirmez ce que la mise à jour est réellement installée
php -v
php --ini
systemctl --failed --no-pager
Ces contrôles sont un point de départ, pas une preuve de chaque domaine’le temps d'exécution. Vérifier la version complète de RPM/DEB, le Web SAPI en cours d'exécution et tous les remplacements de pool. « Rien à faire » décrit uniquement les mises à jour disponibles dans les référentiels configurés. Le texte CVE manquant dans un journal des modifications local n'est pas, par lui-même, des preuves définitives de toute façon.
Les conteneurs et les applications des fournisseurs ont besoin de leur propre chemin de correctifs
Les mises à jour du package hôte ne remplacent pas PHP dans une image de conteneur. Conteneurs d'inventaire, obtenir l'image fixe confirmée par le fournisseur, puis recréez la charge de travail avec ses volumes persistants et sa configuration de déploiement intacte. Extraire une image seul ne remplace pas un conteneur en cours d'exécution. Docker les documente séparément comme composer tirer et composer.
Pour un déploiement géré par le produit tel que SolusVM, utilisez son programme de mise à jour pris en charge et vérifiez chaque service supportant PHP, y compris l'API et les travailleurs. Ne considérez pas l’installation manuelle d’un package dans un conteneur éphémère comme une solution durable.. Pour Passbolt natif, patcher ses packages PHP hôtes tout en conservant les extensions requises telles que GnuPG, puis exécutez son bilan de santé et testez l'authentification et l'accès par mot de passe. Pour Passbolt conteneurisé, suivez le chemin de mise à jour de l'image.
Exemple de panneau de configuration: PHP2Shell sur Plesk
Exemple: Vérifier PHP sur Plesk
Le Avis Plesk répertorie les correctifs PHP hébergeant Linux pour 8.2 à 8.5. Lors de cette revue, c'est PHP 7.4/8.0/8.1 et les packages Windows restent en développement, tandis que le panneau sw-engine des correctifs sont prévus pour 18.0.80#11 et 18.0.81#4. Consultez l'avis en direct avant d'agir; une version planifiée n'est pas un correctif installé.
Gestionnaires de sites Web d’inventaire séparément du moteur de panneau:
sw-engine -v
plesk version
Ne remplacez pas sw-engine avec un binaire PHP de site Web ou changer son lien symbolique. Utiliser Plesk’s mises à jour prises en charge.
Répertorier les gestionnaires PHP sur Plesk pour Linux
Exécutez ces commandes d'inventaire en lecture seule sur une session SSH autorisée:
plesk version
plesk bin php_handler --list
Enregistrez chaque gestionnaire’l'identifiant, Version PHP et chemin de l'exécutable. Listez ensuite les domaines à l'aide d'un gestionnaire spécifique:
plesk bin php_handler --get-usage -id HANDLER_ID
Remplacer HANDLER_ID avec un identifiant réel de la liste. Ces commandes suivent le Documentation du gestionnaire Plesk PHP. Vérification uniquement php -v peut manquer le problème car la valeur par défaut de la ligne de commande peut différer du moteur d'exécution sélectionné pour un site Web.
Créer un petit inventaire contenant le domaine, identifiant commercial, fournisseur de forfaits, version installée, propriétaire de l'application et statut de correction. Inclure des services auxiliaires et des conteneurs basés sur PHP qui ne sont pas représentés par les affectations de sites Web ordinaires.
Mettre à jour les packages PHP gérés par Plesk
Pour les mises à jour des composants gérés par Plesk, l'interface officielle est Outils & Paramètres → Mises à jour → Mettre à jour les composants. L'alternative en ligne de commande documentée est:
plesk installer update
Ceci est une commande de changement: il installe les mises à jour Plesk disponibles et peut redémarrer les composants mis à jour. Passez en revue le Instructions de mise à jour de Plesk et vos besoins de maintenance avant de l'exécuter. Il ne peut pas installer un correctif que les référentiels configurés ne fournissent pas encore.
Après la mise à niveau des binaires PHP, actualiser Plesk’informations sur le gestionnaire si nécessaire:
plesk bin php_handler --reread
plesk bin php_handler --list
L'actualisation de l'inventaire des gestionnaires ne remplace pas le redémarrage des travailleurs concernés..
Qu'en est-il de PHP 7.4, WordPress et WHMCS?
Le Calendrier de support PHP listes 8.2, 8.3, 8.4 et 8.5 en tant que branches prises en charge au moment de cet examen. PHP 7.4 est en dehors du support en amont. Une installation existante nécessite donc soit une migration testée vers une version prise en charge, version corrigée ou un backport de sécurité explicitement vérifié de son fournisseur de package.
Ne changez pas une ancienne installation WHMCS directement depuis PHP 7.4 vers une version arbitraire de PHP 8.x. Vérifiez la candidature’s matrice de compatibilité, Exigences du chargeur ionCube, modules commerciaux et crochets personnalisés en premier. Lorsque la migration immédiate n'est pas pratique et qu'aucun rétroportage vérifié n'est disponible, la restriction d’accès reste une option opérationnelle.
Pour WordPress, mise à jour du noyau, les plugins et les thèmes restent utiles en maintenance, mais cela ne remplace pas une mise à jour du runtime PHP. Administration des tests, téléchargements de médias, tâches planifiées et paiement après avoir changé PHP. Pour WHMCS, tester également la connexion du client, ordres, rappels de paiement, pièces jointes aux billets, provisionnement et tâche cron’son propre exécutable PHP.
Comment vérifier la correction et vérifier les compromissions
Fermez la correction uniquement lorsque vous disposez de preuves du correctif installé et du service en cours d'exécution.. Enregistrer l'avis, construction du paquet, temps d'installation, redémarrage des travailleurs et vérifications des applications. Utiliser un diagnostic authentifié ou local pour vérifier le runtime Web; ne laisse pas de public phpinfo() page exposant la configuration.
Examiner les journaux du serveur Web et PHP parallèlement au processus, intégrité des fichiers et activité du compte. Processus shell inattendus lancés par un travailleur Web, tâches planifiées inconnues, Des fichiers PHP récemment modifiés ou des connexions sortantes inhabituelles justifient une enquête. Ce sont des indicateurs généraux d’incidents, signatures non publiées prouvant l’exploitation de ces CVE particulières.
Si une compromission est suspectée, isoler la charge de travail, conserver les preuves et déterminer quelles informations d’identification étaient accessibles. La reconstruction à partir d'une base de référence fiable et la rotation des secrets exposés peuvent être nécessaires. L'installation d'un correctif ne supprime pas un shell Web existant et n'invalide pas les informations d'identification volées.
Foire aux questions
PHP2Shell est-il une vulnérabilité du plugin WordPress?
Les avis concernent PHP lui-même. Une mise à jour du plugin WordPress ne répare pas le runtime sous-jacent. Évaluer la version PHP servant le site.
Est-ce que PHP 8.2 automatiquement sécurisé?
Non. Une branche prise en charge peut toujours contenir une build vulnérable. Confirmez la version du package corrigé par rapport à l'avis du fournisseur..
Dois-je arrêter tout le serveur?
Pas nécessairement. Il peut être possible de restreindre des applications Web individuelles ou d'arrêter l'exécution publique de PHP tout en conservant l'exécution de services non liés.. Valider la portée avant d'appliquer une règle de réseau étendu.
HTTPS empêche-t-il cette attaque?
HTTPS chiffre le transport. Il n'établit pas que le serveur traite en toute sécurité la demande d'application décryptée, ce n'est donc pas un remplacement pour un correctif d'exécution.
Puis-je confirmer la sécurité à l'aide d'un scanner en ligne?
Un résultat de scanner a des limites, surtout avant qu'une détection fiable ne soit disponible. Préférer la provenance du colis, confirmation du fournisseur et vérification du runtime en direct. N'exécutez pas d'outils d'exploitation non fiables sur les systèmes de production.
Quand l’accès public devrait-il être rétabli?
Restaurer l'accès une fois que les environnements d'exécution concernés ont été vérifiés comme étant corrigés, les processus concernés ont été remplacés, les fonctions essentielles ont réussi les tests et tout compromis suspecté a été résolu. Revérifiez la livraison des rappels et les opérations commerciales en file d'attente après la suppression d'une restriction.
Liste de contrôle des actions de l'administrateur
- Inventorier chaque environnement d'exécution PHP et les applications qu'il dessert.
- Suivez les deux identifiants CVE dans les avis PHP et ceux du fournisseur de packages..
- Choisissez des contrôles d'exposition temporaires lorsque les correctifs ne sont pas disponibles.
- Installez une version corrigée vérifiée pour chaque environnement d'exécution concerné.
- Redémarrez les processus concernés et testez les applications Web réelles.
- Enquêter sur les activités suspectes séparément de la tâche d'application des correctifs.
La priorité est un chemin documenté depuis le runtime exposé jusqu'au service corrigé vérifié.. Jusqu'à ce qu'un correctif soit disponible pour la source de votre package, prendre la décision de disponibilité et de contrôle d'accès de manière explicite plutôt que de traiter un ajustement de configuration non vérifié comme une protection.
