Des pirates ont acheté 30 extensions WordPress et y ont installé des portes dérobées, puis se sont cachés pendant 8 mois, en utilisant des contrats intelligents Ethereum pour contourner le blocage des domaines

ETH-2,72%
BTC-1,74%

En août 2025, un acheteur se présentant sous le nom « Kris » a dissimulé une bombe à retardement dans 191 lignes de code ; huit mois plus tard, elle a explosé, et les communications C2 ont contourné le blocage. Cet article est tiré d’un rapport de l’expert en sécurité Austin Ginder.
(Contexte : Impact de BTC : 75 000 $ ! ETH en reprise à 2400, Farms dit qu’il y a eu « de nombreux progrès » dans les négociations entre les États-Unis et l’Iran, deuxième session de négociations prévue pour le 16)
(Complément de contexte : Lettre publique du fondateur de Gate, Dr. Han, pour son 13e anniversaire : libérer la force du changement lors du passage de cycle)

Table des matières

Toggle

  • 191 lignes, une phrase « mise à jour de compatibilité »
  • wp-config.php a été injecté avec 6 Ko de code malveillant
  • Ce n’est pas la première fois, et ce ne sera pas la dernière
  • Un problème de procédure, pas un problème technique
  • WordPress.org a fermé plus de 30 extensions en une seule journée

Trente extensions, une période de latence de huit mois, et serveurs C2 mis à jour dynamiquement via des contrats intelligents Ethereum. Début avril 2026, WordPress.org a désactivé plus de 30 extensions en une seule journée de travail, pour un total d’installations se chiffrant à des millions. Et ce qui est encore plus sidérant, c’est que la porte dérobée était déjà en ligne dès le 8 août 2025, soit 243 jours avant sa découverte.

191 lignes, une phrase « mise à jour de compatibilité »

On remonte dans le temps jusqu’en 2015. L’équipe indienne de WP Online Support (rebaptisée plus tard Essential Plugin) a été fondée par trois personnes, dont Minesh Shah. En dix ans, elle a constitué une gamme de produits couvrant plus de 30 extensions. Fin 2024, les revenus avaient chuté de 35 à 45 % par rapport à leur pic, et l’équipe a choisi de mettre l’entreprise en vente sur Flippa.

L’acheteur est une personne dont le parcours s’étend au marketing SEO, à la crypto-monnaie et au marketing de jeux en ligne, qui se présente à l’extérieur sous le nom de « Kris ». Le 8 août 2025, la version 2.6.7 a été publiée, et le changelog ne mentionnait que ces quatre mots : « mise à jour de compatibilité ».

Le changement réel est le suivant : le fichier class-anylc-admin.php est passé de la ligne 473 à la ligne 664, avec l’ajout de 191 lignes de code de porte dérobée. C’est le premier commit de Kris sur SVN.

La porte dérobée n’a pas été activée immédiatement. Elle est restée en sommeil jusqu’au 5–6 avril 2026, puis a commencé la première phase : le module wpos-analytics envoie une requête de rappel à analytics.essentialplugin.com, téléchargeant un fichier nommé wp-comments-posts.php. Il imite volontairement wp-comments-post.php, celui du cœur WordPress, avec une lettre en moins.

wp-config.php injecté avec 6 Ko de code malveillant

Le 6 avril 2026 à 04:22 UTC, l’injection a démarré ; à 11:06 UTC, wp-config.php était déjà entièrement écrit sur les sites victimes du monde entier. En 6 heures et 44 minutes, aucune alerte au niveau des plateformes n’a été déclenchée.

Le code malveillant injecté fait deux choses : d’abord, il insère des liens sortants de spam, mais uniquement en fonction de l’agent utilisateur de Googlebot ; les pages vues par les visiteurs ordinaires et les administrateurs du site restent parfaitement normales. Ensuite, il ouvre un point de terminaison REST API non authentifié (permission_callback: __return_true), combiné avec une fonction PHP de désérialisation fetch_ver_info(), ce qui crée un chemin d’exécution à distance via appel de fonction arbitraire.

Cependant, le détail de conception le plus important à consigner ne se situe pas dans l’injection elle-même, mais dans la stratégie d’évitement de l’infrastructure C2 : les attaquants écrivent la logique de résolution des domaines de commande dans un contrat intelligent Ethereum ; la porte dérobée interroge alors les derniers points de destination via les nœuds RPC de la blockchain publique.

Les mécanismes classiques de cybersécurité comme les listes noires de domaines et le blocage DNS sont totalement inefficaces pour cette architecture. Les attaquants n’ont qu’à mettre à jour le contrat : le C2 de tous les sites infectés change de manière synchronisée, sans avoir besoin de toucher à aucun serveur contrôlé.

Ce n’est pas la première fois, et ce ne sera pas la dernière

