6 points par GN⁺ 16 일 전 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • 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-analytics du plugin se connectait à analytics.essentialplugin.com pour télécharger le fichier wp-comments-posts.php, qui servait ensuite à effectuer une injection massive de code PHP dans wp-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.php restait 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.php a é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é
    1. fetch_ver_info() traite avec @unserialize() les données venant du serveur de l’attaquant
    2. version_info_clean() exécute le nom de fonction reçu dans les données distantes
    3. 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.com a 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.com renvoie 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-analytics lui-même était toujours présent
  • 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 -patched au 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ête Version:, puis recompresser le plugin
  • Installer avec wp plugin install your-plugin-patched.zip --force
  • Si la taille du fichier wp-config.php a 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.

Aucun commentaire pour le moment.