Een SYN-flood (synchronous flood) is een DoS-aanval. Bij een SYN-flood wordt een groot aantal verbindingsaanvragen gedaan door een groot aantal SYN-pakketten met foute bron-IP-adressen naar een server te sturen. Voor iedere aanvraag reserveert een server bronnen (bijvoorbeeld geheugen of een socket). Als de server vervolgens een bericht terugstuurt om aan te geven dat hij klaar is voor de verbinding, wordt dit bericht naar het verkeerde IP-adres gestuurd. De server krijgt vervolgens geen bericht terug en terwijl de server op antwoord wacht, blijven de gereserveerde bronnen in gebruik. Als er een groot aantal van dit soort aanvragen vlak na elkaar wordt verzonden kan dit ertoe leiden dat de server niet langer voor "echte" aanvragen bereikbaar is of dat de server zelfs crasht.

Een normale TCP-handshake. Bij een SYN-flood gaat het tweede bericht (SYN-ACK) naar een fout IP-adres. Terwijl de server wacht op het ACK-bericht (dat nooit komt) blijven de gereserveerde bronnen in gebruik.

Werking bewerken

Een SYN-flood maakt gebruik van de TCP-handshake waarmee een TCP-verbinding wordt opgezet. Om een TCP-verbinding op te bouwen stuurt de client een TCP-pakket naar de server met de zogenaamde SYN-vlag. Als de server de verbinding accepteert, wordt een pakket teruggestuurd met zowel een SYN- als ACK-vlag. Als de client vervolgens de server accepteert, stuurt deze een pakketje met de ACK-vlag naar de server. Omdat bij een SYN-flood het adres van de client in het SYN-bericht vervalst is, verstuurt de server het SYN-ACK-bericht naar een niet-bestaande of niet-reagerende "onschuldige" client. Omdat er nu geen ACK-bericht teruggestuurd wordt neemt de server aan dat er iets fout is gegaan en verstuurt deze na een korte pauze het SYN-ACK-bericht opnieuw. Dit herhaalt zich verschillende malen met steeds langere pauzes, tot de server het opgeeft. Op bijvoorbeeld servers die Windows NT gebruiken kan dit hele proces meer dan drie minuten duren.