Attaque SYN Flood

Un SYN Flood exploite une vulnérabilité dans l’établissement de liaison TCP/IP pour tenter de perturber un service Web.

Share facebook icon linkedin icon twitter icon email icon

SYN Flood

Objectifs d’apprentissage

Après avoir lu cet article, vous pourrez :

  • Définir une attaque DDoS SYN Flood
  • Expliquer comment fonctionne une attaque SYN Flood
  • Distinguer les différents types d’attaques SYN
  • Comprendre certaines techniques d’atténuation pour les SYN Flood

Qu’est-ce qu’une attaque SYN Flood ?

Une attaque SYN flood (attaque semi-ouverte) est un type d'attaque par déni de service (DDoS) qui vise à rendre un serveur indisponible au trafic légitime en consommant toutes les ressources du serveur disponibles. En envoyant à plusieurs reprises des paquets de demande de connexion initiale (SYN), l'attaquant est en mesure de submerger tous les ports disponibles sur une machine serveur cible, ce qui oblige le périphérique ciblé à répondre au trafic légitime de manière lente ou pas du tout.

Comment fonctionne une attaque SYN Flood ?

Les attaques SYN flood, ou attaques par saturation, fonctionnent en exploitant le processus d'établissement de liaison d'une connexion TCP. En conditions normales, la connexion TCP présente trois processus distincts pour établir une connexion.

  1. Tout d’abord, le client envoie un paquet SYN au serveur afin d’établir la connexion.
  2. Le serveur répond ensuite à ce paquet initial avec un paquet SYN/ACK, afin d'accuser réception de la communication.
  3. Enfin, le client renvoie un paquet ACK pour accuser réception du paquet provenant du serveur. Après avoir terminé cette séquence d'envoi et de réception de paquets, la connexion TCP est ouverte et capable d'envoyer et de recevoir des données.
TCP Three-way handshake diagram

Pour créer un déni de service, un attaquant exploite le fait qu'après la réception d'un premier paquet SYN, le serveur répondra avec un ou plusieurs paquets SYN/ACK et attendra la dernière étape de la prise de contact. Voici comment cela fonctionne :

  1. Le cyberattaquant envoie un volume élevé de paquets SYN au serveur ciblé, souvent avec des adresses IP usurpées.
  2. Le serveur répond ensuite à chacune des demandes de connexion et laisse un port ouvert prêt à recevoir la réponse.
  3. Pendant que le serveur attend le dernier paquet ACK, qui n'arrive jamais, l'attaquant continue d'envoyer plus de paquets SYN. L'arrivée de chaque nouveau paquet SYN oblige le serveur à maintenir temporairement une nouvelle connexion de port ouverte pendant un certain temps, et une fois que tous les ports disponibles ont été utilisés, le serveur ne peut plus fonctionner normalement.
SYN flood DDoS attack animation

En technique réseau, lorsqu'un serveur laisse une connexion ouverte mais que la machine de l'autre côté de la connexion ne le fait pas, la connexion est considérée comme semi-ouverte. Dans ce type d'attaque DDoS, le serveur cible laisse continuellement des connexions ouvertes et attend que chaque connexion expire avant que les ports ne redeviennent disponibles. Il en résulte que ce type d'attaque peut être considéré comme une « attaque semi-ouverte ».

Une attaque SYN Flood peut se manifester de trois façons différentes :

  1. Attaque directe : un SYN flood où l'adresse IP n'est pas usurpée est appelé attaque directe. Dans cette attaque, l'attaquant ne masque pas du tout son adresse IP. Du fait que l'attaquant utilise un seul appareil source avec une véritable adresse IP pour créer l'attaque, l'attaquant est très vulnérable à la découverte et à l'atténuation. Afin de créer l'état semi-ouvert sur la machine cible, le pirate l'empêche de répondre aux paquets SYN-ACK du serveur. Ceci est souvent réalisé par des règles de pare-feu qui arrêtent les paquets sortants autres que les paquets SYN, ou en filtrant tous les paquets SYN-ACK entrants avant qu'ils n'atteignent la machine de l'utilisateur malveillant. En pratique, cette méthode est rarement (voire jamais) utilisée, car l'atténuation est assez simple : il suffit de bloquer l'adresse IP de chaque système malveillant. Si l'attaquant utilise un botnet tel que le Mirai botnet il ne se souciera pas de masquer l'IP du périphérique infecté.
  2. Attaque par usurpation d'identité : un utilisateur malveillant peut également usurper l'adresse IP de chaque paquet SYN qu'il envoie afin d'empêcher les efforts d'atténuation et de rendre son identité plus difficile à découvrir. Bien que les paquets puissent être falsifiés, ces paquets peuvent potentiellement être retracés jusqu'à leur source. Il est difficile de faire ce genre de travail de détective, mais ce n'est pas impossible, surtout lorsque les fournisseurs d'accès à Internet (FAI) sont prêts à collaborer.
  3. Attaque distribuée (DDoS) : si une attaque est créée à l'aide d'un botnet, la probabilité de retracer l'attaque jusqu'à sa source est faible. Pour que l'offuscation soit plus importante, un attaquant peut demander à chaque périphérique distribué d'usurper également les adresses IP à partir desquelles il envoie des paquets. Si l'attaquant utilise un botnet tel que le botnet Mirai, il ne se souciera généralement pas de masquer l'IP du périphérique infecté.

