Un nouveau plugin malveillant déguisé en outil d’optimisation d’image cible actuellement les sites WordPress. Derrière le nom anodin WordPressImageOptimizer se cache un plugin malveillant conçu pour injecter du contenu malveillant et/ou rediriger les utilisateurs à l’aide d’un client Keitaro.
Ce type d’infection repose sur une mécanique bien rodée : abuser des fonctionnalités natives de WordPress pour injecter dynamiquement du code malveillant tout en échappant aux utilisateurs connectés et aux outils automatisés.
Un plugin factice à la charge bien réelle
Le plugin se présente comme un outil d’optimisation d’image :

Néanmoins, dès l’activation, plusieurs mécanismes permettent d’injecter dynamiquement du contenu HTML à destination des visiteurs non authentifiés, tout en évitant les robots ou les administrateurs.
Étape 1 – Injection via ob_start()
L’un des premiers indices d’activité malveillante est l’utilisation de la fonction ob_start() via le hook template_redirect. Ce mécanisme active une fonction spfiim_buffer_callback_new() qui injecte dynamiquement du code HTML dans la page.

Cette injection n’est active que pour les visiteurs non authentifiés sur des pages non techniques (wp-admin
, wp-login
, etc.) :
Étape 2 – Bypasser les robots & les utilisateurs connectés
Les fonctions spfiim_exclude_tech_pages() et spfiim_runModifiedClient_new() filtrent soigneusement les requêtes :
- Ignorance des robots (via une regex massive sur le
User-Agent
) ; - Ignorance des utilisateurs connectés (
wordpress_logged_in
ou rôle administrateur) ; - Filtrage des pages techniques (wp-admin, xmlrpc.php, wp-cron.php, etc.).
Ce ciblage permet à l’injection de n’affecter que les visiteurs potentiellement exploitables, tout en restant invisible pour les administrateurs du site.

Étape 3 – Chargement distant via Keitaro
Le cœur de l’infection repose sur une classe personnalisée nommée KClient
, implémentant un client Keitaro complet. Keitaro est une plateforme légitime utilisée pour la gestion de redirections et de campagnes marketing — mais ici, son usage est clairement détourné.
Le client est initialisé comme suit :

Le code lié à KClient
permet de :
- Collecter des informations (IP, User-Agent, Referrer, URI, etc.) ;
- Contacter le serveur distant (ici
http://xlbs.live/
) via POST ; - Récupèrer et injecte dynamiquement un contenu HTML/JS malveillant dans le site visité.
La redirection peut varier en fonction du profil de l’utilisateur, grâce à l’architecture de Keitaro.
Étape 4 – Injection dans plusieurs points du site
Pour maximiser l’exposition, le plugin injecte le contenu malveillant à trois endroits clés (wp_head, wp_footer et the_content) :

Ainsi, les visiteurs sont exposés, quel que soit le thème ou le type de page. En combinant ces points d’injection, l’attaquant garantit une surface d’exposition maximale.
Étape 5 – Persistance et furtivité
Le code est encapsulé dans une classe volumineuse (plusieurs centaines de lignes) et mêle des techniques d’obfuscation “logique” :
- Vérification des headers ;
- Sessions PHP personnalisées ;
- Cookies dynamiques ;
- Contrôle fin des entêtes HTTP et statuts (
ResponseExecutor
) ; - Gestion des erreurs CURL via exceptions spécifiques (
KClientError
).
Ce niveau de complexité rend l’analyse plus complexe pour des administrateurs non techniques.
Analyse des intentions
Le plugin sert de passerelle vers une charge utile dynamique, choisie à distance par l’attaquant. Dans le cadre de notre analyse, il s’agissait de l’injection d’une iframe proposant aux utilisateurs d’exécuter une charge Powershell :

Bien que le domaine distant xlbs.live soit inactif lors de l’analyse, le code du plugin révèle des mécanismes permettant la réception de charges polymorphes (base64, HTML, fichiers encodés) en fonction du content-type. Grâce à la gestion fine des entêtes, cookies, sessions et réponses JSON, ce plugin agit comme un loader secondaire complet.
Sa capacité à persister des charges dans la session, à les injecter dynamiquement dans les buffers de WordPress, et à opérer sans interaction utilisateur directe en fait un outil particulièrement dangereux, même après la disparition temporaire de son serveur de commande.
Recommandations de sécurité
- Supprimez immédiatement tout plugin inconnu ;
- Utilisez des plugins vérifiés sur le répertoire officiel WordPress uniquement ;
- Réinitialiser les mots de passe de l’ensemble des utilisateurs et vérifier les emails ;
- Activez l’authentification à double facteur (2FA) pour l’ensemble des utilisateurs ;
Conclusion
Le plugin WordPressImageOptimizer n’est pas ce qu’il prétend être. Ce plugin n’optimise aucune image – il optimise le contrôle de l’attaquant sur votre site. En usant d’injections conditionnelles, de clients tiers détournés, et de techniques d’évasion bien rodées, il s’inscrit dans la lignée des infections furtives ciblant WordPress.
Ce cas illustre une tendance croissante : l’utilisation de plugins factices comme vecteurs d’infection contrôlables à distance, avec un fort focus sur la discrétion, l’adaptabilité et la persistance.