Pourquoi les plugins sont le maillon faible de WordPress
WordPress alimente plus de 40 % du web mondial. Sa force, c'est son écosystème de plugins : plus de 60 000 extensions disponibles sur le répertoire officiel, et des dizaines de milliers d'autres distribuées via des marketplaces ou directement par les développeurs. Mais cette richesse fonctionnelle a un prix : chaque plugin ajouté est un point d'entrée potentiel pour un attaquant.
En 2025, la base de données WPScan a enregistré plus de 5 200 vulnérabilités dans les plugins WordPress. La majorité de ces failles sont découvertes par des chercheurs en sécurité, mais un nombre significatif est exploité avant même qu'un correctif ne soit disponible.
Un plugin n'est pas un simple ajout fonctionnel. C'est du code tiers qui s'exécute avec les mêmes privilèges que WordPress lui-même, avec un accès complet à votre base de données et à votre système de fichiers.
Les types de failles les plus courantes
Cross-Site Scripting (XSS)
Le XSS est la vulnérabilité la plus fréquente dans les plugins WordPress. Elle représente à elle seule environ 50 % des failles reportées. Le principe : un attaquant injecte du code JavaScript malveillant qui s'exécute dans le navigateur des visiteurs ou des administrateurs.
Il existe trois variantes :
- XSS stocké (Stored XSS) : le code malveillant est enregistré en base de données (commentaire, champ de formulaire) et s'exécute à chaque affichage. C'est la variante la plus dangereuse.
- XSS réfléchi (Reflected XSS) : le code est injecté via un paramètre d'URL et s'exécute quand la victime clique sur un lien piégé.
- XSS DOM-based : l'injection exploite le JavaScript côté client sans passer par le serveur.
Un XSS stocké dans un plugin de formulaire de contact peut permettre à un attaquant de voler la session d'un administrateur et de prendre le contrôle total du site.
Injection SQL (SQLi)
L'injection SQL se produit quand un plugin construit des requêtes SQL en concaténant directement les données utilisateur, au lieu d'utiliser des requêtes préparées. L'attaquant peut alors lire, modifier ou supprimer des données arbitraires dans la base.
// Vulnérable : concaténation directe
$wpdb->query("SELECT * FROM wp_users WHERE id = " . $_GET['id']);
// Sécurisé : requête préparée
$wpdb->prepare("SELECT * FROM wp_users WHERE id = %d", $_GET['id']);
Une SQLi peut permettre l'extraction de tous les mots de passe hashés, la création d'un compte administrateur, ou la modification du contenu du site.
Cross-Site Request Forgery (CSRF)
Le CSRF exploite le fait que le navigateur envoie automatiquement les cookies de session avec chaque requête. Un attaquant crée une page piégée qui déclenche une action sur votre site WordPress en utilisant la session de l'administrateur connecté.
WordPress fournit un système de nonces pour se protéger du CSRF, mais de nombreux plugins oublient de les implémenter ou les implémentent incorrectement.
Remote Code Execution (RCE)
Le Saint Graal des attaquants. Une faille RCE permet d'exécuter du code PHP arbitraire sur le serveur. Les causes les plus fréquentes :
- Upload de fichiers sans validation du type MIME réel (pas seulement l'extension)
- Utilisation de fonctions dangereuses comme
eval(),unserialize()ouextract() - Inclusion de fichiers dynamiques sans sanitization (
include $_GET['page'])
Path Traversal
Cette vulnérabilité permet de lire ou d'inclure des fichiers en dehors du répertoire prévu, en utilisant des séquences ../. Un path traversal dans un plugin de téléchargement peut exposer le fichier wp-config.php qui contient les identifiants de la base de données.
Les risques de la supply chain
Au-delà des failles techniques, l'écosystème des plugins WordPress est exposé à des risques systémiques liés à sa chaîne d'approvisionnement.
Plugins abandonnés
Un plugin qui n'est plus maintenu continue de fonctionner, mais ne reçoit plus de correctifs de sécurité. Or, des milliers de sites continuent d'utiliser des plugins dont la dernière mise à jour remonte à plus de deux ans. Ces plugins sont des cibles faciles : les vulnérabilités qui y sont découvertes ne seront jamais corrigées.
Rachats malveillants
Des acteurs malveillants rachètent des plugins populaires mais mal monétisés. Le développeur original, fatigué de maintenir un projet gratuit, accepte l'offre. L'acheteur pousse ensuite une mise à jour contenant du code malveillant, qui se propage automatiquement sur tous les sites utilisant le plugin.
Plugins nulled et piratés
Les versions "nulled" (piratées) de plugins premium sont un vecteur d'infection majeur. Dans la quasi-totalité des cas, ces versions contiennent des backdoors, des redirections malveillantes ou du code de spam SEO. Ne téléchargez jamais de plugins depuis des sources non officielles.
Comment évaluer la sécurité d'un plugin
Avant d'installer un plugin, posez-vous ces questions :
- Dernière mise à jour : date-t-elle de moins de 3 mois ? Un plugin actif est un plugin maintenu.
- Compatibilité : est-il testé avec la dernière version de WordPress et PHP 8.2+ ?
- Historique de vulnérabilités : consultez Patchstack, WPScan ou Wordfence Intelligence pour vérifier les failles passées et la rapidité de correction.
- Qualité du code : le plugin utilise-t-il les API WordPress correctement (nonces, prepared statements, sanitization) ?
- Équipe de développement : s'agit-il d'un développeur solo ou d'une entreprise avec une politique de sécurité ?
- Nécessité réelle : ce plugin est-il vraiment indispensable ? Moins de plugins = moins de risques.
Inventaire et surveillance continue
Maintenir un inventaire à jour de vos plugins est essentiel. Pour chaque plugin, documentez la version installée, la date de dernière mise à jour et les vulnérabilités connues.
Orilyt automatise cette surveillance avec son test de détection des plugins WordPress. L'outil identifie les plugins installés sur votre site, vérifie leurs versions et les croise avec les bases de données de vulnérabilités connues. Vous obtenez en quelques secondes un inventaire de risques actionnable, sans avoir besoin d'accéder au back-office WordPress.
Les bonnes pratiques de protection
Réduire la surface d'attaque
- Supprimez les plugins inutilisés (désactiver ne suffit pas, le code reste sur le serveur)
- Limitez-vous aux plugins strictement nécessaires
- Privilégiez les solutions natives de WordPress quand elles existent
Mettre à jour rigoureusement
- Mettez à jour au moins une fois par semaine
- Testez les mises à jour en staging avant la production
- Abonnez-vous aux alertes de sécurité (Patchstack, WPScan, Wordfence)
Utiliser un WAF applicatif
Un Web Application Firewall (WAF) intercepte les requêtes malveillantes avant qu'elles n'atteignent vos plugins. Des solutions comme Cloudflare, Sucuri ou le module ModSecurity d'Apache offrent une protection efficace contre les exploits connus et les attaques zero-day.
Appliquer le principe de défense en profondeur
Ne comptez jamais sur une seule couche de protection. Combinez mises à jour, WAF, headers de sécurité, permissions fichiers restrictives et monitoring. Si une couche cède, les suivantes prennent le relais.
Conclusion
Les plugins sont indispensables à WordPress, mais ils sont aussi sa plus grande vulnérabilité. Une approche responsable consiste à minimiser le nombre de plugins installés, à sélectionner rigoureusement ceux que vous gardez, à les maintenir systématiquement à jour et à surveiller en continu leur état de sécurité.
Un audit régulier de votre site avec un outil comme Orilyt vous permet de détecter les plugins vulnérables, les configurations à risque et les failles exposées, avant qu'un attaquant ne le fasse à votre place.
Auditez votre site avec Orilyt
56 tests automatisés pour évaluer la sécurité, la performance et le SEO de votre site WordPress. Rapport détaillé en moins de 60 secondes.
Lancer un audit gratuit