Quelqu’un a racheté 30 plugins WordPress et y a implanté une porte dérobée dans chacun d’eux
(anchor.host)- Le même attaquant a racheté plus de 30 plugins WordPress, puis a inséré du code de porte dérobée dès le premier commit, compromettant ainsi la chaîne d’approvisionnement
- Le code malveillant est resté dormant pendant environ 8 mois, avant de s’activer début avril 2026 pour injecter sur de nombreux sites des liens de spam et des redirections
- WordPress.org a fermé définitivement 31 plugins concernés en une seule journée, le 7 avril 2026, et a déployé des mises à jour forcées
- L’attaquant a acquis sur Flippa le portefeuille « Essential Plugin » pour un montant à six chiffres, puis a utilisé un smart contract Ethereum pour masquer le domaine C2
- Cet incident reproduit à grande échelle l’attaque de la chaîne d’approvisionnement observée en 2017 avec « Display Widgets » et met en lumière l’absence de gestion de la confiance dans l’écosystème des plugins WordPress
Cas d’attaque de la chaîne d’approvisionnement des plugins WordPress
- Plus de 30 plugins WordPress ont été rachetés par un même attaquant, puis piégés avec une porte dérobée
- L’attaquant a acheté sur Flippa le portefeuille « Essential Plugin » pour un montant à six chiffres, puis a ajouté du code malveillant dès le premier commit
- La porte dérobée est restée inactive pendant 8 mois avant de s’activer début avril 2026 et d’infecter un grand nombre de sites
- WordPress.org a fermé définitivement 31 plugins liés à l’incident en une seule journée, le 7 avril 2026
- L’incident est considéré comme une répétition du schéma d’attaque de la chaîne d’approvisionnement similaire à l’affaire « Display Widgets » de 2017
Découverte de l’attaque et réponse initiale
- La première infection a été confirmée via une alerte de sécurité dans wp-admin sur le site d’un client
- L’équipe des plugins WordPress.org a averti que le plugin « Countdown Timer Ultimate » contenait du code permettant un accès non autorisé
- WordPress.org a déployé une mise à jour forcée (v2.6.9.1), mais certains sites étaient déjà compromis
- L’audit de sécurité a montré que le module
wpos-analyticsdu plugin se connectait à analytics.essentialplugin.com pour télécharger le fichierwp-comments-posts.php, qui servait ensuite à effectuer une injection massive de code PHP danswp-config.php
Fonctionnement du malware
- Le code injecté récupérait depuis le serveur C2 des liens de spam, des redirections et de fausses pages, affichés uniquement à Googlebot
- L’attaquant utilisait un smart contract Ethereum pour gérer dynamiquement le domaine C2
- Le domaine était résolu via un endpoint RPC blockchain, ce qui le rendait impossible à bloquer avec un simple blocage de domaine
- La mise à jour forcée de WordPress.org n’a fait qu’interrompre la fonction de phone-home du plugin, tandis que le code malveillant dans
wp-config.phprestait en place
Traçage du moment de l’infection via l’analyse des sauvegardes
- À l’aide des sauvegardes restic de CaptainCore, la taille de 8 versions successives de
wp-config.phpa été comparée- Entre le 6 avril 2026 à 04:22 et 11:06 UTC, la taille du fichier est passée de 3 345 octets à 9 540 octets
- L’infection a donc été confirmée dans cet intervalle de 6 heures et 44 minutes
Moment d’insertion de la porte dérobée et structure du code
- Dans la version 2.6.7 du plugin (8 août 2025), 191 nouvelles lignes de code ont été ajoutées, marquant l’insertion de la porte dérobée
- Le journal des modifications indiquait « Compatibilité confirmée avec WordPress 6.8.2 »
- Fonctions principales du code ajouté
fetch_ver_info()traite avec@unserialize()les données venant du serveur de l’attaquantversion_info_clean()exécute le nom de fonction reçu dans les données distantes- Création d’un endpoint d’API REST appelable sans authentification (
permission_callback: __return_true)
- Cette structure permet une exécution arbitraire de fonctions (RCE) et est restée inactive pendant 8 mois avant d’être activée les 5 et 6 avril 2026
Processus de rachat des plugins
- L’équipe de développement d’origine était WP Online Support, basée en Inde, qui développait ces plugins depuis 2015
- Elle s’est ensuite rebaptisée Essential Plugin et exploitait plus de 30 plugins gratuits et payants
- Fin 2024, après une baisse de chiffre d’affaires de 35 à 45 %, l’entreprise a mis en vente l’ensemble de l’activité sur Flippa
- Début 2025, une personne nommée « Kris » a racheté l’ensemble, avec un passé dans le SEO, les cryptomonnaies et le marketing des jeux d’argent en ligne
- En juillet 2025, Flippa a présenté cette transaction comme une success story sur son blog
- Dès le premier commit SVN après le rachat (8 août 2025), le code de porte dérobée a été ajouté
- Les 5 et 6 avril 2026,
analytics.essentialplugin.coma commencé à distribuer la charge utile malveillante à tous les sites - Le 7 avril 2026, WordPress.org a fermé définitivement tous les plugins d’Essential Plugin (31 au total)
Liste des plugins fermés
- Accordion and Accordion Slider, Countdown Timer Ultimate, Popup Anything on Click, WP Blog and Widgets, WP Team Showcase and Slider et plus de 30 autres plugins
- Une recherche de cet auteur sur WordPress.org ne renvoie désormais aucun résultat
analytics.essentialplugin.comrenvoie actuellement la réponse{"message":"closed"}
Cas similaires dans le passé
- En 2017, une personne nommée « Daley Tias » a racheté le plugin Display Widgets (200 000 installations) pour 15 000 $, avant d’y injecter du code de spam
- Plus de 9 autres plugins ont ensuite été infectés de la même manière
- L’incident actuel est confirmé comme une reproduction de la même méthode, mais à une échelle plus importante (plus de 30 plugins)
Réparation des dégâts et travail de correctif
- La mise à jour forcée de WordPress.org n’était qu’une mesure temporaire
- Le module
wpos-analyticslui-même était toujours présent
- Le module
- Une version corrigée supprimant complètement le module de porte dérobée a été créée en interne
- Parmi 22 sites clients, des plugins Essential Plugin ont été trouvés sur 12 sites, et 10 ont été corrigés manuellement
- La version corrigée supprime le répertoire
wpos-analytics, retire la fonction de chargement et ajoute-patchedau numéro de version
- Exemples : Countdown Timer Ultimate, Popup Anything on Click, WP Testimonial with Widget
Méthode de correctif manuel
- Supprimer le répertoire
wpos-analytics/ - Retirer du fichier principal du plugin le bloc « Plugin Wpos Analytics Data Starts » ou le bloc
wpos_analytics_anl - Ajouter
-patchedà l’en-têteVersion:, puis recompresser le plugin - Installer avec
wp plugin install your-plugin-patched.zip --force - Si la taille du fichier
wp-config.phpa augmenté d’environ 6 Ko, il faut considérer le site comme activement infecté et procéder à une restauration complète
Problème de confiance dans l’écosystème des plugins WordPress
- Au cours des 2 dernières semaines, des attaques de la chaîne d’approvisionnement se sont succédé
- Rachat de plugins de confiance puis insertion de code malveillant
- Héritage direct des droits de commit sur WordPress.org et diffusion sans vérification supplémentaire
- WordPress.org ne dispose d’aucun mécanisme de surveillance des changements de propriété ni de réexamen du code
- Aucun avertissement utilisateur ni revue automatique lors de l’ajout d’un nouveau committer
- La réaction de l’équipe des plugins a été rapide, mais l’insertion de la porte dérobée est restée non détectée pendant 8 mois
- Les administrateurs de sites WordPress doivent vérifier la liste de leurs plugins, supprimer ou corriger immédiatement les plugins de la gamme Essential Plugin, et contrôler impérativement le fichier
wp-config.php
Aucun commentaire pour le moment.