Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

WebSocket Security Testing

devsecops

Définition

Le WebSocket Security Testing désigne les tests de sécurité spécifiques aux connexions WebSocket, protocole de communication bidirectionnel temps-réel (RFC 6455) utilisé dans les applications web modernes pour des fonctionnalités comme le chat en temps réel, les notifications push, les tableaux de bord live, et les applications collaboratives. Les WebSockets présentent des vecteurs d'attaque différents des requêtes HTTP classiques car ils maintiennent une connexion persistante bidirectionnelle après le handshake HTTP initial. Les vulnérabilités spécifiques aux WebSockets incluent : le Cross-Site WebSocket Hijacking (CSWSH — analogue CSRF pour WebSockets : un site malveillant peut initier une connexion WebSocket vers l'application cible en utilisant les cookies de session de la victime, puisque les WebSockets ne sont pas soumis à la Same-Origin Policy pour l'initiation de connexion), les injections via les messages WebSocket (les messages envoyés via WebSocket peuvent contenir des payloads d'injection SQL, XSS, ou de commandes si les données ne sont pas validées côté serveur), l'absence d'authentification sur les endpoints WebSocket (distinct de l'authentification HTTP, le serveur WebSocket doit re-valider l'identité après le handshake), et les DoS par connexions massives ou messages surdimensionnés (sans limite sur le nombre de connexions ou la taille des messages). Les outils de test de sécurité WebSocket incluent : Burp Suite Professional (qui intercepte et modifie les messages WebSocket via son interface graphique, et permet le fuzzing de messages WebSocket), OWASP ZAP (WebSocket extension permettant l'interception et la modification des messages), wscat (client WebSocket CLI pour les tests manuels), et socket.io-parser-fuzzer (fuzzing spécifique aux connexions Socket.io). La sécurisation des WebSockets nécessite : validation de l'en-tête Origin lors du handshake (pour prévenir le CSWSH), ré-authentification du client après le handshake (en ne se fiant pas uniquement aux cookies de session HTTP), validation de tous les messages reçus (validation du schéma JSON, limitation de taille), rate limiting des messages, et chiffrement TLS (wss:// obligatoire, jamais ws:// en production).

Cross-Site WebSocket Hijacking (CSWSH)

Le CSWSH est la vulnérabilité WebSocket la plus répandue : un site malveillant crée une connexion WebSocket vers wss://target.app/ws avec les cookies de session de la victime (les WebSockets incluent automatiquement les cookies lors du handshake HTTP initial, contrairement aux fetch() soumis à la SOP). Si le serveur ne valide pas l'en-tête Origin, il accepte la connexion, donnant au site malveillant accès à toutes les données WebSocket de la session. Correction : valider que l'en-tête Origin du handshake correspond à une liste d'origines autorisées (allowlist), sinon rejeter le handshake avec 403.

Test avec Burp Suite Professional

Burp Suite Professional intercepte nativement les connexions WebSocket : l'onglet "WebSockets history" liste tous les messages échangés, permettant de les inspecter et modifier. Le module Repeater permet de rejouer des messages WebSocket modifiés (insertion de payloads XSS, SQL, commandes). Pour tester le CSWSH, Burp propose un outil de génération de PoC CSRF qui génère une page HTML démontrant l'hijacking de connexion WebSocket. OWASP ZAP offre des fonctionnalités similaires via son extension WebSocket dans les versions récentes.

Validation des messages WebSocket côté serveur

Chaque message WebSocket reçu par le serveur doit être traité comme une entrée non fiable : validation du schéma JSON (type des champs, valeurs attendues), limitation de la taille des messages (rejeter les messages dépassant une taille maximale configurable), validation du type du message (seuls les types de messages attendus sont acceptés), et application des mêmes contrôles de sécurité (autorisation, validation, encodage) que pour les requêtes HTTP. Les bibliothèques WebSocket (ws pour Node.js, websockets pour Python) n'incluent aucune validation de sécurité par défaut — toute la validation est responsabilité du développeur.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis