Attacco SYN flood

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

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

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

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 consumandone tutte le risorse. Inviando ripetutamente pacchetti di richieste 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 non rispondere affatto, 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 necessari 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 conferma esplicitamente la comunicazione.
  3. Infine, il client restituisce un pacchetto ACK per confermare a sua volta 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, 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 arriverà mai, l'aggressore continua a inviare altri pacchetti SYN. La ricezione 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 di un 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 tornino 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 proprio 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 questo metodo viene usato raramente (se non mai), poiché la mitigazione è abbastanza semplice: basta bloccare l'indirizzo IP di qualsiasi sistema antagonista. Se l’aggressore invece usa una botnet quale la botnet Mirai, non gli importerà di mascherare l'IP del dispositivo infetto.
  2. Attacco di 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 propria identificazione. Pur potendo essere contraffatti, tali pacchetti possono essere eventualmente 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 è scarsa. 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 con precisione ai parametri necessari per disabilitare il sistema, riducendo così il traffico totale al minimo necessario per creare una situazione di denial-of-service.

Come si mitiga un attacco SYN flood?

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

Aumento della coda di backlog

Ogni sistema operativo su un dispositivo designato ammetterà un certo numero di connessioni semi-aperte. 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

Un'altra strategia di mitigazione prevede, una volta riempito il backlog, di sovrascrivere la connessione che rimasta semi-aperta per prima in ordine cronologico. 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 è insufficiente.

Cookie 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 viene inviato dal client al server un pacchetto ACK finale, il server 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 aggredito 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. Così funziona la protezione DDoS di Cloudflare.

Diagramma che illustra come Cloudflare blocca gli attacchi SYN flood