di Riccardo Colombo
Il 28 Febbraio 2018 tra le 17:25 UTC e le 17:30 UTC GitHub[1] è stato colpito dal più potente attacco DDoS di sempre, in grado di investire la piattaforma con la cifra record di 1.35 Tb/s di traffico. Dopo aver funzionato ad intermittenza per alcuni minuti, GitHub ha fatto ricorso al proprio servizio di DDoS mitigation. Akamai Prolexic[2] si è quindi posizionato da intermediario, analizzando e filtrando tutto il traffico in ingresso ed in uscita dai server di GitHub, progressivamente mitigando fino ad arrestare l’effetto dell’attacco.
“Abbiamo modellato la capacità della nostra infrastruttura prendendo come riferimento cinque volte il traffico prodotto dal più grande attacco DDoS” dice Josh Shaul, vice presidente di akamai, a Wired alcune ore dopo l’incidente “Sapevamo di poter gestire 1.35 Tb/s di traffico, ma allo stesso tempo non avevamo mai affrontato nulla del genere. Una cosa è avere fiducia in sé stessi e nelle proprie soluzioni, un’altra è vedere che tutto funziona come previsto.”
Traffico sui server di GitHub (Source: akamai.com)
CIA e DoS
Stimare l’impatto e la rilevanza che una specifica minaccia digitale può avere su un sistema informatico è uno degli obiettivi dell’Information Security. Il security model che viene più spesso utilizzato in questo ambito è rappresentato dall’acronimo “CIA”[3], il cui obiettivo è quello di mettere in relazione la minaccia digitale con tre parametri: Confidentiality, Integrity e Availability.
In questo contesto con Confidentiality si intende riservatezza (es. il documento x può essere consultato soltanto dagli utenti compresi nella lista y), con Integrity si intende integrità (es. il database x non può essere alterato da personale non autorizzato), mentre con Availability si intende disponibilità (es. che il servizio x sia accessibile ed utilizzabile).
Un attacco Denial-of-Service (DoS), come suggerisce il nome stesso, è quindi un tipo di attacco che ha come obiettivo quello di limitare l’Availability di un servizio, così da renderlo indisponibile ai suoi utilizzatori ordinari.
SYN Flood e DDoS
Un classico esempio di attacco DoS è il SYN flood. In questo attacco l’hacker sfrutta la modalità di instaurare una connessione TCP[4] per esaurire le risorse della macchina target.
Per stabilire una connessione TCP viene eseguita una procedura chiamata Three Way Handshake:
- Il client richiede la connessione mandando un messaggio SYN (synchronize) al server.
- Il server risponde con un messaggio SYN-ACK, confermando di aver ricevuto il messaggio precedente ed “aprendo” una porta in ascolto.
- Il client risponde con un messaggio ACK e la connessione viene stabilita.
L’attacco viene semplicemente eseguito non rispondendo al SYN-ACK inviato dal server, ovvero non eseguendo il passo numero 3. In questo modo il server allocherà le risorse necessarie alla comunicazione e rimarrà in ascolto aspettando l’ACK del client (che non arriverà mai). Eseguendo svariate richieste in parallelo il client riuscirà ad aprire altrettante “mezze” connessioni, così da esaurire le risorse della macchina target ed impedire alle nuove richieste di essere processate.
Per poter eseguire un attacco DoS quindi, un hacker deve tendenzialmente essere in grado di generare più traffico di quanto il server ne possa gestire, condizione generalmente molto difficile da soddisfare. Bisogna inoltre prestare particolare attenzione a non farsi riconoscere facilmente dall’infrastruttura (nel caso precedente, ad esempio, sarebbe semplice verificare che gran parte dei messaggi SYN provengono dallo stesso client).
Per superare questi limiti sono nati i Distributed Denial of Service (DDoS). L’idea generale dietro ad un attacco DDoS è quella di costruire una grossa rete di dispositivi compromessi (i.e., botnet) infettando il maggior numero possibile di device connessi in rete (si pensi alla vasta diffusione di dispositivi IoT di bassa qualità), così da avere a disposizione un vero e proprio esercito pronto a generare traffico internet verso la macchina target.
Memcrashed
Gli autori di Memcrashed hanno invece utilizzato un approccio differente da quello sopra descritto. Si è trattato infatti di un amplification attack, un attacco DDoS (in questo caso non malware driven) di modeste dimensioni, che ha sfruttato server Memcached[5] mal configurati per amplificare l’attacco di un fattore di oltre 51.000x.
L’attacco si svolge in quattro passi:
- L’hacker deposita un grosso payload su un server vulnerabile.
- Dopodichè forgia ed invia una richiesta al server Memcached con l’IP della vittima come indirizzo di origine del pacchetto (così che il server lo utilizzi come indirizzo di destinazione).
- Il server che riceve la richiesta cerca di essere d’aiuto e risponde mandando il payload depositato al punto 1.
- La macchina target satura le proprie risorse cercando di processare la mole di dati ricevuta, impedendo alle nuove richieste di essere processate.
Secondo i ricercatori di Cloudfare, una semplice richiesta di 15 bytes ha generato una risposta di 750 kB rappresentando un fattore di 51.000x!
In una successiva analisi i ricercatori di Cloudfare hanno identificato 88000 server Memcached vulnerabili, aspettandosi attacchi ancora più intensi nell’immediato futuro. La settimana successiva infatti, Arbor Networks, una compagnia che opera nella network security, ha comunicato che il loro sistema di protezione contro attacchi DDoS ha rilevato, e successivamente mitigato, un attacco molto simile ai danni di una società non rivelata. L’attacco si è posizionato subito in testa alla classifica facendo registrare 1.7 Tb/s di traffico.
DDoS negli
ultimi 10 anni. (Source: netscout.com)
[1] Una popolare piattaforma di project hosting e version control per developers.
[2] Servizio di protezione contro attacchi DDoS offerto da Akamai.
[3] Indicato anche come AIC, così da non creare confusione con la Central Intelligence Agency.
[4] Protocollo di rete che opera a livello di trasporto, si occupa di trasferire informazioni in maniera affidabile in una comunicazione.
[5] Memcached è un servizio di caching open-source pensato per velocizzare le pagine web dinamiche diminuendo lo stress sui database. Opera su TCP o UDP sulla porta 11211 e viene utilizzato da società come Facebook, Flickr, Twitter, Reddit, Youtube e GitHub.