Attaques CSRF : Comprendre la Falsification de Requêtes Intersites et le Détournement de Session
La falsification de requêtes intersites (CSRF) est une vulnérabilité dévastatrice qui oblige un utilisateur authentifié à exécuter des actions indésirables sur une application web. Contrairement au Cross-Site Scripting (XSS), qui exploite la confiance d'un utilisateur envers un site, la CSRF exploite la confiance qu'un site a dans le navigateur d'un utilisateur. Dans cette analyse approfondie par Cayvora Security, nous explorerons l'anatomie des attaques CSRF, des exemples HTTP concrets et les techniques de prévention modernes pour 2025.
L'Anatomie d'une Attaque CSRF
Pour qu'une attaque CSRF soit viable, trois conditions clés doivent être remplies :
- Une Action Pertinente : Il doit y avoir une action au sein de l'application que l'attaquant a une raison de provoquer, comme le changement de mot de passe ou le transfert de fonds.
- Gestion de Session Basée sur les Cookies : L'application s'appuie entièrement sur les cookies HTTP pour identifier l'utilisateur.
- Aucun Paramètre Imprévisible : La requête qui effectue l'action ne peut contenir aucun paramètre dont la valeur ne peut être devinée par l'attaquant.
Exemple d'Exploitation Réel : Le Transfert de Fonds
Prenons une application bancaire vulnérable :
GET /transfer.do?acct=COMPTE_ATTAQUANT&amount=10000 HTTP/1.1
Host: banque.exemple.com
Cookie: sessionid=abcdef1234567890
L'Exploit :
L'attaquant crée une page web malveillante contenant une balise d'image invisible :
<img src="https://banque.exemple.com/transfer.do?acct=COMPTE_ATTAQUANT&amount=10000" width="0" height="0" border="0" style="display:none;">
Lorsque la victime visite le site de l'attaquant, son navigateur tente automatiquement de charger l'image. Parce que l'URL appartient à banque.exemple.com, le navigateur joint automatiquement le cookie de session valide de la victime. Le serveur de la banque traite la demande et transfère les fonds.
Requêtes POST via Formulaire
Pour contourner les applications utilisant POST, les attaquants utilisent du JavaScript :
<form action="https://banque.exemple.com/api/user/email/update" method="POST" id="csrf_form">
<input type="hidden" name="email" value="[email protected]" />
</form>
<script>
document.getElementById('csrf_form').submit();
</script>
Le formulaire est soumis immédiatement lors de la visite de la page, exécutant l'attaque.
Stratégies de Prévention et de Remédiation
La prévention du CSRF nécessite d'obliger le navigateur à prouver que la requête a été intentionnellement initiée par l'utilisateur.
1. Jetons Anti-CSRF (Synchronizer Token Pattern)
La défense la plus robuste est l'inclusion d'un jeton spécifique à l'utilisateur et imprévisible.
Exemple d'implémentation en PHP :
// Génération côté serveur
session_start();
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
// Inclusion côté client
<form action="/transfer" method="POST">
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
</form>
Le serveur compare le jeton soumis avec celui stocké dans la session de l'utilisateur.
2. Attribut de Cookie SameSite
L'attribut SameSite indique au navigateur s'il doit envoyer des cookies avec des requêtes intersites.
SameSite=Strict: Le cookie n'est envoyé que si la requête provient du même site.SameSite=Lax: C'est la valeur par défaut dans les navigateurs modernes et empêche la CSRF basée sur POST.
Configuration Sécurisée :
Set-Cookie: JSESSIONID=xyz123; Secure; HttpOnly; SameSite=Lax
3. Exiger une Réauthentification
Pour les actions très sensibles, exigez que l'utilisateur se réauthentifie (OTP, mot de passe).
Conclusion
En comprenant comment les attaquants falsifient les requêtes et en implémentant une combinaison de jetons Anti-CSRF et d'attributs SameSite, les développeurs peuvent construire des applications résilientes qui protègent définitivement les sessions utilisateurs. Consultez notre guide complet sur la Prévention XSS pour une posture de sécurité optimale.
Votre gestion de session est-elle sécurisée ?
Assurez-vous que vos flux sont immunisés. Contactez Cayvora Security pour l'analyse de votre architecture au Maroc.
📱 Contactez-nous via WhatsApp