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 ?

Un SYN Flood (attaque semi-ouverte) est un type d’attaque par déni de service (DDoS) qui vise à rendre un serveur indisponible pour le trafic légitime en consommant toutes les ressources 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 ciblée, ce qui oblige le périphérique ciblé à répondre lentement au trafic légitime, ou l’empêche totalement de répondre.

Comment fonctionne une attaque SYN Flood ?

Les attaques SYN Flood fonctionnent en exploitant le processus d’établissement de liaison d'une connexion TCP. En temps normal, 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 retourne un paquet ACK pour accuser réception du paquet en provenance 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.
Diagramme du Three-way handshake TCP

Pour créer un déni de service, un pirate exploite le fait qu’après réception d’un paquet SYN initial, le serveur répondra avec un ou plusieurs paquets SYN/ACK et attendra l’étape finale de l’établissement de liaison. Voici comment cela fonctionne :

  1. Le pirate 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 force le serveur à maintenir temporairement une nouvelle connexion de port ouverte pendant un certain temps. Une fois que tous les ports disponibles ont été utilisés, le serveur ne peut plus fonctionner normalement.
Déroulement d’une attaque DDoS SYN Flood

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

Un 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 considéré comme une attaque directe. Dans cette attaque, le pirate ne masque pas du tout son adresse IP. Dans la mesure où le pirate utilise un appareil d’une source unique avec une véritable adresse IP pour créer l’attaque, il peut facilement être démasqué et son attaque atténuée. Afin de créer l’état semi-ouvert sur la machine ciblée, le pirate empêche sa machine de répondre aux paquets SYN-ACK du serveur. Ceci est souvent possible grâce à 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 des utilisateurs malveillants. En pratique, cette méthode est rarement (voire jamais) utilisée, car les mesures d'atténuation sont relativement simples : il suffit de bloquer l'adresse IP de chaque système malveillant. Si le pirate utilise un botnet tel que le botnet Mirai, il n’aura pas besoin de masquer l’adresse IP du périphérique infecté.
  2. Attaque usurpée : Un utilisateur malveillant peut également usurper l'adresse IP de chaque paquet SYN envoyé afin de gêner les efforts d'atténuation et de rendre son identité plus difficile à découvrir. Bien que les paquets puissent être usurpés, ils 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 si 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 la source de l’attaque est faible. Pour un niveau de dissimulation supplémentaire, un pirate peut faire en sorte que chaque périphérique distribué usurpe également les adresses IP à partir desquelles il envoie des paquets. Si le pirate utilise un botnet tel que le botnet Mirai, il n’aura généralement pas besoin de masquer l’adresse IP du périphérique infecté.

En utilisant une attaque SYN Flood, un acteur malveillant peut tenter de créer un déni de service dans un appareil ou un service ciblé avec beaucoup moins de trafic que les autres attaques DDoS. Au lieu d’attaques volumétriques, qui visent à saturer l’infrastructure réseau autour de la cible, les attaques SYN doivent seulement être plus volumineuses que le backlog disponible dans le système d’exploitation de la cible. Si le pirate est en mesure de déterminer la taille du backlog et pendant combien de temps chaque connexion sera laissée ouverte avant d’expirer, il peut cibler les paramètres exacts nécessaires à la désactivation du système, réduisant ainsi le trafic total au minimum requis pour créer le déni de service.

Comment atténuer une attaque SYN Flood ?

La vulnérabilité SYN Flood est connue depuis longtemps et un certain nombre de voies d’atténuation ont été utilisées. Voici quelques-unes des solutions :

Augmenter la file d’attente du backlog

Chaque système d'exploitation d'un périphérique ciblé dispose d'un certain nombre de connexions semi-ouvertes autorisées. Une réponse aux volumes élevés de paquets SYN consiste à augmenter le nombre maximal de connexions semi-ouvertes possibles autorisées par le système d'exploitation. Pour réussir à augmenter le backlog maximum, le système doit réserver des ressources mémoire supplémentaires pour traiter toutes les nouvelles demandes. Si le système ne dispose pas de suffisamment de mémoire pour pouvoir traiter la taille accrue de la file d'attente du backlog, les performances du système en subiront les conséquences négatives, mais cette solution pourrait rester meilleure que le déni de service.

Recycler la connexion TCP semi-ouverte la plus ancienne

Une autre stratégie d’atténuation consiste à remplacer la connexion semi-ouverte la plus ancienne une fois le backlog rempli. Cette stratégie nécessite que les connexions légitimes puissent être totalement établies en moins de temps que le backlog ne puisse être 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.

Cookies SYN

Cette stratégie implique la création d'un cookie par le serveur. Afin d'éviter le risque de perte de connexions lorsque le backlog est rempli, le serveur répond à chaque demande de connexion par un paquet SYN-ACK, mais supprime ensuite la requête SYN du backlog, éliminant la requête de la mémoire et laissant le port ouvert et prêt à établir une nouvelle connexion. Si la connexion est une demande légitime et qu'un dernier paquet ACK est envoyé au serveur par le client, celui-ci reconstruira (avec certaines limitations) l'entrée de la file d'attente du backlog SYN. Bien que ces efforts d'atténuation perdent certaines informations sur la connexion TCP, cela vaut mieux que de laisser un déni de service affecter des utilisateurs légitimes à la suite d'une attaque.

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

Cloudflare atténue en partie ce type d'attaque en se plaçant entre le serveur ciblé et le SYN Flood. Lorsque la requête SYN initiale est effectuée, Cloudflare gère le processus d'établissement de liaison dans le cloud, en interrompant la connexion avec le serveur ciblé jusqu'à la fin de l'établissement de la liaison TCP. Cette stratégie retire le coût en ressources de la maintenance des connexions avec les faux paquets SYN du serveur ciblé et le réaffecte sur le réseau Anycast de Cloudflare. En savoir plus sur le fonctionnement de la protection DDoS de Cloudflare.

Diagramme Cloudflare arrête les attaques SYN Flood