Attaque TCP reset
From Wikipedia, the free encyclopedia
L'attaque TCP reset consiste à interrompre les connexions TCP/IP entre tiers. Même si le nom de cette technique suggère de mauvaises intentions, parfois cette interruption est bénéfique.
TCP est un des protocoles les plus répandus sur Internet. Contrairement à UDP, on l'utilise à chaque fois qu'une connexion virtuelle entre deux ordinateurs est nécessaire. Par exemple, un serveur web et un navigateur web échangent leurs données à l'aide du protocole HTTP à l'intérieur d'une connexion TCP. Cette connexion est limitée dans le temps (elle a un début et une fin).
Dans le flux de « segments » TCP échangés, chaque segment comporte un entête (TCP header). Cet entête comporte un bit appelé « drapeau de réinitialisation » (reset flag) et qui est noté RST. Lorsque ce bit vaut 1, la connexion est interrompue brutalement. Tout paquet ultérieur dont l'entête indique qu'il appartient à la même connexion doit être jeté.
Le bit de réinitialisation a été prévu pour des situations comme celle où un ordinateur A « plante » ou est éteint alors qu'une connexion TCP était en cours avec un ordinateur B. L'ordinateur B continue à envoyer des paquets puisqu'il ne sait pas que l'ordinateur A n'est plus en ligne. Quand l'ordinateur A redémarre, il continue à recevoir les paquets de cette ancienne connexion. Il ne sait pas d'où ces paquets proviennent et ne sait pas quoi en faire, donc le mieux qu'il ait à faire est d'envoyer à B un segment TCP comportant le bit de réinitialisation. B sait alors que cette connexion n'est plus fonctionnelle et arrête d'envoyer des données à A.
Réinitialisations construites de toutes pièces
Dans le scénario qui précède, le bit de réinitialisation TCP a été envoyé par un ordinateur qui était un des deux participants A et B à la connexion. Rien n'empêche un troisième ordinateur C, capable de préférence de surveiller les connexions entre A et B, d'envoyer un segment fabriqué de toutes pièces (« forgé ») à A, B ou les deux. Le paquet falsifié envoyé à B indique dans son champ adresse source qu'il provient de A ; le paquet falsifié envoyé à A indique qu'il provient de B. Les numéros de ports doivent aussi correspondre à ceux de la connexion en cours. C est ainsi en mesure d'interrompre la connexion entre A et B.