Retour aux actualités
| Mathis Rodrigues | 16 minutes de lecture

PHP2Shell : le jour où une partie du web s'est mise en pause

cybersécuritéphpwordpresshébergementfaille de sécurité

Le matin du 21 octobre, le centre national de cybersécurité des Pays-Bas a éteint son propre site. C'était une précaution, et il n'a pas été le seul à la prendre.

Dans les heures qui ont suivi, la liste s'est allongée. DigiD, le portail d'identification des citoyens néerlandais, la Chambre des représentants, le port de Rotterdam, la fédération néerlandaise de football, de nombreux hôpitaux. Puis des services publics finlandais, des sites fédéraux allemands, le ministère belge des Affaires étrangères, plusieurs services de Wikimedia. En France, le ministère de l'Intérieur a confirmé dans un communiqué, cité par Reuters, avoir mis « temporairement hors ligne » les sites des préfectures, à la demande de l'ANSSI, selon franceinfo. Vers 20 heures, ceux que nous avons consultés étaient encore en maintenance.

La cause n'était pas une vague de piratages. C'était une fuite. Deux failles graves dans PHP, le langage qui fait tourner environ les trois quarts des sites dont on connaît la technologie, venaient d'être révélées avant que leur correctif soit prêt. Pendant plusieurs heures, des millions de serveurs ont été exposés à une attaque dont la recette circulait déjà.

Voici le récit de cette journée, pourquoi le problème se trouvait sous les sites plutôt que dans les sites, et les vérifications à faire si vous avez un site WordPress ou un outil en PHP.

En bref
  • Deux failles critiques dans PHP lui-même, surnommées « PHP2Shell », permettent à un inconnu, sans compte, de faire exécuter ses commandes par un serveur.
  • Le problème est sous le site : un WordPress à jour ne suffit pas si la version de PHP du serveur est vulnérable. Le mode maintenance ne protège pas.
  • Les détails ont fuité avant le correctif : des gouvernements, des hôpitaux et Wikimedia ont coupé des sites par précaution.
  • Correctifs publiés le 21 octobre vers 16 h : PHP 8.2.35, 8.3.36, 8.4.27 et 8.5.12. Pour PHP 8.1 et plus ancien, pas de nouvelle version : isoler puis migrer, recommande le CERT-FR.
  • À faire : demander à votre hébergeur quelle version de PHP fait tourner votre site, et depuis quand elle est corrigée.

Une journée qui commence par une fuite

D'ordinaire, une faille suit un parcours rodé. Un chercheur la signale discrètement aux développeurs, qui préparent un correctif. Le jour venu, la faille et sa réparation sont annoncées ensemble, et chacun peut mettre à jour avant que les attaquants s'organisent. On appelle cela une divulgation coordonnée.

Cette fois, l'ordre s'est inversé. Le 20 octobre, des détails ont fuité avant la date prévue, et l'équipe de PHP a annoncé une version de sécurité d'urgence pour le lendemain. Dans la nuit, l'archive qui avait fuité est apparue sur VirusTotal, un service d'analyse de fichiers suspects très utilisé par les spécialistes. Au matin, d'après le média spécialisé Techzine, une démonstration de l'attaque circulait sur Hacker News, un forum très lu par les développeurs.

Défenseurs et attaquants avaient désormais la même information. Restait à savoir qui irait le plus vite.

La chronologie du 21 octobre

Les heures sont données en heure de Paris, d'après les chronologies publiées par Patchstack, une société spécialisée dans la sécurité de WordPress, et par le site Clubic.

20 octobre
La fuite
Des détails circulent avant la divulgation prévue. PHP annonce une version de sécurité d'urgence pour le lendemain.
21 octobre, 4 h 29
Première trace publique
L'archive qui a fuité est soumise pour la première fois à VirusTotal.
21 octobre, matinée
Coupures en cascade
Pays-Bas, Allemagne, Belgique, Finlande, Wikimedia : des sites sont mis hors ligne par précaution.
21 octobre, 8 h 07
Une mesure provisoire
L'hébergeur o2switch désactive une fonction de PHP et redémarre ses serveurs, en attendant le correctif.
21 octobre, 9 h 34
Premiers signalements
Des hébergeurs partenaires de Patchstack lui signalent des incidents d'exploitation active.
21 octobre, 9 h 43
Cloudflare réagit
Son directeur technique dit voir les premières attaques. Des règles de filtrage d'urgence sont déployées, y compris pour les clients gratuits.
21 octobre, 15 h 52
Les correctifs sortent
PHP publie les versions 8.2.35, 8.3.36, 8.4.27 et 8.5.12.
21 octobre, 16 h 40
Le déploiement prend du temps
D'après Clubic, les fichiers PHP d'o2switch dataient encore du 6 octobre. L'hébergeur promet un déploiement « dans les meilleurs délais ».

