PHP2Shell est le nom provisoire donné à deux vulnérabilités PHP annoncées comme critiques, CVE-2026-109618 et CVE-2026-109619, que des chercheurs en sécurité disent pouvoir déclencher au moyen de requêtes HTTP forgées, jusqu’à une exécution de code à distance sans authentification. Les éléments disponibles sont datés dans le futur : il faut donc revérifier les numéros de version et les niveaux de gravité auprès de l’avis officiel de PHP et du bulletin de votre distribution Linux avant d’agir ou de les diffuser en interne.
Ce qui n’est pas en doute, c’est la réalité opérationnelle de la plupart des PME marocaines : PHP fait toujours tourner une grande partie des sites web, boutiques en ligne, portails clients et outils internes qui font vivre le chiffre d’affaires, et nombre de ces environnements sont anciens, non documentés et directement accessibles depuis Internet. Ce playbook propose une séquence de réponse en quatre phases — corriger ou contenir, redémarrer, vérifier, traquer — qu’une équipe IT de deux ou trois personnes peut exécuter dans une seule fenêtre de maintenance.
Points clés
- PHP2Shell désigne CVE-2026-109618 et CVE-2026-109619, annoncées avec un score CVSS v4.0 de 9,2 et affectant PHP 5.4 et versions ultérieures, l’exposition la plus forte concernant les déploiements PHP-FPM, mod_php, CGI, FrankenPHP et LiteSpeed exposés à Internet.
- Les versions corrigées annoncées ne couvrent que les branches supportées : PHP 8.5.12, 8.4.27, 8.3.36 et 8.2.35. PHP 8.1 et les versions antérieures n’ont aucune version officielle identifiée et exigent un isolement, des backports éditeur ou une migration.
- Le correctif ne clôt pas l’incident. Une simple requête POST peut suffire à déclencher les failles : il faut donc considérer l’exploitation comme possible tant que les journaux et les contrôles d’intégrité des fichiers ne disent pas le contraire.
- Vérifiez la version de PHP utilisée par le trafic de production, pas celle de votre dépôt ni de votre ordinateur portable.
- Les sources étant datées dans le futur, confirmez chaque numéro de version auprès de l’avis de sécurité PHP en vigueur et du bulletin de votre distribution avant de passer à l’action.
Ce que PHP2Shell changerait pour les PME marocaines
Selon les informations disponibles, les deux failles touchent les versions de PHP à partir de la 5.4, l’exposition opérationnelle la plus forte concernant les déploiements PHP-FPM, mod_php, CGI, FrankenPHP et LiteSpeed exposés à Internet. Toutes deux ont reçu un score CVSS v4.0 de 9,2, alors que des éléments divulgués plus tôt faisaient état d’un score maximal de 10. Cloudflare a publié une synthèse technique et des recommandations de protection WAF, et Check Point a documenté la chronologie de la divulgation et l’évaluation de la gravité.
Les versions corrigées annoncées sont les suivantes :
| Branche PHP | Version corrigée annoncée | Conséquence opérationnelle |
|---|---|---|
| PHP 8.5 | 8.5.12 | Mettre à niveau immédiatement |
| PHP 8.4 | 8.4.27 | Mettre à niveau immédiatement |
| PHP 8.3 | 8.3.36 | Mettre à niveau immédiatement |
| PHP 8.2 | 8.2.35 | Mettre à niveau immédiatement |
| PHP 8.1 et antérieures | Aucune version officielle identifiée | Isoler, recourir à des backports éditeur ou migrer |
La politique de support de PHP accorde un support complet à une branche pendant deux ans après sa version stable, puis une période de correctifs de sécurité. Une branche non supportée n’est pas sûre simplement parce que l’application fonctionne encore ; les versions corrigées annoncées ne concernent que les branches supportées. Pour PHP 8.1 et les versions antérieures, les options réalistes sont un backport du système d’exploitation ou d’un éditeur commercial, une recompilation depuis les sources, ou une migration vers une branche supportée. Ubuntu a publié sa propre synthèse des vulnérabilités et des correctifs disponibles : c’est là qu’il faut vérifier ce que vos serveurs peuvent réellement installer.
Phase 1 : corriger ou contenir sans délai
- Dressez un inventaire. Recensez chaque serveur web, hôte virtuel, conteneur, répartiteur de charge, compte de panneau de contrôle, tâche cron et intégration SaaS tierce qui exécute PHP. Confirmez l’environnement réel avec
php -v, les définitions de service PHP-FPM, les manifestes d’images de conteneurs et la configuration du serveur web. Un fichiercomposer.jsonne prouve pas quel binaire PHP sert le trafic de production. - Priorisez les services exposés. Corrigez d’abord les systèmes accessibles depuis Internet, en particulier PHP-FPM et mod_php. Incluez les environnements de préproduction joignables publiquement, les sous-domaines oubliés, les portails d’administration, les installations WordPress, les plateformes e-commerce et les API. Les attaquants scannent l’accessibilité, pas l’organigramme.
- Utilisez des paquets de confiance. Appliquez les mises à jour depuis le dépôt du système d’exploitation, les paquets PHP officiels ou un éditeur connu. Vérifiez que la mise à jour du paquet modifie bien le binaire en cours d’exécution, et pas seulement une installation de développement que personne n’utilise.
- Si la correction n’est pas possible aujourd’hui, isolez. Retirez les hôtes vulnérables d’Internet, restreignez l’accès par VPN ou liste d’autorisation, placez-les derrière un reverse proxy ou un pare-feu applicatif web, et désactivez les points de terminaison PHP inutiles. Ces mesures réduisent l’exposition mais ne remplacent pas la mise à niveau.
- Traitez le PHP ancien comme une urgence de migration. Les environnements PHP 5.x, 7.x, 8.0 et 8.1 sont particulièrement risqués lorsqu’aucun correctif éditeur supporté n’existe. Les recommandations publiées mentionnent la désactivation de
session.upload_progress.enabledpour certaines installations héritées, ou l’application d’un correctif au niveau du code source ; ces contournements de configuration doivent toutefois être validés en environnement de test et confirmés auprès de l’avis officiel avant d’être adoptés.
Les PME marocaines qui exploitent des boutiques en paiement à la livraison doivent considérer les points de terminaison de commande et de gestion des commandes comme des actifs de premier niveau pendant cette phase, car une indisponibilité ou une altération à cet endroit se traduit directement par une perte de chiffre d’affaires et des litiges clients.
Phase 2 : redémarrer PHP et le serveur web en sécurité
Après l’installation des paquets, redémarrez le composant qui charge réellement PHP. Utilisez le nom de service correspondant à la branche installée :
sudo systemctl restart php8.3-fpm
sudo systemctl reload nginxLes déploiements Apache peuvent nécessiter un rechargement ou un redémarrage d’Apache. Les applications conteneurisées exigent de remplacer le conteneur ou de redéployer l’image, et non de modifier des fichiers dans une instance en cours d’exécution. Consignez la fenêtre de maintenance, les versions des paquets, le nom de l’opérateur et tout échec de redémarrage : ce compte rendu devient une preuve si l’incident est examiné plus tard.
Avant de remettre le service en trafic normal :
- Contrôlez les journaux de PHP-FPM, du serveur web et de l’application à la recherche de nouvelles erreurs.
- Testez la connexion, le paiement, les téléversements de fichiers, les appels API, les files d’attente et les tâches planifiées.
- Confirmez la connectivité à la base de données et le comportement du cache.
- Surveillez le CPU, la mémoire, le nombre de processus, les erreurs HTTP 5xx et la latence.
- Prévoyez un plan de retour arrière, mais ne revenez jamais à une version vulnérable sans avoir d’abord isolé le service d’Internet.
Phase 3 : vérifier le correctif depuis l’environnement d’exécution
Exécutez la vérification depuis le serveur et depuis le système de déploiement, pas depuis le poste d’un développeur :
php -v
php --ini
php -i | grep -E 'session.upload_progress.enabled|Server API'Pour PHP-FPM, vérifiez la version exposée par le processus web plutôt que de vous fier uniquement au binaire en ligne de commande. Un point de terminaison de diagnostic temporaire peut révéler la version de l’environnement, mais supprimez-le immédiatement après le test : exposer publiquement la configuration PHP crée en soi un risque inutile.
Confirmez que :
- La version correspond à la version corrigée de la branche.
- Le serveur web est bien connecté au socket ou au processus PHP-FPM mis à jour.
- Les anciens processus PHP ont bien quitté.
- Les images de conteneurs et les nœuds d’autoscaling utilisent le digest corrigé.
- Les scanners de vulnérabilités n’identifient plus le composant concerné.
- Les enregistrements de gestion des paquets attestent d’une mise à jour réussie.
Les versions corrigées annoncées sont 8.2.35, 8.3.36, 8.4.27 et 8.5.12. Les éléments de recherche étant datés dans le futur, vérifiez ces numéros auprès de l’avis de sécurité PHP en vigueur et du bulletin de votre distribution avant de les publier ou de les appliquer.
Phase 4 : traquer l’intrusion après la correction
Appliquer le correctif ne prouve pas qu’un système n’a jamais été exploité. Les informations publiques rapportées indiquent que les failles peuvent être déclenchées par une simple requête POST et aboutir à une exécution de code à distance sans authentification ou à un accès au shell. Préservez les preuves avant de supprimer des fichiers suspects.
- Exportez les journaux du reverse proxy, du pare-feu, du serveur web, de PHP-FPM, de l’authentification et de l’audit cloud.
- Recherchez les requêtes POST inhabituelles, les longueurs de contenu anormales, les paramètres encodés, les codes de statut inattendus et les pics de trafic vers les points de terminaison de téléversement ou de session.
- Examinez les répertoires de téléversement PHP, les répertoires temporaires, les racines web,
/tmp, les tâches planifiées, les scripts de démarrage, les clés SSH et les fichiers récemment modifiés. - Cherchez les web shells, les fichiers PHP inconnus, les règles
.htaccessaltérées, les nouveaux administrateurs, les jetons API inconnus, les connexions sortantes et les processus enfants lancés par PHP. - Comparez les empreintes des fichiers avec un artefact de déploiement propre ou un dépôt de gestion de versions.
- Passez en revue les modifications de base de données, les paramètres de paiement, les dossiers clients et les journaux d’accès sur la période qui précède la correction.
- Renouvelez les secrets applicatifs, les mots de passe de base de données, les identifiants administrateur, les clés API et les jetons cloud si une compromission est plausible.
- Reconstruisez les serveurs compromis à partir d’images de confiance plutôt que de vous contenter d’un nettoyage.
Si des éléments suggèrent un accès non autorisé, déconnectez ou isolez l’hôte tout en préservant les preuves volatiles et sur disque, informez la direction et faites appel à un prestataire qualifié en réponse à incident. Les entreprises marocaines doivent également évaluer leurs obligations contractuelles, sectorielles et de notification en matière de données personnelles avec un conseil juridique et les autorités compétentes. Le tableau national au sens large — du phishing aux rançongiciels visant des organisations locales — est traité dans l’analyse d’Onyx sur la crise cyberattaques au Maroc et ce qu’elle signifie pour les professionnels, un contexte utile pour briefer une direction non technique.
Checklist PME et points à surveiller
- Inventorier chaque environnement PHP et son exposition.
- Corriger les branches supportées avec des paquets de confiance.
- Isoler les systèmes hérités qui ne peuvent pas être corrigés.
- Redémarrer PHP et le serveur web, et consigner la fenêtre de maintenance.
- Vérifier la version utilisée par le trafic de production.
- Tester de bout en bout les fonctions critiques pour l’activité.
- Préserver les journaux et traquer l’exploitation.
- Renouveler les secrets et reconstruire les systèmes en cas de compromission suspectée.
- Documenter les décisions, les horodatages, les preuves et l’impact client.
Deux points méritent votre attention dans les prochaines semaines. D’abord, confirmez le statut de l’avis directement auprès du projet PHP, de votre distribution Linux et de tout éditeur de panneau de contrôle dont vous dépendez, car les éléments disponibles sont datés dans le futur et les numéros de version peuvent évoluer. Ensuite, servez-vous de cet incident comme d’un déclencheur pour la migration que vous reportez : une branche PHP non supportée est un passif permanent, pas une économie.
Les équipes qui gèrent aussi des paiements numériques devraient revoir leurs identifiants d’intégration et leurs points de terminaison de rappel en même temps que la mise à niveau PHP, car les flux de paiement sont une cible courante après toute compromission de la couche web ; l’analyse d’Onyx sur la transition des paiements numériques au Maroc décrit l’évolution de ces intégrations. La séquence elle-même n’a rien de spectaculaire — corriger, isoler, redémarrer, vérifier, traquer — mais exécutée dans cet ordre, elle transforme une divulgation critique en un événement de maintenance maîtrisé plutôt qu’en une enquête de violation sans fin.




Discussion
Partagez votre point de vue.
Une question, un autre point de vue ou une expérience à partager ? Enrichissez la discussion.