Ce qui se passe
Gabriel Barbosa, chercheur chez Sucuri, a disséqué une compromission WordPress
dont la charge finale revient seule après chaque nettoyage, sans que
l'attaquant ait à réinfecter le site. La porte dérobée a été baptisée SC,
d'après les marqueurs SC_ qu'elle laisse dans le contenu injecté. Son code
ne porte aucun nom de fonction lisible : un décodeur le reconstitue à
l'exécution, par simple substitution de caractères.
Huit emplacements, chacun capable de rebâtir les autres
| Emplacement | Rôle |
|---|---|
.user.ini |
fixe auto_prepend_file : un chargeur passe avant chaque requête PHP de l'arborescence |
wp-content/c1b12371.php |
chargeur, qui inclut le fichier caché voisin s'il existe |
wp-content/.c1b12371.php |
premier étage : rebâtit l'extension dans mu-plugins depuis une copie dans plugins, une ébauche encodée dans le cache ou une archive ZIP au nom hexadécimal aléatoire |
wp-content/db.php |
chargé au démarrage, porte toute la charge compressée en Base64 et la redéploie si elle manque ou semble tronquée |
wp-content/advanced-cache.php |
chargé avant les extensions quand le cache est actif ; cinq sources de reconstruction, dont la base et la mémoire partagée |
wp-content/themes/khorshidi/functions.php |
jumeau de db.php, côté thème |
wp-content/mu-plugins/hyper-engine-kit.php |
la charge, en extension obligatoire |
wp-content/plugins/hyper-engine-kit/hyper-engine-kit.php |
la même, en extension classique |
Le segment de mémoire partagée System V est le maillon le plus sournois. Identifié par une clé numérique fixe, il vit en RAM : il survit à la suppression des fichiers comme au nettoyage de la base, et sur un hébergement mutualisé il peut appartenir à un autre compte. Des tâches cron, dont certaines aux noms aléatoires, relancent aussi le redéploiement à heure fixe, même sans visiteur.
Ce que l'attaquant obtient
Une fois active, la charge se masque de l'écran des extensions et des vérifications de mise à jour, crée un administrateur caché et prend ses ordres via la blockchain Ethereum. Elle peut ensuite injecter du JavaScript chez les visiteurs — un skimmer de paiement, par exemple —, exécuter du PHP arbitraire et désactiver ou supprimer des extensions.
Comment s'y prendre
On ignore encore comment SC entre. Les vecteurs habituels restent en tête de liste : faille d'extension ou de thème, mot de passe faible, extension compromise en amont, envoi de fichiers mal filtré.
find . -name '.user.ini' -exec grep -H auto_prepend_file {} \;
find wp-content -maxdepth 1 -name '.*.php'
ls -la wp-content/db.php wp-content/advanced-cache.php wp-content/mu-plugins/db.phpetadvanced-cache.phpsont aussi des drop-ins légitimes de certaines extensions de cache ou de base : comparer avec celle qui est censée les avoir posés.- Lister les comptes administrateurs et les événements cron de WordPress.
- Sur un serveur que vous administrez,
ipcs -mliste les segments de mémoire partagée ; sur un mutualisé, il faut passer par l'hébergeur. - Tout retirer dans la même opération : une copie oubliée rétablit les autres à la requête suivante.
wpForo, exploité en parallèle
L'extension de forum wpForo souffre d'une injection SQL sans authentification, CVE-2026-1581 (CVSS 7.5), sur toutes les versions jusqu'à la 2.4.14 incluse. D'après la télémétrie de Previdian, moins de 20 tentatives ont été vues depuis le 3 juillet 2026, depuis cinq adresses situées en Bulgarie, en Suisse, en France, aux États-Unis et au Yémen. Vérifiez que votre version est postérieure à la 2.4.14.
Source : WordPress Backdoor Rebuilds Itself After Cleanup Using Files, Database, and Shared Memory, The Hacker News, 1er octobre 2026, d'après l'analyse de Sucuri.