Présentation
Des chercheurs de Sucuri ont identifié une nouvelle porte dérobée, baptisée SC, qui s’installe sur des sites WordPress et se reconstruit automatiquement après toute tentative de nettoyage. Le malware se propage dans au moins huit emplacements différents – fichiers, base de données et segment de mémoire partagée – créant ainsi un système circulaire sans point d’ancrage unique.
Mécanismes de persistance
Le premier vecteur est le fichier .user.ini, qui définit auto_prepend_file = 'c1b12371.php' et force l’inclusion d’un chargeur avant chaque requête PHP. Ce chargeur (wp-content/c1b12371.php) invoque un fichier caché .c1b12371.php qui, à son tour, localise un faux plugin et le recrée dans le répertoire mu-plugins à partir de trois sources : une copie existante, un stub encodé dans le cache et un bundle ZIP au nom hexadécimal aléatoire.
.user.ini
auto_prepend_file = 'c1b12371.php'
Le fichier wp-content/db.php contient le payload complet sous forme compressée et encodée en Base64. Lorsqu’il détecte l’absence du plugin ou une taille anormale, il le décodera et le redéploiera. De même, wp-content/advanced-cache.php se charge de la reconstruction à partir de cinq sources : un mu‑plugin, une copie plugin, un segment de mémoire partagée System V, un bundle ZIP et la base de données. Le segment partagé, identifié par une clé numérique fixe, réside en RAM et survit aux suppressions de fichiers et aux nettoyages de base de données, même lorsqu’il appartient à un compte différent sur un hébergement partagé.
Deux copies supplémentaires du même code malveillant sont disséminées dans le thème (wp-content/themes/khorshidi/functions.php) et dans les répertoires de plugins (wp-content/plugins/hyper-engine-kit/hyper-engine-kit.php et wp-content/mu-plugins/hyper-engine-kit.php). Cette redondance garantit que la suppression d’un composant déclenche immédiatement la régénération des autres.
Canaux de commande et capacités
Le backdoor utilise le blockchain Ethereum comme canal de commande‑et‑contrôle (C2), masquant les échanges légitimes dans le trafic blockchain. Il recueille les empreintes du site, crée un compte administrateur caché, télécharge et injecte du JavaScript malveillant (skimmers ou autres) et exécute du code PHP arbitraire. Le malware peut également désactiver ou supprimer des plugins ciblés, et il s’inscrit dans le système de cron de WordPress avec des hooks aux noms aléatoires, assurant une réinfection programmée même en l’absence de trafic visiteur.
Limites et contre‑mesures
Le vecteur d’infection initial reste inconnu, mais les auteurs évoquent les vecteurs classiques : vulnérabilités connues du cœur WordPress, des plugins ou des thèmes, identifiants faibles, attaques de chaîne d’approvisionnement et téléversements de fichiers non filtrés. La présence d’un segment de mémoire partagée rend les méthodes de nettoyage basées uniquement sur le disque inefficaces ; il faut purger la mémoire partagée via des outils système ou redémarrer le serveur. La suppression manuelle de chaque composant (fichiers, entrées DB, segments de mémoire) est fastidieuse et sujette à erreur. Une approche plus fiable consiste à restaurer le site à partir d’une sauvegarde propre, à désactiver les extensions non essentielles, à renforcer les permissions de fichiers et à surveiller les modifications de .user.ini et de auto_prepend_file. Enfin, la mise à jour immédiate du plugin wpForo (corrigé par le CVE‑2026‑1581) élimine un vecteur d’exploitation fréquent.