Aller au contenu
SécuritéWP — Accueil
Sécurité WordPress

EssentialPlugin : plus de 20 plugins WordPress compromis par une attaque supply chain (avril 2026)

Publié le · Mis à jour le · 8 min de lecture· Par

EssentialPlugin : plus de 20 plugins WordPress compromis par une attaque supply chain (avril 2026)
Sommaire
  1. Ce qui s'est passé, en cinq dates
  2. Une porte dérobée déguisée en module d'analyse
  3. Ce que la charge malveillante a fait sur les sites touchés
  4. Les extensions concernées
  5. Pourquoi la mise à jour forcée ne suffit pas
  6. Que faire maintenant
  7. Ce que cet incident change dans le choix d'une extension
  8. Ce qui reste incertain
  9. Sources
  10. Questions fréquentes
  11. Questions fréquentes

En avril 2026, plus de vingt extensions gratuites du vendeur EssentialPlugin (anciennement WP Online Support), installées sur près de 200 000 sites d'après les compteurs du répertoire WordPress.org, ont activé une porte dérobée cachée dans leur code depuis l'été 2025. Personne n'a piraté l'éditeur : c'est l'acquéreur du catalogue qui l'a plantée lui-même, quelques semaines après le rachat. Voici ce qui est établi, ce qui ne l'est pas, et ce qu'un administrateur de site doit vérifier aujourd'hui.

Ce qui s'est passé, en cinq dates

  • 2025 : le catalogue EssentialPlugin (31 extensions publiées depuis 2015) est vendu sur la place de marché Flippa à un acheteur présenté sous le prénom « Kris », pour une somme à six chiffres.
  • 8 août 2025 : la version 2.6.7 de Countdown Timer Ultimate ajoute 191 lignes au fichier class-anylc-admin.php du module « wpos-analytics », sous le message anodin « Check compatibility with WordPress version 6.8.2 ». Patchstack date la diffusion de ce même code aux autres extensions de septembre 2025.
  • 5 et 6 avril 2026 : le serveur analytics.essentialplugin.com commence à renvoyer une charge malveillante. Sur les sites qu'il héberge, Anchor Hosting mesure une fenêtre d'activation d'environ 6 h 44 entre deux sauvegardes.
  • 7 avril 2026 : l'équipe de revue des extensions de WordPress.org ferme définitivement les 31 extensions du compte et pousse une mise à jour de sécurité forcée (numéro de version terminé par « .1 », par exemple Countdown Timer Ultimate 2.6.9.1 le 8 avril).
  • 13 et 15 avril 2026 : WPScan publie la fiche CVE-2026-6443 (« Multiple Plugins by Essential Plugin – Backdoor ») ; Patchstack publie son analyse technique. Le 21 mai, WordPress.com détaille sa propre réponse : plus de 2 200 sites touchés sur sa seule plateforme.

Une porte dérobée déguisée en module d'analyse

Le code ajouté ne ressemble pas à un malware classique. Il vit dans le module de télémétrie de ces extensions et s'articule en trois pièces qui, prises séparément, passent pour de la maladresse.

  1. Une route REST ouverte à tous. La fonction wpos_rest_api_init() enregistre un point d'entrée <slug-du-plugin>/v1/analytics/ accessible en POST sans authentification (permission_callback réglé sur __return_true).
  2. Un appel « maison » désérialisé sans contrôle. La méthode fetch_ver_info() télécharge une réponse depuis analytics.essentialplugin.com et la passe à unserialize(). C'est une injection d'objet PHP : le serveur distant décide quels objets seront instanciés sur votre site.
  3. Une chaîne de gadgets prête à l'emploi. La classe Wpos_Anylc_Admin contient les méthodes nécessaires pour que cette désérialisation aboutisse à un file_put_contents() : écriture d'un fichier arbitraire, donc exécution de code à distance.

Tant que le serveur renvoyait des données inoffensives, rien ne se passait. Pendant huit mois, aucun scanner n'a levé d'alerte : le code était publié sur le dépôt officiel et distribué par les mises à jour automatiques. C'est la définition même d'une attaque par la chaîne d'approvisionnement : on ne force pas la porte, on livre la clé avec le meuble.

Ce que la charge malveillante a fait sur les sites touchés

