{"id":5122,"date":"2026-10-21T19:13:30","date_gmt":"2026-10-21T19:13:30","guid":{"rendered":"https:\/\/onyx.ma\/?p=5122"},"modified":"2026-10-21T19:13:30","modified_gmt":"2026-10-21T19:13:30","slug":"playbook-reponse-php2shell-pme-marocaines","status":"publish","type":"post","link":"https:\/\/onyx.ma\/fr\/playbook-reponse-php2shell-pme-marocaines\/","title":{"rendered":"Playbook de r\u00e9ponse PHP2Shell pour les PME marocaines : corriger, isoler, v\u00e9rifier et traquer l&rsquo;intrusion"},"content":{"rendered":"<p>PHP2Shell est le nom provisoire donn\u00e9 \u00e0 deux vuln\u00e9rabilit\u00e9s PHP annonc\u00e9es comme critiques, CVE-2026-109618 et CVE-2026-109619, que des chercheurs en s\u00e9curit\u00e9 disent pouvoir d\u00e9clencher au moyen de requ\u00eates HTTP forg\u00e9es, jusqu&rsquo;\u00e0 une ex\u00e9cution de code \u00e0 distance sans authentification. Les \u00e9l\u00e9ments disponibles sont dat\u00e9s dans le futur : il faut donc rev\u00e9rifier les num\u00e9ros de version et les niveaux de gravit\u00e9 aupr\u00e8s de l&rsquo;avis officiel de PHP et du bulletin de votre distribution Linux avant d&rsquo;agir ou de les diffuser en interne.<\/p>\n<p>Ce qui n&rsquo;est pas en doute, c&rsquo;est la r\u00e9alit\u00e9 op\u00e9rationnelle 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&rsquo;affaires, et nombre de ces environnements sont anciens, non document\u00e9s et directement accessibles depuis Internet. Ce playbook propose une s\u00e9quence de r\u00e9ponse en quatre phases \u2014 corriger ou contenir, red\u00e9marrer, v\u00e9rifier, traquer \u2014 qu&rsquo;une \u00e9quipe IT de deux ou trois personnes peut ex\u00e9cuter dans une seule fen\u00eatre de maintenance.<\/p>\n<blockquote>\n<p><strong>Points cl\u00e9s<\/strong><\/p>\n<ul>\n<li>PHP2Shell d\u00e9signe CVE-2026-109618 et CVE-2026-109619, annonc\u00e9es avec un score CVSS v4.0 de 9,2 et affectant PHP 5.4 et versions ult\u00e9rieures, l&rsquo;exposition la plus forte concernant les d\u00e9ploiements PHP-FPM, mod_php, CGI, FrankenPHP et LiteSpeed expos\u00e9s \u00e0 Internet.<\/li>\n<li>Les versions corrig\u00e9es annonc\u00e9es ne couvrent que les branches support\u00e9es : PHP 8.5.12, 8.4.27, 8.3.36 et 8.2.35. PHP 8.1 et les versions ant\u00e9rieures n&rsquo;ont aucune version officielle identifi\u00e9e et exigent un isolement, des backports \u00e9diteur ou une migration.<\/li>\n<li>Le correctif ne cl\u00f4t pas l&rsquo;incident. Une simple requ\u00eate POST peut suffire \u00e0 d\u00e9clencher les failles : il faut donc consid\u00e9rer l&rsquo;exploitation comme possible tant que les journaux et les contr\u00f4les d&rsquo;int\u00e9grit\u00e9 des fichiers ne disent pas le contraire.<\/li>\n<li>V\u00e9rifiez la version de PHP utilis\u00e9e par le trafic de production, pas celle de votre d\u00e9p\u00f4t ni de votre ordinateur portable.<\/li>\n<li>Les sources \u00e9tant dat\u00e9es dans le futur, confirmez chaque num\u00e9ro de version aupr\u00e8s de l&rsquo;avis de s\u00e9curit\u00e9 PHP en vigueur et du bulletin de votre distribution avant de passer \u00e0 l&rsquo;action.<\/li>\n<\/ul>\n<\/blockquote>\n<h2 id=\"what-php2shell-reportedly-changes-for-moroccan-smes\">Ce que PHP2Shell changerait pour les PME marocaines<\/h2>\n<p>Selon les informations disponibles, les deux failles touchent les versions de PHP \u00e0 partir de la 5.4, l&rsquo;exposition op\u00e9rationnelle la plus forte concernant les d\u00e9ploiements PHP-FPM, mod_php, CGI, FrankenPHP et LiteSpeed expos\u00e9s \u00e0 Internet. Toutes deux ont re\u00e7u un score CVSS v4.0 de 9,2, alors que des \u00e9l\u00e9ments divulgu\u00e9s plus t\u00f4t faisaient \u00e9tat d&rsquo;un score maximal de 10. Cloudflare a publi\u00e9 une synth\u00e8se technique et des recommandations de protection WAF, et Check Point a document\u00e9 la chronologie de la divulgation et l&rsquo;\u00e9valuation de la gravit\u00e9.<\/p>\n<p>Les versions corrig\u00e9es annonc\u00e9es sont les suivantes :<\/p>\n<table>\n<thead>\n<tr>\n<th>Branche PHP<\/th>\n<th>Version corrig\u00e9e annonc\u00e9e<\/th>\n<th>Cons\u00e9quence op\u00e9rationnelle<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>PHP 8.5<\/td>\n<td>8.5.12<\/td>\n<td>Mettre \u00e0 niveau imm\u00e9diatement<\/td>\n<\/tr>\n<tr>\n<td>PHP 8.4<\/td>\n<td>8.4.27<\/td>\n<td>Mettre \u00e0 niveau imm\u00e9diatement<\/td>\n<\/tr>\n<tr>\n<td>PHP 8.3<\/td>\n<td>8.3.36<\/td>\n<td>Mettre \u00e0 niveau imm\u00e9diatement<\/td>\n<\/tr>\n<tr>\n<td>PHP 8.2<\/td>\n<td>8.2.35<\/td>\n<td>Mettre \u00e0 niveau imm\u00e9diatement<\/td>\n<\/tr>\n<tr>\n<td>PHP 8.1 et ant\u00e9rieures<\/td>\n<td>Aucune version officielle identifi\u00e9e<\/td>\n<td>Isoler, recourir \u00e0 des backports \u00e9diteur ou migrer<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>La politique de support de PHP accorde un support complet \u00e0 une branche pendant deux ans apr\u00e8s sa version stable, puis une p\u00e9riode de correctifs de s\u00e9curit\u00e9. Une branche non support\u00e9e n&rsquo;est pas s\u00fbre simplement parce que l&rsquo;application fonctionne encore ; les versions corrig\u00e9es annonc\u00e9es ne concernent que les branches support\u00e9es. Pour PHP 8.1 et les versions ant\u00e9rieures, les options r\u00e9alistes sont un backport du syst\u00e8me d&rsquo;exploitation ou d&rsquo;un \u00e9diteur commercial, une recompilation depuis les sources, ou une migration vers une branche support\u00e9e. Ubuntu a publi\u00e9 sa propre synth\u00e8se des vuln\u00e9rabilit\u00e9s et des correctifs disponibles : c&rsquo;est l\u00e0 qu&rsquo;il faut v\u00e9rifier ce que vos serveurs peuvent r\u00e9ellement installer.<\/p>\n<h2 id=\"phase-1-patch-or-contain-immediately\">Phase 1 : corriger ou contenir sans d\u00e9lai<\/h2>\n<ol>\n<li><strong>Dressez un inventaire.<\/strong> Recensez chaque serveur web, h\u00f4te virtuel, conteneur, r\u00e9partiteur de charge, compte de panneau de contr\u00f4le, t\u00e2che cron et int\u00e9gration SaaS tierce qui ex\u00e9cute PHP. Confirmez l&rsquo;environnement r\u00e9el avec <code>php -v<\/code>, les d\u00e9finitions de service PHP-FPM, les manifestes d&rsquo;images de conteneurs et la configuration du serveur web. Un fichier <code>composer.json<\/code> ne prouve pas quel binaire PHP sert le trafic de production.<\/li>\n<li><strong>Priorisez les services expos\u00e9s.<\/strong> Corrigez d&rsquo;abord les syst\u00e8mes accessibles depuis Internet, en particulier PHP-FPM et mod_php. Incluez les environnements de pr\u00e9production joignables publiquement, les sous-domaines oubli\u00e9s, les portails d&rsquo;administration, les installations WordPress, les plateformes e-commerce et les API. Les attaquants scannent l&rsquo;accessibilit\u00e9, pas l&rsquo;organigramme.<\/li>\n<li><strong>Utilisez des paquets de confiance.<\/strong> Appliquez les mises \u00e0 jour depuis le d\u00e9p\u00f4t du syst\u00e8me d&rsquo;exploitation, les paquets PHP officiels ou un \u00e9diteur connu. V\u00e9rifiez que la mise \u00e0 jour du paquet modifie bien le binaire en cours d&rsquo;ex\u00e9cution, et pas seulement une installation de d\u00e9veloppement que personne n&rsquo;utilise.<\/li>\n<li><strong>Si la correction n&rsquo;est pas possible aujourd&rsquo;hui, isolez.<\/strong> Retirez les h\u00f4tes vuln\u00e9rables d&rsquo;Internet, restreignez l&rsquo;acc\u00e8s par VPN ou liste d&rsquo;autorisation, placez-les derri\u00e8re un reverse proxy ou un pare-feu applicatif web, et d\u00e9sactivez les points de terminaison PHP inutiles. Ces mesures r\u00e9duisent l&rsquo;exposition mais ne remplacent pas la mise \u00e0 niveau.<\/li>\n<li><strong>Traitez le PHP ancien comme une urgence de migration.<\/strong> Les environnements PHP 5.x, 7.x, 8.0 et 8.1 sont particuli\u00e8rement risqu\u00e9s lorsqu&rsquo;aucun correctif \u00e9diteur support\u00e9 n&rsquo;existe. Les recommandations publi\u00e9es mentionnent la d\u00e9sactivation de <code>session.upload_progress.enabled<\/code> pour certaines installations h\u00e9rit\u00e9es, ou l&rsquo;application d&rsquo;un correctif au niveau du code source ; ces contournements de configuration doivent toutefois \u00eatre valid\u00e9s en environnement de test et confirm\u00e9s aupr\u00e8s de l&rsquo;avis officiel avant d&rsquo;\u00eatre adopt\u00e9s.<\/li>\n<\/ol>\n<p>Les PME marocaines qui exploitent des boutiques en paiement \u00e0 la livraison doivent consid\u00e9rer les points de terminaison de commande et de gestion des commandes comme des actifs de premier niveau pendant cette phase, car une indisponibilit\u00e9 ou une alt\u00e9ration \u00e0 cet endroit se traduit directement par une perte de chiffre d&rsquo;affaires et des litiges clients.<\/p>\n<h2 id=\"phase-2-restart-php-and-the-web-server-safely\">Phase 2 : red\u00e9marrer PHP et le serveur web en s\u00e9curit\u00e9<\/h2>\n<p>Apr\u00e8s l&rsquo;installation des paquets, red\u00e9marrez le composant qui charge r\u00e9ellement PHP. Utilisez le nom de service correspondant \u00e0 la branche install\u00e9e :<\/p>\n<pre><code>sudo systemctl restart php8.3-fpm\nsudo systemctl reload nginx<\/code><\/pre>\n<p>Les d\u00e9ploiements Apache peuvent n\u00e9cessiter un rechargement ou un red\u00e9marrage d&rsquo;Apache. Les applications conteneuris\u00e9es exigent de remplacer le conteneur ou de red\u00e9ployer l&rsquo;image, et non de modifier des fichiers dans une instance en cours d&rsquo;ex\u00e9cution. Consignez la fen\u00eatre de maintenance, les versions des paquets, le nom de l&rsquo;op\u00e9rateur et tout \u00e9chec de red\u00e9marrage : ce compte rendu devient une preuve si l&rsquo;incident est examin\u00e9 plus tard.<\/p>\n<p>Avant de remettre le service en trafic normal :<\/p>\n<ul>\n<li>Contr\u00f4lez les journaux de PHP-FPM, du serveur web et de l&rsquo;application \u00e0 la recherche de nouvelles erreurs.<\/li>\n<li>Testez la connexion, le paiement, les t\u00e9l\u00e9versements de fichiers, les appels API, les files d&rsquo;attente et les t\u00e2ches planifi\u00e9es.<\/li>\n<li>Confirmez la connectivit\u00e9 \u00e0 la base de donn\u00e9es et le comportement du cache.<\/li>\n<li>Surveillez le CPU, la m\u00e9moire, le nombre de processus, les erreurs HTTP 5xx et la latence.<\/li>\n<li>Pr\u00e9voyez un plan de retour arri\u00e8re, mais ne revenez jamais \u00e0 une version vuln\u00e9rable sans avoir d&rsquo;abord isol\u00e9 le service d&rsquo;Internet.<\/li>\n<\/ul>\n<h2 id=\"phase-3-verify-the-fix-from-the-runtime\">Phase 3 : v\u00e9rifier le correctif depuis l&rsquo;environnement d&rsquo;ex\u00e9cution<\/h2>\n<p>Ex\u00e9cutez la v\u00e9rification depuis le serveur et depuis le syst\u00e8me de d\u00e9ploiement, pas depuis le poste d&rsquo;un d\u00e9veloppeur :<\/p>\n<pre><code>php -v\nphp --ini\nphp -i | grep -E 'session.upload_progress.enabled|Server API'<\/code><\/pre>\n<p>Pour PHP-FPM, v\u00e9rifiez la version expos\u00e9e par le processus web plut\u00f4t que de vous fier uniquement au binaire en ligne de commande. Un point de terminaison de diagnostic temporaire peut r\u00e9v\u00e9ler la version de l&rsquo;environnement, mais supprimez-le imm\u00e9diatement apr\u00e8s le test : exposer publiquement la configuration PHP cr\u00e9e en soi un risque inutile.<\/p>\n<p>Confirmez que :<\/p>\n<ul>\n<li>La version correspond \u00e0 la version corrig\u00e9e de la branche.<\/li>\n<li>Le serveur web est bien connect\u00e9 au socket ou au processus PHP-FPM mis \u00e0 jour.<\/li>\n<li>Les anciens processus PHP ont bien quitt\u00e9.<\/li>\n<li>Les images de conteneurs et les n\u0153uds d&rsquo;autoscaling utilisent le digest corrig\u00e9.<\/li>\n<li>Les scanners de vuln\u00e9rabilit\u00e9s n&rsquo;identifient plus le composant concern\u00e9.<\/li>\n<li>Les enregistrements de gestion des paquets attestent d&rsquo;une mise \u00e0 jour r\u00e9ussie.<\/li>\n<\/ul>\n<p>Les versions corrig\u00e9es annonc\u00e9es sont 8.2.35, 8.3.36, 8.4.27 et 8.5.12. Les \u00e9l\u00e9ments de recherche \u00e9tant dat\u00e9s dans le futur, v\u00e9rifiez ces num\u00e9ros aupr\u00e8s de l&rsquo;avis de s\u00e9curit\u00e9 PHP en vigueur et du bulletin de votre distribution avant de les publier ou de les appliquer.<\/p>\n<h2 id=\"phase-4-hunt-for-intrusion-after-patching\">Phase 4 : traquer l&rsquo;intrusion apr\u00e8s la correction<\/h2>\n<p>Appliquer le correctif ne prouve pas qu&rsquo;un syst\u00e8me n&rsquo;a jamais \u00e9t\u00e9 exploit\u00e9. Les informations publiques rapport\u00e9es indiquent que les failles peuvent \u00eatre d\u00e9clench\u00e9es par une simple requ\u00eate POST et aboutir \u00e0 une ex\u00e9cution de code \u00e0 distance sans authentification ou \u00e0 un acc\u00e8s au shell. Pr\u00e9servez les preuves avant de supprimer des fichiers suspects.<\/p>\n<ul>\n<li>Exportez les journaux du reverse proxy, du pare-feu, du serveur web, de PHP-FPM, de l&rsquo;authentification et de l&rsquo;audit cloud.<\/li>\n<li>Recherchez les requ\u00eates POST inhabituelles, les longueurs de contenu anormales, les param\u00e8tres encod\u00e9s, les codes de statut inattendus et les pics de trafic vers les points de terminaison de t\u00e9l\u00e9versement ou de session.<\/li>\n<li>Examinez les r\u00e9pertoires de t\u00e9l\u00e9versement PHP, les r\u00e9pertoires temporaires, les racines web, <code>\/tmp<\/code>, les t\u00e2ches planifi\u00e9es, les scripts de d\u00e9marrage, les cl\u00e9s SSH et les fichiers r\u00e9cemment modifi\u00e9s.<\/li>\n<li>Cherchez les web shells, les fichiers PHP inconnus, les r\u00e8gles <code>.htaccess<\/code> alt\u00e9r\u00e9es, les nouveaux administrateurs, les jetons API inconnus, les connexions sortantes et les processus enfants lanc\u00e9s par PHP.<\/li>\n<li>Comparez les empreintes des fichiers avec un artefact de d\u00e9ploiement propre ou un d\u00e9p\u00f4t de gestion de versions.<\/li>\n<li>Passez en revue les modifications de base de donn\u00e9es, les param\u00e8tres de paiement, les dossiers clients et les journaux d&rsquo;acc\u00e8s sur la p\u00e9riode qui pr\u00e9c\u00e8de la correction.<\/li>\n<li>Renouvelez les secrets applicatifs, les mots de passe de base de donn\u00e9es, les identifiants administrateur, les cl\u00e9s API et les jetons cloud si une compromission est plausible.<\/li>\n<li>Reconstruisez les serveurs compromis \u00e0 partir d&rsquo;images de confiance plut\u00f4t que de vous contenter d&rsquo;un nettoyage.<\/li>\n<\/ul>\n<p>Si des \u00e9l\u00e9ments sugg\u00e8rent un acc\u00e8s non autoris\u00e9, d\u00e9connectez ou isolez l&rsquo;h\u00f4te tout en pr\u00e9servant les preuves volatiles et sur disque, informez la direction et faites appel \u00e0 un prestataire qualifi\u00e9 en r\u00e9ponse \u00e0 incident. Les entreprises marocaines doivent \u00e9galement \u00e9valuer leurs obligations contractuelles, sectorielles et de notification en mati\u00e8re de donn\u00e9es personnelles avec un conseil juridique et les autorit\u00e9s comp\u00e9tentes. Le tableau national au sens large \u2014 du phishing aux ran\u00e7ongiciels visant des organisations locales \u2014 est trait\u00e9 dans l&rsquo;analyse d&rsquo;Onyx sur <a href=\"https:\/\/onyx.ma\/fr\/crise-cyberattaques-maroc-guide\/\">la crise cyberattaques au Maroc et ce qu&rsquo;elle signifie pour les professionnels<\/a>, un contexte utile pour briefer une direction non technique.<\/p>\n<h2 id=\"sme-checklist-and-what-to-watch-next\">Checklist PME et points \u00e0 surveiller<\/h2>\n<ul>\n<li>Inventorier chaque environnement PHP et son exposition.<\/li>\n<li>Corriger les branches support\u00e9es avec des paquets de confiance.<\/li>\n<li>Isoler les syst\u00e8mes h\u00e9rit\u00e9s qui ne peuvent pas \u00eatre corrig\u00e9s.<\/li>\n<li>Red\u00e9marrer PHP et le serveur web, et consigner la fen\u00eatre de maintenance.<\/li>\n<li>V\u00e9rifier la version utilis\u00e9e par le trafic de production.<\/li>\n<li>Tester de bout en bout les fonctions critiques pour l&rsquo;activit\u00e9.<\/li>\n<li>Pr\u00e9server les journaux et traquer l&rsquo;exploitation.<\/li>\n<li>Renouveler les secrets et reconstruire les syst\u00e8mes en cas de compromission suspect\u00e9e.<\/li>\n<li>Documenter les d\u00e9cisions, les horodatages, les preuves et l&rsquo;impact client.<\/li>\n<\/ul>\n<p>Deux points m\u00e9ritent votre attention dans les prochaines semaines. D&rsquo;abord, confirmez le statut de l&rsquo;avis directement aupr\u00e8s du projet PHP, de votre distribution Linux et de tout \u00e9diteur de panneau de contr\u00f4le dont vous d\u00e9pendez, car les \u00e9l\u00e9ments disponibles sont dat\u00e9s dans le futur et les num\u00e9ros de version peuvent \u00e9voluer. Ensuite, servez-vous de cet incident comme d&rsquo;un d\u00e9clencheur pour la migration que vous reportez : une branche PHP non support\u00e9e est un passif permanent, pas une \u00e9conomie.<\/p>\n<p>Les \u00e9quipes qui g\u00e8rent aussi des paiements num\u00e9riques devraient revoir leurs identifiants d&rsquo;int\u00e9gration et leurs points de terminaison de rappel en m\u00eame temps que la mise \u00e0 niveau PHP, car les flux de paiement sont une cible courante apr\u00e8s toute compromission de la couche web ; l&rsquo;analyse d&rsquo;Onyx sur <a href=\"https:\/\/onyx.ma\/fr\/transition-paiements-numeriques-maroc-opportunites-startups\/\">la transition des paiements num\u00e9riques au Maroc<\/a> d\u00e9crit l&rsquo;\u00e9volution de ces int\u00e9grations. La s\u00e9quence elle-m\u00eame n&rsquo;a rien de spectaculaire \u2014 corriger, isoler, red\u00e9marrer, v\u00e9rifier, traquer \u2014 mais ex\u00e9cut\u00e9e dans cet ordre, elle transforme une divulgation critique en un \u00e9v\u00e9nement de maintenance ma\u00eetris\u00e9 plut\u00f4t qu&rsquo;en une enqu\u00eate de violation sans fin.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un playbook PHP2Shell en quatre phases pour les PME marocaines : corriger ou contenir les branches PHP support\u00e9es, red\u00e9marrer PHP et le serveur web, v\u00e9rifier l&rsquo;environnement de production, puis traquer l&rsquo;intrusion.<\/p>\n","protected":false},"author":1,"featured_media":5120,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_focus_keyword":"playbook de r\u00e9ponse PHP2Shell","rank_math_description":"Playbook PHP2Shell en quatre phases pour les PME marocaines : corriger ou contenir, red\u00e9marrer, v\u00e9rifier le runtime de production, puis traquer l'intrusion.","_onyx_display_title":""},"categories":[280],"tags":[],"class_list":["post-5122","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech-stack"],"_links":{"self":[{"href":"https:\/\/onyx.ma\/fr\/wp-json\/wp\/v2\/posts\/5122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/onyx.ma\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/onyx.ma\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/onyx.ma\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/onyx.ma\/fr\/wp-json\/wp\/v2\/comments?post=5122"}],"version-history":[{"count":1,"href":"https:\/\/onyx.ma\/fr\/wp-json\/wp\/v2\/posts\/5122\/revisions"}],"predecessor-version":[{"id":5124,"href":"https:\/\/onyx.ma\/fr\/wp-json\/wp\/v2\/posts\/5122\/revisions\/5124"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/onyx.ma\/fr\/wp-json\/wp\/v2\/media\/5120"}],"wp:attachment":[{"href":"https:\/\/onyx.ma\/fr\/wp-json\/wp\/v2\/media?parent=5122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/onyx.ma\/fr\/wp-json\/wp\/v2\/categories?post=5122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/onyx.ma\/fr\/wp-json\/wp\/v2\/tags?post=5122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}