Aller au contenu

CVE-2026-6443 : Attaque par chaîne d'approvisionnement contre les plugins WordPress Essential Plugin

La vulnérabilité provient d’une acquisition malveillante du portefeuille “Essential Plugin”. Le nouveau propriétaire a injecté une porte dérobée (backdoor) permettant l’appel arbitraire de fonctions dans le module wpos-analytics présent dans plus de 30 plugins WordPress.

Composants clés de la porte dérobée :

  • fetch_ver_info() : Appelle file_get_contents() sur un serveur malveillant, puis exécute @unserialize() sur la réponse.
  • version_info_clean() : Exécute du code arbitraire en utilisant des valeurs provenant des données distantes désérialisées.
  • Endpoint API REST non authentifié : Utilise permission_callback: __return_true.

Le mécanisme de communication vers le serveur de contrôle (C2) se connecte à analytics.essentialplugin.com pour télécharger un fichier nommé wp-comments-posts.php (masqué en wp-comments-post.php), qui injecte ensuite du code PHP dans wp-config.php.

  • Payload : Code PHP injecté dans wp-config.php servant des liens de spam et des redirections, cachés aux administrateurs du site en ne ciblant que Googlebot.
  • Mécanisme C2 : Utilise un contrat intelligent Ethereum résolu via des endpoints RPC publics de blockchain pour contrer les saisies de domaine traditionnelles.
  • Chronologie : Implanté en août 2025, le code est resté dormant pendant 8 mois avant d’être activé en avril 2026.

Système de fichiers

  • wp-comments-posts.php (Noter le pluriel ‘posts’).
  • wp-config.php : augmentation anormale d’environ 6 Ko.
  • Présence du répertoire wpos-analytics/.

Réseau

  • Trafic vers analytics.essentialplugin.com.
  • Requêtes inhabituelles résolvant des adresses Ethereum ou des contrats intelligents.
title: Potential WordPress Essential Plugin Supply Chain Attack
description: Detects malicious activity related to the Essential Plugin backdoor injection.
status: experimental
logsource:
category: web_server
product: wordpress
detection:
selection:
url|contains: '/wp-comments-posts.php'
condition: selection
level: critical
WebLogs
| where RequestPath contains "wp-comments-posts.php"
| summarize count() by ClientIP, UserAgent
| order by count_ desc
  1. Identifier tous les slugs de plugins affectés.
  2. Supprimer le répertoire wpos-analytics/ de chaque plugin.
  3. Nettoyer le fichier wp-config.php de tout code PHP injecté (généralement ajouté après la ligne require_once ABSPATH . 'wp-settings.php';).
  4. Effectuer un audit complet du site et réinitialiser les identifiants.