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 :

  • 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 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 l’appareil 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 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.
Schéma du handshake TCP en trois étapes

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épond avec un ou plusieurs paquets SYN/ACK et attend l’étape finale du handshake. Voici comment cela fonctionne :

  1. L’attaquant 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.
Animation sur l’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 : une attaque SYN flood où l’adresse IP n’est pas usurpée est connue sous le nom d’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 repéré 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 de l’utilisateur malveillant. 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 par usurpation d’identité : un utilisateur malveillant peut également usurper l’adresse IP de chaque paquet SYN qu’il envoie afin d’entraver 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 pouvoir remonter à 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, en réduisant ainsi le trafic total au minimum nécessaire pour créer le 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 en partie ce type d’attaque en se plaçant entre le serveur ciblé et l’attaque SYN flood. Lorsque la requête SYN initiale est effectuée, Cloudflare gère le processus de handshake dans le cloud, en maintenant la connexion avec le serveur ciblé jusqu’à la fin du handshake 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 davantage sur le fonctionnement de la protection anti-DDoS de Cloudflare.

Schéma illustrant comment Cloudflare stoppe les attaques SYN flood