🔍 Contexte

Article publié le 9 avril 2026 par Austin Ginder sur anchor.host. Il s’agit d’un post-mortem technique détaillé d’une attaque de chaîne d’approvisionnement ciblant l’écosystème WordPress, découverte suite à une alerte client sur un plugin nommé Countdown Timer Ultimate.

🎯 Nature de l’attaque

Un acheteur identifié uniquement comme « Kris », avec un profil en SEO, crypto et marketing de jeux d’argent en ligne, a acquis début 2025 via la marketplace Flippa le portefeuille de 31 plugins WordPress de la société « Essential Plugin » (anciennement WP Online Support) pour un montant à six chiffres. Dès son premier commit SVN le 8 août 2025, il a introduit un backdoor PHP par désérialisation dans le fichier class-anylc-admin.php du plugin Countdown Timer Ultimate (version 2.6.7), en mentant dans le changelog (« Check compatibility with WordPress version 6.8.2 »).

🛠️ Mécanisme technique

Le backdoor repose sur trois composants :

  • Une méthode fetch_ver_info() appelant file_get_contents() vers un serveur attaquant et passant la réponse à @unserialize()
  • Une méthode version_info_clean() exécutant @$clean($this->version_cache, $this->changelog) avec des valeurs contrôlées par le serveur distant (appel de fonction arbitraire)
  • Un endpoint REST API non authentifié avec permission_callback: __return_true

Le module malveillant wpos-analytics a servi de vecteur de phone-home vers analytics.essentialplugin.com, téléchargeant un fichier backdoor nommé wp-comments-posts.php (imitant le fichier légitime wp-comments-post.php), puis injectant un bloc PHP massif dans wp-config.php.

🔗 Infrastructure C2 via blockchain Ethereum

L’élément le plus sophistiqué : le code injecté dans wp-config.php résolvait son domaine C2 via un smart contract Ethereum, en interrogeant des endpoints RPC publics de la blockchain. Ce mécanisme rend les takedowns de domaine traditionnels inefficaces, l’attaquant pouvant mettre à jour le contrat pour pointer vers un nouveau domaine à tout moment.

📅 Chronologie

  • Février 2015 : Enregistrement de wponlinesupport.com
  • Octobre 2016 : Publication de Countdown Timer Ultimate sur WordPress.org
  • Août 2021 : Rebranding en Essential Plugin, enregistrement d’essentialplugin.com
  • Fin 2024 : Baisse de revenus 35-45%, mise en vente sur Flippa
  • Début 2025 : Acquisition par « Kris » pour six chiffres
  • 12 mai 2025 : Création du compte WordPress.org « essentialplugin »
  • 8 août 2025 : Premier commit malveillant — backdoor RCE planté (v2.6.7)
  • 30 août 2025 : WHOIS d’essentialplugin.com mis à jour au nom de « Kim Schmidt » à Zurich, avec adresse ProtonMail
  • 5-6 avril 2026 : Activation du backdoor — analytics.essentialplugin.com distribue des payloads malveillants
  • 6 avril 2026, entre 04:22 et 11:06 UTC : Injection dans wp-config.php (fichier passant de 3 345 à 9 540 octets)
  • 7 avril 2026 : WordPress.org ferme définitivement les 31 plugins en une seule journée
  • 8 avril 2026 : Mise à jour forcée vers v2.6.9.1 (neutralisation partielle du phone-home, sans nettoyage de wp-config.php)

💥 Impact

  • 31 plugins fermés définitivement par WordPress.org
  • Payload actif : injection de spam SEO, redirections et fausses pages visibles uniquement par Googlebot
  • Le backdoor était dormant depuis 8 mois avant activation
  • La mise à jour forcée v2.6.9.1 n’a pas nettoyé wp-config.php, laissant le spam SEO actif

📋 Liste partielle des plugins compromis

Accordion and Accordion Slider, Album and Image Gallery Plus Lightbox, Audio Player with Playlist Ultimate, Blog Designer for Post and Widget, Countdown Timer Ultimate, Featured Post Creative, Footer Mega Grid Columns, Hero Banner Ultimate, HTML5 VideoGallery Plus Player, Meta Slider and Carousel with Lightbox, Popup Anything on Click, Portfolio and Projects, Post Category Image with Grid and Slider, Post Grid and Filter Ultimate, Preloader for Website, Product Categories Designs for WooCommerce, Responsive WP FAQ with Category (sp-faq), SlidersPack, SP News And Widget, Styles for WP PageNavi Addon, Ticker Ultimate, Timeline and History Slider, Woo Product Slider and Carousel with Category, WP Blog and Widgets, WP Featured Content and Slider, WP Logo Showcase Responsive Slider and Carousel, WP Responsive Recent Post Slider, WP Slick Slider and Image Carousel, WP Team Showcase and Slider, WP Testimonial with Widget, WP Trending Post Slider and Widget

📰 Nature de l’article

Post-mortem technique et rapport d’incident détaillé, rédigé par un professionnel ayant directement investigué l’attaque sur des sites clients. But principal : documenter la chaîne d’attaque complète, fournir des indicateurs de compromission et des versions patchées des plugins affectés.

🧠 TTPs et IOCs détectés

Acteurs de menace

  • Kris (alias inconnu) (cybercriminal) —

TTP

  • T1195.002 — Supply Chain Compromise: Compromise Software Supply Chain (Initial Access)
  • T1505.001 — Server Software Component: SQL Stored Procedures (Persistence)
  • T1059.004 — Command and Scripting Interpreter: Unix Shell (Execution)
  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1102 — Web Service (Command and Control)
  • T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
  • T1036.005 — Masquerading: Match Legitimate Name or Location (Defense Evasion)
  • T1112 — Modify Registry (Defense Evasion)
  • T1608.001 — Stage Capabilities: Upload Malware (Resource Development)
  • T1176 — Browser Extensions (Persistence)

IOC

  • Domaines : analytics.essentialplugin.comVT · URLhaus · ThreatFox
  • Fichiers : wp-comments-posts.php
  • Fichiers : class-anylc-admin.php
  • Chemins : /wp-config.php
  • Chemins : /wp-content/plugins/countdown-timer-ultimate/wpos-analytics/

Malware / Outils

  • wpos-analytics backdoor module (backdoor)
  • wp-comments-posts.php (backdoor)

🟡 Indice de vérification factuelle : 55/100 (moyenne)

  • ⬜ anchor.host — source non référencée (0pts)
  • ✅ 12562 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 5 IOCs (IPs/domaines/CVEs) (10pts)
  • ⬜ 0/1 IOCs confirmés externellement (0pts)
  • ✅ 10 TTPs MITRE identifiées (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ✅ acteur(s) identifié(s) : Kris (alias inconnu) (5pts)
  • ⬜ pas de CVE à vérifier (0pts)

🔗 Source originale : https://anchor.host/someone-bought-30-wordpress-plugins-and-planted-a-backdoor-in-all-of-them/