Une précision importante : les signaux sur l'exploitation réelle étaient contradictoires. Patchstack observait surtout, en milieu d'après-midi, des tentatives de « sondage », sans preuve d'intrusion. Dans la journée, le ministre néerlandais Van Weel disait n'avoir « aucun signal » d'abus (NOS) ; le centre belge de cybersécurité n'avait enregistré aucune attaque. La société de sécurité watchTowr classait les failles comme exploitées, sur la foi de tentatives observées, sans nommer de victime.

Au soir du 21 octobre, aucune intrusion n'avait été confirmée publiquement. Ce qui est établi, c'est l'exposition, et le choix de nombreux organismes de ne pas prendre le risque.

Ce que permettent ces deux failles

D'abord, PHP. C'est un langage de programmation, l'un des plus répandus du web. Quand vous ouvrez une page, PHP est souvent le programme qui, sur le serveur, la fabrique à la volée : il lit votre demande, va chercher le contenu et renvoie la page à votre navigateur. WordPress, l'outil qui sert à créer une grande partie des sites vitrines, est écrit en PHP. Drupal, Joomla, Magento et Laravel aussi.

Les deux failles portent les numéros CVE-2026-109618 et CVE-2026-109619. Un numéro CVE est l'identifiant public attribué à chaque faille connue, pour que tout le monde parle de la même chose. L'équipe de PHP les a notées 9,2 sur 10 sur l'échelle CVSS, la grille de gravité du secteur : c'est la catégorie « critique ». Leur surnom, « PHP2Shell », résume le danger. Un « shell », c'est la ligne de commande d'un serveur, l'endroit d'où l'on peut tout lui faire faire.

Exécuter du code à distance, concrètement

Le terme technique est « exécution de code à distance ». Il veut dire qu'un inconnu, depuis n'importe où, peut envoyer au serveur une requête piégée qui lui fait exécuter ses propres commandes, comme s'il était assis devant la machine. Ici, aucun compte n'est nécessaire, aucun mot de passe : il suffit que le serveur réponde en PHP.

Une fois cette porte ouverte, les possibilités sont nombreuses : faux formulaire de paiement, envoi de courrier indésirable, fichiers chiffrés contre rançon. Les failles permettent aussi de lire une partie de la mémoire du serveur, où passent des mots de passe, des jetons de connexion ou des clés d'API. Une clé d'API, c'est le code qui permet à un site de se connecter à un autre service, comme un moyen de paiement.

Même une page « Hello World »La société de sécurité Wiz a démontré l'attaque sur les dernières images officielles de WordPress, Drupal et Joomla, d'après Patchstack. Selon les analyses publiées, même une page PHP minimale suffit à exposer le serveur. Ce n'est donc pas une question de site mal entretenu.

Le problème n'était pas dans le site, mais dessous

C'est le cœur de cette histoire. La plupart des failles dont on entend parler touchent une extension WordPress ou un thème. On met à jour, et c'est réglé.

Cette fois, la faille se trouvait un étage plus bas. Imaginez un immeuble. WordPress, votre thème et vos extensions sont l'appartement : vous les choisissez, vous les entretenez, vous en avez les clés. PHP, c'est la structure du bâtiment, les murs porteurs et les canalisations. Vous pouviez avoir repeint, changé les serrures et posé une alarme : si les fondations avaient un défaut, l'appartement le plus soigné était exposé comme les autres.

Concrètement, vous pouviez avoir tout mis à jour le matin même : si le serveur tournait sur une version vulnérable de PHP, la porte restait ouverte. Et pour la plupart des petites entreprises, la version de PHP ne se règle pas dans le tableau de bord du site. Elle dépend de l'hébergeur.

Ce que vous voyez de votre site
Et ce qui tourne en dessous, hors de votre tableau de bord
WordPress, thème, extensions
La version de PHP;;Le serveur web;;Le système du serveur;;Les réglages de l'hébergeur;;Le filtrage en amont