Les analyses d'Anchor Hosting, de Patchstack et de mySites.guru convergent sur les mêmes traces :

  • un fichier wp-comments-posts.php déposé à la racine du site, dont le nom imite à une lettre près le fichier légitime wp-comments-post.php ;
  • environ 6 Ko de PHP injectés dans wp-config.php, qui passe typiquement de 3,3 Ko à 9,5 Ko ;
  • du spam SEO servi uniquement à Googlebot (pages et liens cachés, redirections), invisible pour le propriétaire qui consulte son site ;
  • une résolution de secours des serveurs de commande via un contrat intelligent Ethereum, pour survivre au blocage du domaine principal.

Aucun vol de base de données ni création de compte administrateur n'a été documenté publiquement. Mais une écriture de fichier arbitraire permet tout cela : d'où la vérification manuelle décrite plus bas.

Les extensions concernées

La fiche CVE-2026-6443 de WPScan liste 22 extensions gratuites corrigées par la mise à jour forcée, plus trois versions « Pro » vendues hors répertoire pour lesquelles aucun correctif n'existe. Les installations actives sont celles relevées par Patchstack au moment de la fermeture.

Extension (slug)Installations activesVersion corrigée
wp-logo-showcase-responsive-slider-slider30 000+3.8.7.1
popup-anything-on-click30 000+2.9.1.1
countdown-timer-ultimate20 000+2.6.9.1
wp-responsive-recent-post-slider20 000+3.7.1.1
sp-news-and-widget10 000+5.0.6.1
wp-slick-slider-and-image-carousel10 000+3.7.8.1
album-and-image-gallery-plus-lightbox9 000+2.1.8.1
wp-testimonial-with-widget9 000+3.5.6.1
wp-blog-and-widgets8 000+2.6.6.1
timeline-and-history-slider5 000+2.4.5.1
post-grid-and-filter-ultimate5 000+1.7.4.1
meta-slider-and-carousel-with-lightbox5 000+2.0.8.1
sp-faq4 000+3.9.5.1
blog-designer-for-post-and-widget4 000+2.7.7.1
accordion-and-accordion-slider2 000+1.4.6.1
wp-team-showcase-and-slider2 000+2.8.6.1
wp-trending-post-slider-and-widget2 000+1.8.6.1
featured-post-creative1 000+1.5.7.1
portfolio-and-projects1 000+1.5.6.1
wp-featured-content-and-slider1 000+1.7.6.1
ticker-ultimate1 000+1.7.6.1
html5-videogallery-plus-player1 000+2.8.7.1
countdown-timer-ultimate-pro, wp-logo-showcase-responsive-slider-pro, product-categories-designs-for-woo-pronon publiéaucune

Additionnés, ces compteurs dépassent 180 000 installations actives : c'est l'origine du chiffre « 200 000 sites » repris par la presse. Certaines sources avancent 400 000 installations ; nous n'avons pas pu vérifier ce total. Et une installation n'est pas un site compromis : seuls les sites dont l'extension a appelé le serveur pendant la fenêtre d'activation ont reçu la charge.

Pourquoi la mise à jour forcée ne suffit pas

La mise à jour « .1 » poussée par WordPress.org fait une seule chose : elle neutralise l'appel vers analytics.essentialplugin.com (un return; en tête des fonctions concernées, ou le code mis en commentaire). Elle ne retire pas le fichier wp-comments-posts.php, ne nettoie pas wp-config.php, ne supprime pas le spam déjà indexé. Un site infecté le 5 avril et mis à jour le 8 reste infecté. Et comme les extensions sont fermées, elles ne recevront plus aucun correctif, y compris pour des failles ordinaires découvertes plus tard.

Que faire maintenant

  1. Inventoriez. Dans Extensions › Extensions installées, cherchez l'auteur « Essential Plugin » ou « WP OnlineSupport », ou lancez wp plugin list --fields=name,version et comparez avec la liste ci-dessus, sites de test compris.
  2. Cherchez les traces, même si la version est déjà « .1 ». Un fichier wp-comments-posts.php à la racine ; un wp-config.php anormalement lourd (plus de 5 Ko) ou contenant du code encodé en base64 ; les chaînes analytics.essentialplugin.com et wpos-analytics dans wp-content. Vérifiez aussi la Search Console : pages inconnues, avertissement « site piraté », requêtes en japonais ou pharmaceutiques.
  3. Retirez les extensions. Ne vous contentez pas de les désactiver : supprimez-les et remplacez-les par des équivalents maintenus. Les versions Pro n'ont pas de correctif du tout.
  4. Si une trace est positive, traitez le site comme compromis. Restaurez une sauvegarde antérieure au 5 avril 2026 si vous en avez une propre, sinon nettoyez fichier par fichier : wp-config.php, racine, mu-plugins, thèmes, uploads, tâches cron. C'est exactement le périmètre d'une suppression de virus WordPress : si vous n'êtes pas à l'aise avec ces manipulations, faites-la réaliser plutôt que de laisser une porte ouverte.
  5. Changez tout ce qui a pu être lu. Le code s'exécutait avec les droits du site, donc avec accès à wp-config.php : mot de passe de base de données, clés de sécurité et salts, comptes administrateurs, clés d'API et identifiants FTP.
  6. Bloquez et surveillez. Interdisez en sortie le domaine analytics.essentialplugin.com au niveau du serveur ou du pare-feu, mettez en place une surveillance d'intégrité des fichiers, puis demandez un réexamen à Google si le site a été signalé.

