Attaques & vulnérabilités techniques

Cross-Site Request Forgery (CSRF)

Julien THÉRIN

Le CSRF (Cross-Site Request Forgery) est une attaque qui pousse un utilisateur connecté à exécuter une action sur WordPress sans qu'il s'en aperçoive, en exploitant sa session active.

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é.

Questions fréquentes

Une attaque CSRF (Cross-Site Request Forgery) piège un utilisateur connecté pour lui faire exécuter une action sur un site sans son consentement, en exploitant sa session active. Contrairement à l’XSS, aucun code n’est injecté sur le site ciblé : c’est la confiance accordée à la session qui est détournée.

WordPress utilise un système de nonce : un jeton unique vérifié avant chaque action sensible. Un plugin qui n’implémente pas cette vérification reste vulnérable, même si WordPress core est à jour. C’est pourquoi un scanner de vulnérabilités doit couvrir les plugins tiers et pas seulement le cœur de WordPress.

Non, c’est ce qui rend cette attaque dangereuse : la requête s’exécute silencieusement en arrière-plan pendant que la victime consulte une page piégée, sans redirection ni message visible. Seul un journal d’activité WordPress ou une alerte de sécurité permet généralement de la détecter après coup.

Sources

  • OWASP – définition et bonnes pratiques contre le CSRF
Avatar Julien THERIN
Julien THÉRIN

Entrepreneur passionné du web, ma relation avec WordPress commence il y a plus de 15 ans - par curiosité, en autodidacte. À l'époque je m'intéressais à plusieurs CMS : DotClear, CMS Made Simple, SPIP, Joomla... C'est WordPress qui l'a emporté…

À propos de l'auteur →
Retour en haut