Le Cross-Site Request Forgery, abrégé CSRF (parfois orthographié XSRF), consiste à piéger un utilisateur déjà authentifié pour lui faire exécuter, à son insu, une requête sur un site où il est connecté. Contrairement au XSS, l’attaquant n’injecte pas de code sur le site cible : il exploite la confiance que le serveur accorde à une session déjà ouverte.
Comment fonctionne une attaque CSRF
Le scénario type : un administrateur WordPress connecté visite, dans le même navigateur, une page malveillante (lien reçu par email, publicité piégée). Cette page déclenche automatiquement une requête vers le site WordPress – par exemple une création de compte administrateur ou une modification de réglage. Le navigateur joint sans le savoir les cookies de session valides, et WordPress traite la requête comme légitime puisqu’elle vient d’un utilisateur authentifié.
L’attaque réussit uniquement si le formulaire ou l’action ciblée ne vérifie pas l’origine réelle de la requête.
Comment WordPress s’en protège nativement
WordPress intègre un système de nonce (« number used once ») : un jeton unique généré pour chaque formulaire ou action sensible, vérifié côté serveur avant exécution. Un plugin bien codé vérifie systématiquement ce nonce avec wp_verify_nonce() avant de traiter une action d’administration. Un plugin qui omet cette vérification laisse une porte ouverte au CSRF, même si le reste du code est sain.
Comment protéger votre site WordPress
- Maintenir plugins et thèmes à jour : les failles CSRF corrigées le sont presque toujours via une mise à jour
- Auditer les plugins tiers, en particulier ceux qui ajoutent des formulaires d’administration personnalisés
- Se déconnecter des sessions d’administration avant de naviguer sur des sites non fiables
- Activer un pare-feu applicatif (WAF) qui détecte les schémas de requêtes anormales
L’OWASP classe le CSRF parmi les vulnérabilités web les plus documentées ; sa prévention dépend presque entièrement de la qualité du code des plugins installés, un point qu’un audit de sécurité peut vérifier avant qu’il ne soit exploité.