Vous hésitez sur l'état réel de votre site ? Un audit de sécurité tranche la question en quelques heures, journal des accès et fichiers à l'appui.

Ce que cet incident change dans le choix d'une extension

Ce n'est pas la première fois qu'un rachat sert de vecteur : en 2017, Display Widgets avait été acheté puis piégé de la même manière. La nouveauté, c'est l'échelle (31 extensions d'un coup) et la patience : huit mois de sommeil pour gagner la confiance des mises à jour automatiques.

  • Un changement de propriétaire est une alerte à traiter comme une faille. Le nom de l'auteur sur WordPress.org, le site de l'éditeur et le ton du changelog sont des signaux faibles mais lisibles.
  • Une extension qui « appelle la maison » sans raison fonctionnelle (télémétrie sur une version gratuite) mérite d'être remplacée.
  • Les mises à jour automatiques restent recommandées : elles ont aussi servi à neutraliser le code le 7 avril. À condition d'y ajouter une surveillance des fichiers et une sauvegarde externalisée.

Ce qui reste incertain

  • Le nombre réel de sites infectés : plus de 2 200 chez WordPress.com, aucun chiffre global fiable ailleurs. Les « 20 000 sites » ou « 400 000 installations » cités par certains médias ne sont pas sourcés.
  • La date d'implantation : 8 août 2025 pour Countdown Timer Ultimate selon Anchor Hosting, septembre 2025 pour la vague principale selon Patchstack. Les deux sont compatibles.
  • L'identité de l'acquéreur et d'éventuels complices : aucune procédure judiciaire n'a été rendue publique.
  • Le périmètre exact : 22 extensions gratuites et 3 versions Pro portent le code confirmé ; pour les autres fermetures, la présence du code n'a pas été détaillée.

Sources

Questions fréquentes

Mon site utilise un plugin EssentialPlugin mis à jour en version « .1 » : suis-je tiré d'affaire ?

Pas forcément. La mise à jour forcée du 7 avril 2026 coupe l'appel vers le serveur malveillant, mais elle ne nettoie rien de ce qui a été déposé avant. Vérifiez la racine du site (fichier wp-comments-posts.php), la taille et le contenu de wp-config.php, puis supprimez l'extension : elle est fermée et ne recevra plus de correctif.

Comment savoir si mon site a été infecté par la porte dérobée EssentialPlugin ?

Trois traces sont documentées : un fichier wp-comments-posts.php à la racine, environ 6 Ko de code inconnu dans wp-config.php, et des pages de spam visibles uniquement par Googlebot (contrôlez la Search Console et une recherche « site:votredomaine »). Si l'une d'elles est présente, considérez le site comme compromis et nettoyez-le intégralement.

Existe-t-il un numéro CVE pour cette attaque ?

Oui : WPScan a publié le 13 avril 2026 la fiche CVE-2026-6443, qui couvre 22 extensions gratuites corrigées et 3 versions Pro sans correctif. Les articles des premiers jours qui indiquent « pas de CVE » sont antérieurs à cette publication.

Par quoi remplacer les extensions EssentialPlugin fermées ?

Il n'existe pas de remplaçant officiel. Choisissez, pour chaque fonction (slider, popup, FAQ, galerie), une extension maintenue par un éditeur identifié, mise à jour récemment et sans changement de propriétaire. Si un bloc natif de l'éditeur WordPress fait le travail, c'est encore mieux : moins d'extensions, moins de surface d'attaque.

Votre site est touché ?

Nous intervenons sur les sites WordPress piratés, nettoyage et sécurisation compris. Décrivez votre situation, nous vous répondons.

À lire aussi