# Description # Traffic Flood est un type d'attaque par déni de service des serveurs Web. L'attaque exploite la manière dont la connexion TCP est gérée. L'attaque consiste en la génération d'un grand nombre de demandes TCP bien forgées, avec l'objectif d'arrêter le serveur Web ou de provoquer une baisse des performances. L'attaque explore une caractéristique du protocole HTTP, l'ouverture de plusieurs connexions en même temps pour satisfaire une seule demande. Cette particularité du protocole http, qui consiste à ouvrir une connexion TCP pour chaque objet html et le fermer, pourrait être utilisé pour faire deux différents types d'attaques. L'attaque Connect se fait lors de l'établissement de la connexion, et l'attaque Closing se fait lors de la fermeture de connexion. # Exemples # ## Attaque Connect : ## Ce type d'attaque consiste à établir un grand nombre de fausses connexions TCP avec une requête HTTP incomplète jusqu'à ce que le serveur web soit submergé de connexions et cesse de répondre. Le but de la demande incomplète HTTP est de garder le serveur Web, avec la connexion TCP dans ouverte, en attendant l'achèvement de la demande, comme le montre la figure 1. En fonction de la configuration du serveur web, la connexion reste dans cet état jusqu'à l' expiration d'un délai d'attente de la connexion TCP ou du serveur. De cette manière, il est possible de mettre en place un grand nombre de nouvelles connexions avant que les premières ne commencent à être expirées. Par ailleurs, le taux de génération de nouvelles connexions croît plus vite que ceux à échéance. L'attaque pourrait également affecter un pare-feu qui implémente un proxy, comme le contrôle d'accès Checkpoint FW1. ## Attaque losing : ## Se fait lors des étapes de fin de la connexion TCP, en exploitant la manière dont certains serveurs web traitent la finalisation de la connexion TCP (en particulier avec l'état FIN_WAIT_1). L'attaque, comme l'a expliqué Stanislav Shalunov », se décline en deux versions:. épuisement de Mbufs et saturation du processus * **L'épuisement mbufs**, consiste à faire en sorte, lors de processus de niveau utilisateur, de ne pas écrire les données de déblocage et de fermeture du descripteur. Le noyau devra traiter toutes les données, alors que le processus au niveau utilisateur est libéré, de sorte que davantage de demandes peuvent être transmis de cette façon et finalement consommer toutes les mémoires tampon ou toute la mémoire physique, si les mbufs sont allouées dynamiquement. * **La saturation de processus**, consiste à bloquer toute écriture des données au niveau du processus utilisateur de. L'architecture de plusieurs serveurs HTTP permet de servir uniquement un certain nombre de connexions à la fois. Lorsque ce nombre de connexions est atteint, le serveur cesse de répondre aux utilisateurs légitimes. Si le serveur ne met pas une limite sur le nombre de connexions, les ressources seront toujours retenues et, éventuellement, la machine peut s'arrêter.