À trois heures du matin, au milieu de la nuit, j'ai reçu un message texte d'alerte et je me suis levé pour jeter un coup d'œil : le nombre de connexions WebSocket avait atteint un pic, et l'unité centrale du serveur s'était directement agenouillée. Les attaquants s'appuient sur les longues caractéristiques de connexion du protocole WS, difficile de faire chuter l'entreprise - de nos jours, même les communications en temps réel doivent porter des gilets pare-balles.
Beaucoup de gens pensent qu'un ensemble de CDN sur tout va bien, jusqu'à ce que l'attaque par inondation WebSocket à travers les yeux. J'ai démoli l'architecture de sept fournisseurs et j'en suis arrivé à la conclusion suivante : les principaux fournisseurs sont pris en charge, mais la configuration de la fosse est plus que suffisante pour pouvoir tomber raide mort.
Le protocole WebSocket lui-même est un “fantôme”. Il abandonne le mode requête-réponse du HTTP et le remplace par une connexion longue en duplex intégral, ce qui signifie que la stratégie traditionnelle de mise en cache du CDN et la limitation du débit sont pratiquement caduques. Les attaquants n'ont qu'à établir une connexion pour continuer à consommer les ressources du serveur, le coût du DDoS est dix fois inférieur à celui du HTTP.
J'ai testé la configuration par défaut d'un fournisseur : après avoir activé la prise en charge de WebSocket, le délai de connexion n'est pas ajusté. L'attaquant établit 100 000 connexions longues et maintient chaque connexion pendant 15 minutes, ce qui épuise directement les ressources du back-end. Si un CDN à haute défense ne protège que contre HTTP, cela équivaut à installer une serrure de coffre-fort sur la porte mais à laisser un trou de chien.
Une protection vraiment fiable doit répondre à trois critères : capacité de reconnaissance des protocoles, contrôle du comportement des connexions et filtrage de la logique commerciale. cdn5 a fait un excellent travail dans ce domaine : non seulement il reconnaît les protocoles WS/WSS, mais il détecte également les anomalies des paquets de battements de cœur des connexions. L'année dernière, nous avons été attaqués par un pool de minage de crypto-monnaie et nous nous sommes appuyés sur sa bibliothèque d'empreintes de trafic pour couper les connexions malveillantes.
La clé de la configuration n'est pas aussi simple que de cocher la case “Enable WebSocket” sur l'interface. Dans le cas de CDN07, par exemple, les quatre couches de protection doivent être ajustées simultanément :
Ne croyez pas les “smart defaults” dont parlent les vendeurs. Une fois que j'ai été paresseux et que j'ai utilisé directement la configuration par défaut, le résultat a été 3000 nouvelles demandes de connexion par seconde directement au seuil. Plus tard, j'ai réglé manuellement le nombre maximum de connexions par IP à 20, et le nombre de connexions anormales a chuté à 90%.
La stratégie de 08Host est encore plus radicale : elle prend en charge l'analyse approfondie du protocole WebSocket. Il peut non seulement détecter les anomalies de la poignée de main SSL, mais aussi vérifier le contenu des trames de données WebSocket. Ayant été confronté à des attaques CC avec chiffrement de la couche transport, son moteur de règles écarte avec précision les paquets malveillants grâce à la correspondance des codes des caractéristiques de charge.
Derrière la guerre des prix se cache un piège de performance. Un fournisseur bon marché prétendait offrir un “support complet”, alors que l'utilisation réelle de la latence WebSocket atteignait 200 ms. En déballant, on s'aperçoit que ses nœuds effectuent une conversion de protocole : le trafic WS est transformé en réponse chunked HTTP, nom de l'optimisation de la compatibilité.
La comparaison des performances réelles dépend de trois ensembles de données : le délai d'établissement de la connexion, la stabilité de la connexion à long terme et l'efficacité de l'interception des attaques. Nous avons testé sous pression les nœuds de Hong Kong parmi les trois :
CDN5 première poignée de main moyenne 87ms, 10 000 connexions pour maintenir des fluctuations de latence ≤ 15ms ; CDN07 connexion plus rapide (62ms) mais anti-attaque lorsque le CPU pique de manière significative ; 08Host équilibré optimal, en particulier dans la performance de délestage SSL devant 40%.
L'effet de la protection dépend également de la bataille réelle. Une plateforme de jeu a subi une attaque par réflexion WS, l'attaquant a falsifié l'IP source pour envoyer un grand nombre de petits paquets, la stratégie de protection de CDN5 a directement activé la limitation du taux + la détection de la longueur des paquets, une seule IP plus de 50 paquets par seconde a immédiatement déclenché la vérification homme-machine.
Le plus pitoyable est la “fausse protection” de certains fournisseurs : uniquement dans la couche TCP pour nettoyer le trafic, sans tenir compte des protocoles de la couche application, les attaques WebSocket pénètrent comme d'habitude, le service après-vente a également jeté l'éponge en disant que “le code commercial a des problèmes”. Plus tard, j'ai changé pour utiliser la protection à sept couches de CDN07, et j'ai ajouté cette règle pour y remédier :
La protection de la couche métier est l'arme ultime. L'année dernière, un projet financier a été attaqué par un abus d'API WS, et l'attaquant a simulé des clients normaux pour envoyer des requêtes de transaction à haute fréquence. En fin de compte, les règles personnalisées de CDN5 ont cassé le jeu : elles détectent le nombre de requêtes par minute pour une seule connexion et forcent la connexion qui dépasse le seuil à se déconnecter et à pirater l'IP.
Le choix d'un CDN à haut niveau de défense doit tenir compte des détails de la protection WebSocket : prend-il en charge la limite de longueur de connexion ? Pouvez-vous identifier l'usurpation de protocole ? Existe-t-il un lien avec le contrôle des risques commerciaux ? Un fournisseur peut même intégrer son propre système de contrôle des vents, émettre des instructions d'interception en temps réel - c'est ce que permet le niveau WAF.
Sur une note plus offensive : les problèmes de protection WebSocket de 90% proviennent d'une mauvaise configuration. L'incident le plus scandaleux que j'ai vu était un ingénieur qui oubliait de désactiver une règle de test et qui bloquait toutes les connexions légitimes à l'environnement de production. Ce n'est pas que le fournisseur ne puisse pas le faire, c'est que beaucoup de gens ne comprennent même pas la console.
À l'avenir, les attaques évolueront certainement vers des protocoles hybrides, avec WebSocket sur HTTP/2 et l'abus du protocole QUIC qui circule déjà sur le marché noir. Le moins que l'on puisse faire est de s'assurer que le fournisseur met à jour les règles de protection sur une base mensuelle. La base de données de renseignements sur les menaces de 08Host est mise à jour trois fois par semaine, ce qui est un véritable soulagement.
Si vous choisissez un modèle, rappelez-vous ces trois règles d'or : le test doit être appuyé par la performance WS, le contrat spécifie l'indice de protection et des exercices d'attaque et de défense sont régulièrement effectués. N'attendez pas que l'entreprise s'effondre pour vérifier les documents, la protection des communications en temps réel n'est jamais un projet de commutation, mais une confrontation permanente.
La protection WebSocket n'est plus une question de “faire ou ne pas faire”, mais une course à “comment faire en détail”. Les meilleurs CDN accumulent les modèles d'apprentissage automatique pour extraire les schémas d'attaque du comportement des connexions. La prochaine fois que vous rencontrerez des vendeurs se vantant d'une protection QPS d'un million d'unités, posez directement la question : WS long connection CC attacks can be prevented to what granularity ?
La technologie n'est en fin de compte qu'un outil, la véritable protection réside dans la compréhension profonde de la logique commerciale. Je garde toujours l'habitude : chaque service WS en ligne doit utiliser Slowloris, l'outil d'autotest WS-Attacker. Il n'y a pas de solution miracle pour la sécurité, mais un CDN hautement sécurisé nous donne au moins le droit de porter une armure.

