Attacco SYN flood

Un SYN flood sfrutta una vulnerabilità nel processo di handshake TCP/IP mirando a interrompere un servizio Web.

Share facebook icon linkedin icon twitter icon email icon

SYN Flood

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Definire un attacco DDoS di tipo SYN Flood
  • Spiegare come funziona un attacco SYN flood
  • Distinguere i vari tipi di attacchi SYN
  • Comprendere alcune tecniche di mitigazione degli attacchi SYN flood

Che cos’è un attacco SYN flood?

Un attacco Syn flood (semi-aperto) è un tipo di attacco denial-of-service (DDoS) che mira a rendere un server indisponibile al traffico legittimo consumando tutte le risorse del server. Inviando ripetutamente pacchetti di richiesta di connessione iniziale (SYN), l'aggressore è in grado di sopraffare tutte le porte disponibili di una macchina server, obbligando così la vittima designata a rispondere lentamente o per nulla al traffico legittimo.

Come funziona un attacco SYN flood?

Gli attacchi SYN flood sfruttano il processo di handshake di una connessione TCP. In condizioni normali, per stabilire una connessione TCP sono previsti tre processi distinti.

  1. Innanzitutto, il client invia un pacchetto SYN al server per avviare la connessione.
  2. Il server risponde a questo pacchetto iniziale con un pacchetto SYN/ACK attraverso il quale riconosce esplicitamente la comunicazione.
  3. Infine, il client restituisce un pacchetto ACK per confermare la ricezione del pacchetto dal server. Dopo aver completato questa sequenza di invio e ricezione di pacchetti, la connessione TCP è aperta e in grado di inviare e ricevere dati.
Diagramma del processo a tre vie dell’handshake TCP

Per provocare un denial-of-service, ovvero un rifiuto di servizio, un aggressore sfrutta il fatto che dopo aver ricevuto un pacchetto SYN iniziale, il server designato risponderà con uno o più pacchetti SYN/ACK e attenderà la fase finale dell'handshake. Ecco come funziona:

  1. L'aggressore invia un elevato volume di pacchetti SYN al server vittima dell’attacco, spesso con indirizzi IP contraffatti.
  2. Il server preso di mira risponde quindi a ciascuna delle richieste di connessione e lascia una porta aperta pronta per ricevere la risposta.
  3. Mentre il server attende il pacchetto ACK finale, che non arriva mai, l'aggressore continua a inviare altri pacchetti SYN. L'arrivo di ogni nuovo pacchetto SYN costringe il server a mantenere temporaneamente una connessione con una nuova porta aperta per un certo periodo di tempo. Così, una volta utilizzate tutte le porte disponibili, il server non sarà più in grado di funzionare normalmente.
 Animazione dell’attacco DDoS di tipo SYN flood

In rete, quando un server lascia una connessione aperta ma la macchina dall'altra parte della connessione non lo è, la connessione viene considerata semi-aperta. In questo tipo di attacco DDoS, il server designato lascia continuamente connessioni aperte e rimane in attesa del timeout di ogni connessione prima che le porte diventino di nuovo disponibili. Il risultato è che questo può essere considerato un tipo di “attacco semi-aperto”.

Un SYN flood può verificarsi in tre modi diversi:

  1. Attacco diretto: Un attacco SYN flood in cui l'indirizzo IP non è contraffatto è noto come attacco diretto. In questo attacco, l’aggressore non maschera affatto il suo indirizzo IP. Utilizzando un singolo dispositivo sorgente con un indirizzo IP reale per creare l'attacco, l’aggressore è altamente vulnerabile alla scoperta e alla mitigazione. Al fine di creare lo stato semi-aperto sul server designato, l'hacker impedisce al proprio computer di rispondere ai pacchetti SYN-ACK del server. Ciò spesso si ottiene adottando regole a livello di firewall che bloccano i pacchetti in uscita diversi dai pacchetti SYN o filtrando eventuali pacchetti SYN-ACK in arrivo prima che raggiungano il computer dell’aggressore. In pratica tuttavia questo metodo viene usato raramente (o mai), poiché la mitigazione è abbastanza semplice: basta bloccare l'indirizzo IP di qualsiasi sistema antagonista. Se l’aggressore usa una botnet quale la botnet Mirai, non gli importerà di mascherare l'IP del dispositivo infetto.
  2. Attacco di tipo spoofing: Un utente malintenzionato può anche contraffare l'indirizzo IP in ciascun pacchetto SYN inviato per inibire gli sforzi di mitigazione e rendere più difficile la scoperta della propria identità. Pur potendo essere contraffatti, tali pacchetti possono essere potenzialmente ricondotti alla loro origine. Svolgere questo tipo di indagine è difficile ma non impossibile, soprattutto se i provider di servizi Internet (ISP) sono disposti a collaborare.
  3. Attacco distribuito (DDoS): Se un attacco viene creato utilizzando una botnet, la probabilità di rintracciare l'origine dell’attacco è bassa. Per aumentare il livello di camuffamento, l’aggressore può disporre che ogni dispositivo distribuito falsifichi anche gli indirizzi IP da cui invia i pacchetti. Se l’aggressore usa una botnet quale la botnet Mirai, non gli importerà in genere di mascherare l'IP del dispositivo infetto.