En utilisant une attaque SYN flood, un mauvais acteur peut tenter de créer un déni de service dans un appareil ou un service cible avec un trafic sensiblement inférieur à celui d'autres attaques DDoS. Au lieu d'attaques volumétriques, qui visent à saturer l'infrastructure réseau entourant la cible, les attaques SYN doivent simplement être plus importantes que le backlog disponible dans le système d'exploitation de la cible. Si l'attaquant est en mesure de déterminer la taille du backlog et la durée pendant laquelle chaque connexion restera ouverte avant l'expiration du délai, l'attaquant peut cibler les paramètres exacts nécessaires pour désactiver le système, réduisant ainsi le trafic total au minimum nécessaire pour créer déni de service.

Comment atténuer une attaque SYN Flood ?

La vulnérabilité aux attaques SYN flood est connue depuis longtemps et un certain nombre de voies d'atténuation ont été utilisées. Voici quelques approches :

Augmenter la file d’attente du backlog

Chaque système d'exploitation sur un appareil ciblé dispose d'un certain nombre de connexions semi-ouvertes qu'il autorise. Il est possible de répondre aux volumes élevés de paquets SYN en augmentant le nombre maximal de connexions semi-ouvertes possibles que le système d'exploitation autorisera. Afin d'augmenter avec succès le backlog maximal, le système doit réserver des ressources de mémoire supplémentaires pour traiter toutes les nouvelles requêtes. Si le système ne dispose pas de suffisamment de mémoire pour pouvoir gérer l'augmentation de taille de la file d'attente de backlog, les performances du système seront affectées négativement, mais cela peut être un pis-aller par rapport au déni de service.

Recycler la connexion TCP semi-ouverte la plus ancienne

Une autre stratégie d'atténuation consiste à écraser la connexion semi-ouverte la plus ancienne une fois le backlog rempli. Cette stratégie nécessite que les connexions légitimes puissent être entièrement établies en moins de temps qu'il ne faut pour que le backlog soit rempli de paquets SYN malveillants. Cette défense particulière échoue lorsque le volume d'attaque est augmenté ou si la taille du backlog est trop petite pour être pratique.

Cookies SYN

Cette stratégie implique la création d'un cookie par le serveur. Afin d'éviter le risque de perdre des connexions lorsque le backlog est rempli, le serveur répond à chaque demande de connexion avec un paquet SYN-ACK mais supprime ensuite la demande SYN du backlog, en retirant la demande de la mémoire et en laissant le port ouvert, prêt à établir une nouvelle connexion. Si la connexion est une requête légitime et qu'un paquet ACK final est renvoyé de la machine cliente au serveur, le serveur reconstruira alors (avec certaines limitations) l'entrée de la file d'attente du backlog SYN. Bien que cet effort d'atténuation perde des informations sur la connexion TCP, elle est préférable au déni de service qui affecterait les utilisateurs légitimes à la suite d'une attaque.

Comment procède Cloudflare pour atténuer les attaques SYN Flood ?

Cloudflare atténue ce type d'attaque en partie en se tenant entre le serveur ciblé et le SYN flood. Lorsque la demande SYN initiale est effectuée, Cloudflare gère le processus de handshake dans le cloud, en retenant la connexion avec le serveur cible jusqu'à ce que le handshake TCP soit terminé. Cette stratégie retire du serveur ciblé le coût des ressources nécessaires au maintien des connexions avec les paquets SYN erronés en la confiant au réseau Anycast de Cloudflare. En savoir plus sur le fonctionnement de la Protection DDoS de Cloudflare.

Cloudflare stops SYN Flood attacks diagram