En 2017, Daley Tias a acheté pour 15 000 dollars l’extension Display Widgets, avec 200 000 installations, et y a injecté des liens de spam de type prêt ; par la suite, l’incident a touché au moins 9 autres extensions. Après cet événement, WordPress.org n’a pas mis en place de mécanisme de vérification obligatoire pour le transfert de propriété des extensions ; il n’a pas non plus déclenché de contrôles manuels ou automatisés supplémentaires lors de la première soumission du nouveau committer ; et il n’a pas envoyé de notification aux utilisateurs existants installant l’extension, du type « l’extension a changé de propriétaire ».

Neuf ans plus tard, le processus était exactement le même. Kris a finalisé l’acquisition, a obtenu les droits de soumettre des commits SVN, et le premier commit était la porte dérobée : le tout, en conformité.

Un problème de procédure, pas un problème technique

Cet incident n’a utilisé aucune vulnérabilité zero-day. La qualité du code de la porte dérobée est médiocre ; dans les 191 lignes, il n’y a aucune technique d’obfuscation sophistiquée. Sa capacité à rester en sommeil pendant 243 jours ne repose pas sur des capacités techniques, mais sur l’absence complète, de la part de WordPress.org, de contrôles à l’occasion du changement de propriétaire dans le marketplace d’extensions.

L’analyse du domaine C2 via un contrat intelligent Ethereum ajoute bien une couche de conception qui mérite d’être discutée sur le plan technique, mais cela ne fait qu’augmenter la difficulté de suppression, sans être la cause qui a permis l’attaque. L’attaque a pu se produire parce que la plateforme autorise n’importe qui à acheter une extension, à pousser des mises à jour, sans avoir à expliquer à qui que ce soit en quoi « la mise à jour de compatibilité » du changelog est effectivement compatible avec quoi.

WordPress.org a désactivé plus de 30 extensions en une seule journée

Le 7 avril 2026, l’équipe des plugins de WordPress.org a désactivé définitivement toutes les extensions de l’auteur d’Essential Plugin. Au moins 30 plugins, tous fermés le même jour. Voici les extensions confirmées par Austin Ginder :

  • Accordion and Accordion Slider — accordion-and-accordion-slider
  • Album and Image Gallery Plus Lightbox — album-and-image-gallery-plus-lightbox
  • Audio Player with Playlist Ultimate — audio-player-with-playlist-ultimate
  • Blog Designer for Post and Widget — blog-designer-for-post-and-widget
  • Countdown Timer Ultimate — countdown-timer-ultimate
  • Featured Post Creative — featured-post-creative
  • Footer Mega Grid Columns — footer-mega-grid-columns
  • Hero Banner Ultimate — hero-banner-ultimate
  • HTML5 VideoGallery Plus Player — html5-videogallery-plus-player
  • Meta Slider and Carousel with Lightbox — meta-slider-and-carousel-with-lightbox
  • Popup Anything on Click — popup-anything-on-click
  • Portfolio and Projects — portfolio-and-projects
  • Post Category Image with Grid and Slider — post-category-image-with-grid-and-slider
  • Post Grid and Filter Ultimate — post-grid-and-filter-ultimate
  • Preloader for Website — preloader-for-website
  • Product Categories Designs for WooCommerce — product-categories-designs-for-woocommerce
  • Responsive WP FAQ with Category — sp-faq
  • SlidersPack – All in One Image Sliders — sliderspack-all-in-one-image-sliders
  • SP News And Widget — sp-news-and-widget
  • Styles for WP PageNavi – Addon — styles-for-wp-pagenavi-addon
  • Ticker Ultimate — ticker-ultimate
  • Timeline and History Slider — timeline-and-history-slider
  • Woo Product Slider and Carousel with Category — woo-product-slider-and-carousel-with-category
  • WP Blog and Widgets — wp-blog-and-widgets
  • WP Featured Content and Slider — wp-featured-content-and-slider
  • WP Logo Showcase Responsive Slider and Carousel — wp-logo-showcase-responsive-slider-slider
  • WP Responsive Recent Post Slider — wp-responsive-recent-post-slider
  • WP Slick Slider and Image Carousel — wp-slick-slider-and-image-carousel
  • WP Team Showcase and Slider — wp-team-showcase-and-slider
  • WP Testimonial with Widget — wp-testimonial-with-widget
  • WP Trending Post Slider and Widget — wp-trending-post-slider-and-widget

Avertissement : Les informations figurant sur cette page peuvent provenir de sources tierces et sont fournies à titre indicatif uniquement. Elles ne reflètent pas les points de vue ou opinions de Gate et ne constituent pas un conseil financier, d’investissement ou juridique. Le trading des actifs virtuels comporte des risques élevés. Veuillez ne pas vous fonder uniquement sur les informations de cette page pour prendre vos décisions. Pour en savoir plus, consultez l’avertissement.
Commentaire
0/400
Aucun commentaire