Pourquoi le mode maintenance ne protège pas

Le réflexe de beaucoup a été d'activer le mode maintenance de WordPress, cette page « Site en maintenance, revenez plus tard » qui remplace le site pour les visiteurs. Il ne protège pas contre cette faille, pour une question d'ordre. Quand une requête arrive, c'est PHP qui la lit en premier. C'est seulement ensuite que WordPress, lui-même écrit en PHP, décide d'afficher la page de maintenance. L'attaque se joue dans ce premier instant.

C'est comme accrocher un panneau « Fermé » sur la porte de la boutique alors que le défaut se trouve dans la serrure de l'entrée de l'immeuble. Le panneau rassure, il n'arrête personne. Seules deux mesures protègent réellement : mettre à jour PHP sur le serveur, ou empêcher les requêtes de l'atteindre, par un filtrage en amont ou une coupure pure et simple.

Le pare-feu applicatif, une ceinture en attendant

Plusieurs grands acteurs ont déployé des protections dans la matinée : Cloudflare pour tous ses clients, OVHcloud, SiteGround. La plupart passent par un WAF, pour « Web Application Firewall », ou pare-feu applicatif : un filtre placé devant le site, qui examine chaque requête et bloque celles qui ressemblent à une attaque connue.

Ce jour-là, c'était précieux. Mais un pare-feu applicatif reconnaît des formes d'attaque, il ne répare pas le défaut : face à une variante qu'il ignore, le serveur reste vulnérable. C'est le sens de la recommandation du CERT-EU, l'équipe de réponse aux incidents des institutions européennes, et du centre de cybersécurité britannique : isoler ou couper les sites PHP exposés qu'on ne peut pas corriger immédiatement. En France, le CERT-FR recommande, pour les versions qui ne sont plus maintenues, d'isoler les serveurs puis de migrer.

L'ampleur : des millions de serveurs exposés

La taille du problème est difficile à mesurer, et les chiffres publiés le 21 octobre doivent être lus avec prudence.

Près de 75 %des sites dont la technologie serveur est connue tournent en PHP, selon Techzine
5,1 millionsd'adresses identifiées comme serveurs PHP, d'après VirusTotal
758 000serveurs environ sur une version de PHP en fin de vie, parmi ceux qui affichent leur version (VirusTotal)
59 %des serveurs exposés sur PHP 8.1 ou plus ancien, selon Mallory, cité par Clubic

Un serveur exposé n'est ni piraté, ni forcément vulnérable : c'est une machine qui répond en PHP sur Internet, et une partie a été corrigée dans la journée. Environ 1,1 million d'entre elles affichent publiquement leur version de PHP. Parmi elles, près de 758 000 tournaient sur une version en fin de vie, de PHP 5.4 à PHP 8.1, contre environ 272 000 sur une version encore suivie. VirusTotal y a repéré environ 538 000 sites WordPress, 141 000 applications Laravel et 107 000 installations de Nextcloud, un outil de partage de fichiers.

Les serveurs PHP qui affichent leur version
En milliers, sur environ 1,1 million. VirusTotal, 21 octobre.
bar
Fin de vie, PHP 5.4 à 8.1:758:c1;;Encore suivie, PHP 8.2 à 8.5:272:c2

Pourquoi les anciennes versions n'ont pas de correctif

Chaque version de PHP est entretenue quelques années, puis plus rien : l'équipe du projet ne publie plus de correctif, même pour une faille critique. On dit que la version est « en fin de vie ».

Les nouvelles versions du 21 octobre concernent PHP 8.2, 8.3, 8.4 et 8.5. L'équipe de PHP a toutefois fait une exception limitée : des correctifs minimaux, en code source, pour PHP 7.4, 8.0 et 8.1, utiles seulement à ceux qui compilent PHP eux-mêmes. Pour PHP 7.3 et plus ancien, rien. Pour la plupart des sites, la voie durable est de changer de version, en vérifiant que le thème et les extensions suivent.

Qui maîtrise chaque maillon ?

Ce jour-là, beaucoup de dirigeants se sont posé une question légitime, mais incomplète : « Mon site est-il à jour ? » La question utile était autre : « Qui maîtrise chaque maillon, et à quelle vitesse peut-il réagir ? »

