Faille Ninja Forms : des portes dérobées sur WordPress
Des attaquants exploitent des failles de type cross-site scripting stocké (XSS) dans deux extensions WordPress, Ninja Forms et WPC Product Bundles for WooCommerce, pour créer des comptes administrateur illégitimes et installer des portes dérobées sur les sites compromis, selon Patchstack.
Les deux extensions n'ont aucun lien entre elles, mais les attaques semblent provenir de la même source. Dans les deux cas, le même code JavaScript malveillant était servi depuis le domaine imgcdn1[.]com.
Deux extensions, une seule charge utile
Ninja Forms permet aux propriétaires de sites de créer des formulaires personnalisés sans écrire de code. L'extension tourne sur plus de 500 000 sites WordPress. WPC Product Bundles for WooCommerce, qui regroupe des produits en lots pour les boutiques en ligne, est active sur plus de 30 000 sites.
Les failles sont référencées sous les identifiants suivants :
- CVE-2026-94504, qui touche Ninja Forms 3.15.3 et les versions antérieures
- CVE-2026-93836, qui touche WPC Product Bundles for WooCommerce 8.6.6 et les versions antérieures
Les deux sont classées de gravité élevée, et toutes deux nécessitent une session authentifiée pour être exploitées.
Patchstack, une plateforme de sécurité spécialisée dans WordPress, a repéré la campagne pour la première fois le 4 octobre, alors qu'elle visait les utilisateurs de WPC Product Bundles. Le lendemain, la même activité est apparue contre Ninja Forms.
Comment fonctionne l'attaque
L'attaquant tente d'injecter un script malveillant, x.js, dans les données de commande WooCommerce ou dans les soumissions Ninja Forms. Rien ne se passe tant qu'un administrateur connecté n'ouvre pas ce contenu. À ce moment-là, le script s'exécute dans la session WordPress authentifiée de l'administrateur.
Le script récupère alors les nonces d'administration dont il a besoin et appelle des fonctions WordPress légitimes pour faire deux choses. Il installe une fausse extension baptisée "WP Smart Thumbnails" en version 1.2.4, attribuée à "MediaPress Labs", et il crée un nouveau compte administrateur.
À partir de là, le code JavaScript et les scripts PHP de l'extension mettent en place quatre accès distincts au site :
- un compte administrateur visible
- un compte administrateur masqué dans la liste des utilisateurs du tableau de bord
- une URL de connexion secrète qui identifie le visiteur comme le plus ancien administrateur existant du site
- un gestionnaire de fichiers qui ne demande aucune authentification et auquel on accède par une requête directe vers le fichier PHP principal de la fausse extension
Le gestionnaire de fichiers ne permet pas d'exécuter des commandes. Il peut en revanche servir à téléverser d'autres charges malveillantes.
Conçu pour résister au nettoyage
Supprimer WP Smart Thumbnails ne suffit pas. Le compte masqué et l'URL de connexion secrète continuent de fonctionner grâce à des extensions auxiliaires distinctes, dont les horodatages ont été antidatés pour ne pas attirer l'attention.
Selon Patchstack, l'administrateur masqué est pratiquement invisible pour le propriétaire du site. "Le compte [masqué] n'apparaît pas dans Users → All Users, n'apparaît pas dans le filtre Administrator et n'est pas comptabilisé dans les totaux au-dessus de la liste", ont expliqué les chercheurs. "C'est un administrateur disposant de tous les privilèges que le propriétaire du site ne peut pas voir."
Des correctifs disponibles
Pour l'instant, l'exploitation reste limitée, d'après Patchstack. Les propriétaires de sites doivent passer à Ninja Forms 3.15.4 ou ultérieure et à WPC Product Bundles for WooCommerce 8.6.7 ou ultérieure.
La mise à jour bouche la faille, mais elle ne supprime pas une infection déjà en place. Il est vivement conseillé aux administrateurs de rechercher des signes de compromission, notamment des extensions inconnues et des comptes administrateur qui pourraient ne pas apparaître dans la vue standard des utilisateurs.
Pourquoi c'est important
Cette campagne montre qu'une faille nécessitant une authentification peut malgré tout être dangereuse. Ici, l'attaquant n'a pas besoin d'identifiants administrateur au départ. Son plan repose sur un administrateur qui effectue des tâches courantes, comme consulter des commandes ou des entrées de formulaire, et le script malveillant s'approprie cette session.
La persistance à plusieurs niveaux mérite aussi qu'on s'y arrête. Avec quatre voies d'accès et des extensions auxiliaires conçues pour survivre à la porte dérobée principale, un nettoyage rapide risque fort de laisser passer quelque chose. Pour les propriétaires de sites, cela laisse penser que la remise en état doit être traitée comme une véritable réponse à incident, et non comme la simple suppression d'une extension.
La leçon principale est bien connue. Comme on l'a vu dans des cas où un correctif non appliqué a conduit à une fuite majeure, c'est dans l'intervalle entre la publication d'un correctif et son application que les attaquants opèrent, et cette fenêtre semble se réduire à mesure que l'exploitation s'accélère. Avec Ninja Forms installé sur plus d'un demi-million de sites, il faudra surveiller si cette activité reste limitée ou si elle se propage maintenant que la technique est rendue publique.
