# Une mise à jour d’extension a installé une porte dérobée

> On répète aux marchands de tout mettre à jour sans attendre. Il existe un cas, rare mais réel, où la mise à jour officielle est elle-même le vecteur : quand c’est la chaîne de distribution de l’éditeur qui a été compromise.

- Source canonique : [https://allaux.fr/securite/mise-a-jour-d-extension-piegee](https://allaux.fr/securite/mise-a-jour-d-extension-piegee)
- Langue : FR
- Dernière mise à jour : 2026-08-03

## Réponse directe

> Comparez la version installée de chaque extension concernée à la liste des versions piégées, puis cherchez un fichier LicenseLoader.php dans l’arborescence de l’extension : il n’appartient pas à son code d’origine. Vérifiez aussi la liste des extensions à la recherche d’une entrée que vous n’avez jamais installée. Passer à la version corrigée ne suffit pas : les secrets lus dans wp-config.php doivent être régénérés.

## Une mise à jour installée depuis le canal de l’éditeur

En juin 2026, l’infrastructure de compilation et de distribution d’un éditeur d’extensions WordPress a été compromise. Les marchands touchés n’ont rien fait de travers : ils ont mis à jour des extensions payantes depuis le canal officiel de cet éditeur, et ce sont ces paquets-là qui embarquaient une porte dérobée.

Les versions piégées sont Product Slider Pro for WooCommerce 3.5.2, Real Testimonials Pro 3.2.4 et 3.2.5, et Smart Post Show Pro 4.0.1. Les versions corrigées sont respectivement 3.5.3, 3.2.6 et 4.0.2. L’incident est suivi sous la référence CVE-2026-10735, avec un score CVSS de 9,8. La remédiation côté éditeur a commencé le 16 juin 2026 ; l’analyse publique, signée Wordfence, date du 22 juin 2026.

Un point de tri important : seules les versions Pro, distribuées par le canal de l’éditeur, étaient concernées. Les versions gratuites publiées sur le dépôt WordPress.org ne l’étaient pas. Si vous n’avez jamais acheté la version Pro de l’une de ces extensions, vous n’êtes pas dans le périmètre.

## La conclusion à ne surtout pas en tirer

Ce genre d’incident sert d’argument à ceux qui repoussent leurs mises à jour depuis des mois. C’est un contresens, et un contresens dangereux. Une compromission de chaîne de distribution est rare, elle porte sur un nombre restreint de versions identifiées, elle est détectée puis corrigée en quelques jours, et l’éditeur publie la liste exacte des paquets concernés.

Une extension laissée sans mise à jour, à l’inverse, reste exposée pendant des mois ou des années sur une faille dont la description est publique et pour laquelle un correctif existe déjà. La fenêtre d’exposition d’une mise à jour piégée se compte en jours et ne concerne que les sites qui ont installé la mauvaise version au mauvais moment. La fenêtre d’exposition d’un site qui ne met pas à jour est permanente, et elle s’ouvre à chaque nouvelle publication de faille.

Ce que cet incident change n’est donc pas la fréquence des mises à jour. C’est l’obligation de savoir précisément ce qui tourne sur le site, en quelle version, et depuis quelle date. Sans cet inventaire, on ne peut ni se rassurer ni se remédier : on ne sait pas répondre à la seule question qui compte, « est-ce que j’avais cette version-là, ce jour-là ».

## Ce qui permet de reconnaître ce cas après coup

- L’historique de mise à jour montre l’une des versions piégées installée avant le passage en version corrigée.
- Un fichier nommé LicenseLoader.php se trouve dans l’arborescence de l’extension, alors qu’il n’appartient pas à son code d’origine.
- Une extension se présentant comme « WooCommerce Subscription » apparaît dans la liste sans que vous l’ayez installée.
- Le fichier functions.php du thème actif contient un bloc de code chargeur qui lit une charge encodée en base64.
- Des comptes administrateurs que vous ne reconnaissez pas, ou dont la date de création ne correspond à aucune intervention.
- La configuration d’une extension d’envoi d’e-mail a changé sans que personne ne l’ait touchée.

## Ce qui doit être considéré comme compromis

La charge malveillante reposait sur un fichier chargeur nommé LicenseLoader.php. Elle extrayait le contenu complet de wp-config.php, les comptes administrateurs, les identifiants stockés par les extensions d’envoi d’e-mail — WP Mail SMTP, Post SMTP, Easy WP SMTP — et les commandes WooCommerce des trois derniers mois. Tout cela est sorti du site. Ce n’est pas une hypothèse à évaluer, c’est le point de départ du travail de remédiation.

Deux mécanismes de persistance ont été observés : une fausse extension se présentant comme « WooCommerce Subscription », et un code chargeur injecté dans le functions.php du thème actif, qui lit une charge encodée en base64. Mettre l’extension à jour ne retire ni l’un ni l’autre. La mise à jour vers la version corrigée n’est que la première étape, et c’est l’erreur la plus fréquente que je vois sur ce genre de dossier : on met à jour, on constate que l’alerte disparaît, on referme.

Pourquoi régénérer les secrets de double authentification

Changer les mots de passe ne suffit pas si le second facteur reste identique. Le secret partagé d’une application d’authentification est stocké du côté du site. S’il a pu être lu, il permet de produire des codes valides indéfiniment, y compris après le changement de mot de passe : le second facteur ne prouve plus rien, il ne fait que ralentir. Il faut donc révoquer et régénérer ces secrets compte par compte, ce qui implique de réenrôler chaque administrateur.

Le même raisonnement vaut pour les clés d’API et les jetons stockés par les extensions d’e-mail. Ils sont sortis du site, donc ils doivent être révoqués et réémis chez le fournisseur concerné, pas simplement retapés dans le formulaire de configuration. Un identifiant volé reste valide tant que personne ne l’a révoqué à la source.

## verification-fichiers.sh

```
# Fichiers PHP modifies recemment dans les extensions et les themes
find wp-content/plugins wp-content/themes -type f -name '*.php' -newermt 2026-06-01

# Recherche du fichier chargeur signale publiquement
find wp-content -type f -name 'LicenseLoader.php'
```

## L’ordre dans lequel je reprends la main

1. **Passer en version corrigée** — Product Slider Pro 3.5.3, Real Testimonials Pro 3.2.6, Smart Post Show Pro 4.0.2. Cette étape ferme le point d’entrée, elle ne retire rien de ce qui a été installé entre-temps.
2. **Supprimer les mécanismes de persistance** — La fausse extension « WooCommerce Subscription » et le code chargeur injecté dans le functions.php du thème actif. Tant qu’ils sont en place, tout le reste du travail est annulable à distance.
3. **Auditer les comptes administrateurs** — Comparer la liste des comptes à privilèges avec les personnes qui devraient réellement en avoir, et vérifier les dates de création et de dernière connexion.
4. **Réinitialiser tous les mots de passe** — Comptes d’administration, base de données, comptes FTP ou SFTP, accès à l’hébergement. Le contenu de wp-config.php est sorti du site, ce qui inclut les identifiants qui s’y trouvent.
5. **Révoquer et régénérer les secrets de double authentification** — Compte par compte, avec réenrôlement. Un mot de passe neuf associé à un ancien secret ne rétablit pas le second facteur.
6. **Révoquer les identifiants des extensions d’e-mail** — Côté fournisseur d’envoi, pas seulement dans la configuration du site. Puis relire cette configuration : une adresse d’expédition ou une redirection modifiée passe facilement inaperçue.
7. **Traiter la sortie des commandes comme une fuite de données personnelles** — Les commandes WooCommerce des trois derniers mois contiennent des données de vos clients. Cette partie du dossier se documente et s’évalue, elle ne se règle pas en changeant un mot de passe.

## Le cas inverse : le faux correctif reçu par e-mail

> Une compromission de chaîne de distribution est rare. Le scénario où le marchand installe lui-même l’extension malveillante l’est beaucoup moins. Une campagne d’hameçonnage documentée par Patchstack en avril 2025 imitait une alerte officielle WooCommerce, annonçait une faille inventée appelée « Unauthenticated Administrative Access » et invitait à télécharger un correctif ; le lien pointait vers un faux site utilisant une attaque homographe IDN, où un caractère accentué remplace une lettre du nom de domaine légitime. Le fichier téléchargé était une extension malveillante : comptes administrateurs aux noms aléatoires, masquage dans la liste des extensions, tâche WP-Cron exécutée chaque minute, webshells téléchargés. La règle à retenir est simple : ni WordPress ni WooCommerce ne demandent jamais de télécharger et d’installer manuellement un correctif. Les corrections passent par une nouvelle version publiée dans le canal officiel de mise à jour.

## Pour aller plus loin

- **Vérifier ses extensions avant une mise à jour** — Constituer l’inventaire des versions installées, celui qui permet de répondre après coup. ([/wordpress-woocommerce/mise-a-jour/verifier-extensions-avant-mise-a-jour](/wordpress-woocommerce/mise-a-jour/verifier-extensions-avant-mise-a-jour))
- **Un fichier inconnu sur le serveur** — Comment qualifier un fichier qui n’appartient ni au cœur, ni au thème, ni à l’extension. ([/securite/fichier-inconnu-sur-le-serveur](/securite/fichier-inconnu-sur-le-serveur))
- **Vérifier si mon site est compromis** — Les contrôles à passer quand vous soupçonnez une installation qui n’aurait pas dû avoir lieu. ([/securite/verifier-si-mon-site-est-compromis](/securite/verifier-si-mon-site-est-compromis))
- **Mots de passe et accès partagés** — Le sujet qui décide de la longueur de votre remédiation le jour où des identifiants sortent. ([/securite/mots-de-passe-administration-acces-partages](/securite/mots-de-passe-administration-acces-partages))

## FAQ

### Comment savoir quelle version d’une extension était installée le mois dernier ?

Par les sauvegardes, qui contiennent le fichier d’en-tête de l’extension avec son numéro de version, et par les journaux de mise à jour du site. C’est précisément pour ces moments-là que je tiens un inventaire des versions et de leurs dates d’installation.

### J’utilise la version gratuite, suis-je concerné ?

Non. Seules les versions Pro distribuées par le canal de l’éditeur étaient concernées. Les versions gratuites publiées sur le dépôt WordPress.org ne l’étaient pas.

### J’ai installé la version corrigée, le dossier est-il clos ?

Non. La mise à jour ferme le point d’entrée mais ne retire pas la fausse extension ni le code chargeur injecté dans le thème actif, et elle ne change rien au fait que des identifiants sont sortis du site.

### Est-ce qu’une restauration de sauvegarde règle le problème ?

Partiellement, et à condition de restaurer un état antérieur à l’installation de la version piégée. Une sauvegarde postérieure contient la porte dérobée. Et dans tous les cas, restaurer des fichiers ne révoque pas des identifiants déjà exfiltrés.

### Dois-je prévenir mes clients ?

Les commandes WooCommerce des trois derniers mois faisaient partie de ce qui a été extrait, donc des données personnelles de clients sont concernées. Cette partie s’analyse et se documente comme une violation de données, indépendamment du nettoyage technique.

### Faut-il arrêter d’acheter des extensions hors dépôt officiel ?

Non, mais il faut les suivre autrement. Une extension payante se met à jour depuis le canal de son éditeur, sans passer par le dépôt officiel : c’est à vous de noter la version installée, sa date, et de suivre les annonces de sécurité de cet éditeur.