Un site, et plus encore un outil de gestion en ligne, est une chaîne de briques empilées. Le serveur appartient souvent à un hébergeur, qui installe et met à jour PHP. WordPress est mis à jour par vous ou par votre agence. Chaque extension dépend de son propre éditeur, le thème d'un autre. Le 21 octobre, la sécurité d'un site dépendait du maillon le plus lent de cette chaîne, et ce maillon était rarement celui que son propriétaire contrôlait.

Les maillons d'un site WordPress
Et qui tient chacun d'eux
visiteur:Visiteur~Ou attaquant, la requête est la même:globe;filtre:Filtrage en amont~Pare-feu applicatif, s'il est activé:shield:outline;serveur:Hébergeur~Serveur et version de PHP:cloud:dark;wp:WordPress~Mis à jour par vous ou votre agence:settings:accent;ext:Extensions et thème~Chacun son éditeur:box:outline
visiteur->filtre:requête;filtre->serveur:requête filtrée;serveur->wp:PHP lit d'abord;wp->ext:chargement

L'exemple d'o2switch, rapporté par Clubic, montre bien cette dépendance. L'hébergeur a réagi tôt, avec une mesure provisoire dès 8 heures du matin. Mais en fin d'après-midi, ses fichiers PHP n'avaient pas encore été remplacés par la version corrigée, et il promettait à 17 h 30 un déploiement « dans les meilleurs délais ». Mettre à jour des serveurs partagés par des milliers de sites prend du temps. Pendant ce temps, ses clients ne pouvaient qu'attendre.

Et les logiciels de gestion ?

La question vaut aussi pour les outils en ligne qui gèrent vos devis et vos factures. Beaucoup sont construits en PHP, un choix courant et éprouvé, que n'importe quel navigateur laisse voir. Deux cas sont à distinguer.

Le premier, c'est l'application elle-même, là où vivent les devis et les factures. Au 21 octobre 2026, les pages de connexion de Sellsy, d'Axonaut et d'Evoliz renvoyaient un cookie PHPSESSID, le nom de session par défaut de PHP. Ces applications faisaient donc partie du périmètre exposé jusqu'à la mise à jour de leurs serveurs.