Avvalendosi di un attacco SYN flood, un malintenzionato può tentare di creare un denial-of-service in un dispositivo o servizio preso di mira mediante un volume di traffico sostanzialmente inferiore rispetto ad altri attacchi DDoS. Diversamente dagli attacchi volumetrici, che mirano a saturare l'infrastruttura di rete che circonda il bersaglio, gli attacchi SYN devono semplicemente essere maggiori del backlog disponibile nel sistema operativo della vittima designata. Se è in grado di determinare la dimensione del backlog e per quanto tempo ogni connessione rimarrà aperta prima del timeout, l’aggressore potrà mirare ai precisi parametri necessari per disabilitare il sistema, riducendo così il traffico totale al minimo necessario per creare una situazione di denial-of-service.

Come viene mitigato un attacco SYN flood?

La vulnerabilità al SYN flood è nota da tempo e numerosi sono stati i percorsi di mitigazione adottati. Alcuni approcci includono:

Aumento della coda di backlog

Ogni sistema operativo su un dispositivo designato ha un certo numero di connessioni semi-aperte ammesse. Una possibile risposta per contrastare gli elevati volumi di pacchetti SYN è quella di aumentare il numero massimo di connessioni semi-aperte ammesse dal sistema operativo. Per aumentare correttamente il backlog massimo, il sistema deve riservare delle risorse di memoria aggiuntive per la gestione di tutte le nuove richieste. Se il sistema non dispone di memoria sufficiente per gestire la dimensione aumentata della coda di backlog, ne faranno le spese le prestazioni del sistema, ma ciò sarà probabilmente comunque meglio di un evento di denial-of-service.

Ripristino della prima connessione TCP semi-aperta in ordine cronologico

Un'altra strategia di mitigazione prevede di sovrascrivere la connessione che è rimasta semi-aperta per prima in ordine cronologico, una volta occupato tutto il backlog. Affinché questa strategia sia efficace, è necessario che il tempo per stabilire connessioni legittime sia inferiore a quello richiesto per riempire il backlog di pacchetti SYN ostili. Questa particolare difesa fallisce quando il volume di attacco viene incrementato o se la dimensione del backlog è eccessivamente piccola per essere pratica.

Cookie di tipo SYN

Questa strategia prevede la creazione di un cookie da parte del server. Al fine di evitare il rischio di perdere connessioni quando il backlog è pieno, il server risponde a ogni richiesta di connessione con un pacchetto SYN-ACK ma poi elimina la richiesta SYN dal backlog, rimuovendo la richiesta dalla memoria e lasciando la porta aperta e pronta per effettuare una nuova connessione. Se la connessione è una richiesta legittima e un pacchetto ACK finale viene inviato dal client al server, quest’ultimo ricostruirà (con alcune limitazioni) la voce SYN dalla coda del backlog. Malgrado la perdita di alcune informazioni sulla connessione TCP, è preferibile adottare questa tecnica di mitigazione piuttosto che consentire il verificarsi di eventi di tipo denial-of-service nei confronti di utenti legittimi a seguito di un attacco.

In che modo Cloudflare mitiga gli attacchi SYN flood?

Cloudflare mitiga in parte questo tipo di attacco posizionandosi tra il server designato e il SYN flood. Quando viene effettuata la richiesta SYN iniziale, Cloudflare gestisce il processo di handshake nel cloud, trattenendo la connessione con il server preso di mira fino al completamento dell'handshake TCP. Questa strategia sposta il consumo di risorse per mantenere le connessioni con i pacchetti SYN ostili dal server oggetto dell’attacco alla rete Anycast di Cloudflare. Approfondimento: come funziona la protezione DDoS di Cloudflare.

Diagramma che illustra come Cloudflare blocca gli attacchi SYN flood