Le second, c'est le site vitrine. Au 21 octobre 2026, ceux d'EBP, d'Indy, de Henrri, de Zervant et d'Evoliz fonctionnaient sous WordPress (visible dans le code source de leur page d'accueil). Une vitrine tourne en général à part, sans les données des clients. Dolibarr, logiciel libre écrit en PHP, dépend de celui qui l'installe.

Ce que montraient leurs pages publiques
Relevé du 21 octobre 2026 à 19 h 53, heure de Paris.
Outil;Site vitrine;Application;Source du constat
Sellsy;Pas WordPress;PHP;Cookie PHPSESSID;;Axonaut;Sans signe;PHP;Cookie PHPSESSID;;Evoliz;WordPress;PHP;Cookie et code source;;EBP;WordPress;Non observée;Code source;;Indy;WordPress;Sans signe;Code source;;Henrri;WordPress;Sans signe;Code source;;Zervant;WordPress;Sans signe;Code source;;Dolibarr (logiciel à installer);Sans objet;PHP;Code public du projet
À lire avec ces constatsIls reflètent les pages publiques du 21 octobre 2026 à 19 h 53, heure de Paris, et ne préjugent pas des correctifs appliqués depuis. Un site vitrine sous WordPress n'est pas l'application.

Cela ne veut pas dire que ces logiciels ont été piratés, ni qu'ils sont vulnérables aujourd'hui : leurs équipes ont très probablement mis à jour leurs serveurs dans la journée. Cela veut dire que, ce jour-là, leur protection dépendait, comme pour tout le monde, de la vitesse d'un maillon que leurs clients ne voient pas.

Chez nous, une journée calme

On le dit sobrement, parce que des services publics étaient hors ligne et que des équipes ont passé leur journée à éteindre des incendies. Meolya ne repose pas sur PHP, et il tourne sur nos propres serveurs. Le 21 octobre, nous n'avons rien eu à couper. Pas de mode maintenance, pas de mise à jour en urgence, aucune interruption pour nos utilisateurs. Notre chaîne de facturation électronique a elle aussi été épargnée par cette faille.

Cela ne rend pas Meolya inattaquable. Aucun logiciel ne l'est, et d'autres failles toucheront un jour d'autres briques, y compris celles que nous utilisons. La différence tient à la chaîne : le code, les serveurs et les choix techniques sont entre nos mains. Le jour où une brique que nous utilisons est touchée, c'est nous qui déployons le correctif sur nos serveurs, dès qu'il existe, sans attendre qu'un hébergeur mutualisé, un éditeur d'extension et un éditeur de thème fassent chacun leur part.

Ce que nous vous conseillons de faire

Si vous avez un site WordPress, une boutique en ligne ou un outil installé chez un hébergeur, voici les vérifications à faire cette semaine. Aucune ne demande de compétence technique.

Qui doit agir, et quand

QuiQuoiQuand
Votre hébergeurInstaller une version corrigée de PHPDès maintenant
Vous ou votre agenceVérifier la version, obtenir une confirmation datéeCette semaine
Vous, sur PHP 8.1 ou plus ancienMigrer vers une version suivieSans attendre
Vos éditeurs de logicielsDire s'ils étaient concernés, et quand ils ont corrigéÀ leur demander

1. Connaître votre version de PHP

Dans WordPress, ouvrez Outils, puis Santé du site, onglet Infos, rubrique Serveur : la version de PHP y est indiquée. Sinon, votre hébergeur ou votre agence vous la donnera. Les versions corrigées sont PHP 8.2.35, 8.3.36, 8.4.27 et 8.5.12, ou plus récentes dans la même branche.

2. Demander à votre hébergeur quand il a mis à jour

Une question écrite suffit : « Mon site tourne-t-il sur une version de PHP corrigée contre les failles CVE-2026-109618 et CVE-2026-109619, et depuis quand ? » Si la réponse tarde ou reste vague, c'est déjà une information utile.

3. Ne pas compter sur le mode maintenance

Il masque le site, il ne le protège pas. Si votre site ne peut pas être corrigé tout de suite, demandez à votre hébergeur de le mettre hors ligne, ou au minimum vérifiez qu'un pare-feu applicatif est actif devant lui.

4. Prévoir la montée de version si vous êtes sur PHP 8.1 ou plus ancien

Il n'y aura pas de nouvelle version officielle pour ces branches. Demandez le passage à une version suivie, en vérifiant que votre thème et vos extensions sont compatibles. C'est l'occasion de supprimer les extensions qui ne servent plus.

5. Renouveler les mots de passe sensibles, par prudence

Les failles permettaient de lire la mémoire du serveur. Si votre site est resté exposé avant d'être corrigé, renouvelez par prudence les mots de passe d'administration et les clés de connexion aux services tiers, comme le paiement en ligne. Votre prestataire saura lesquelles sont concernées.

6. Poser la même question à vos éditeurs de logiciels

Pour vos outils de gestion en ligne : étaient-ils concernés, qu'ont-ils fait ? Un éditeur qui connaît sa chaîne vous répondra simplement.

À cocher cette semaine
  • Je connais la version de PHP de mon site.
  • Mon hébergeur m'a confirmé par écrit le passage à une version corrigée, avec la date.
  • Je ne compte pas sur le mode maintenance pour me protéger.
  • Si mon site est sur PHP 8.1 ou plus ancien, la montée de version est planifiée.
  • Les mots de passe d'administration et les clés des services connectés ont été renouvelés.
  • J'ai posé la question à l'éditeur de chacun de mes outils de gestion en ligne.

À l'heure où nous écrivons, le 21 octobre ressemble davantage à une journée de coupures volontaires qu'à une vague de piratages, et c'est plutôt une bonne nouvelle : beaucoup d'organismes ont préféré débrancher plutôt que parier. La leçon dépasse PHP. Le jour où une brique très répandue tombe, il ne suffit pas d'être à jour. Il faut savoir qui tient chaque maillon de vos outils, et à quelle vitesse il peut agir.

Une question sur vos outils ?

Notre équipe vous répond, et vous pouvez réserver une démonstration de Meolya directement depuis notre site.

Réserver une démonstration

Sources

Faits connus au 21 octobre 2026 à 20 heures, heure de Paris. Cet article relate une actualité en cours : les chiffres, la chronologie et la liste des sites coupés peuvent encore évoluer. Il ne remplace pas un diagnostic de sécurité ; pour votre site, rapprochez-vous de votre hébergeur ou de votre prestataire.