Slowloris: un DoS evoluto contro i webservers
by admin on Jun.23, 2009, under Hacking, Sicurezza
L’ultima settimana ha visto un risveglio di attenzione nei confronti degli attacchi di tipo DoS portati verso servers web: lo si è visto ad esempio in occasione degli attacchi più o meno “naive” sferrati dai simpatizzanti degli oppositori del regime iraniano.
Robert “RSnake” Hansen, un ricercatore in ambito sicurezza ha rilasciato un tool in grado di mettere in crisi anche grandi server Web utilizzando un normale PC collegato a Internet.
“Slowloris”, questo il suo nome, non opera come un comune exploit, sfruttando cioè qualche specifica vulnerabilità, bensì utilizzando una caratteristica del protocollo HTTP nota come “richiesta parziale HTTP”.
Consiste in pratica nel fatto che un client non deve necessariamente trasmettere al server tutti i dati relativi ad una richiesta GET o POST in una volta sola, ma può ripartirli su un certo numero di richieste HTTP, appunto “parziali”.
La prima richiesta parziale costringe il server a mantenere impegnate, riservandole per la risposta, notevoli risorse, mentre rimane in attesa del completamento della richiesta.
Il client, da parte sua, continua a inviare le intestazioni successive ad intervalli regolari per evitare la chiusura dei sockets.
L’idea che sta dietro a questo attacco Denial of Service (DoS), portato tramite connessioni TCP mezze aperte, non è nuova, ma non era mai stata implementata in un tool.
Non si tratta comunque di un DoS TCP, dato che effettua delle connessioni TCP piene, e non parziali, tuttavia effettua parziali richieste HTTP. Per analogia lo potremmo paragonare ad un SYN flood portato su HTTP. Slowloris non è neppure un flooder di richieste GET, in quanto richiede solamente poche centinaia di richieste a lungo termine ed a intervalli regolari, contro le decine di migliaia normalmente previste negli attacchi di quel tipo.
E’ notevole il fatto che vengono ridotti al minimo gli effetti collaterali e la larghezza di banda impegnata verso porte e servizi indipendenti, la cui disponibilità rimane sostanzialmente invariata, mentre il servizio HTTP non è disponibile.
Slowloris è perciò in grado di passare relativamente inosservato rispetto ai più diffusi tools, che normalmente utilizzano tecniche di flooding.
Inoltre, mentre l’attacco è in corso, il file di log non lo riporterà fino a quando la richiesta non sia stata completata.
In questo modo si può mantenere un server sotto stress per un minuto alla volta, senza che una sola voce appaia nel file di log, a mettere in guardia qualcuno. Naturalmente, una volta che la sessione di attacco si arresta, vi saranno diverse centinaia di errori 400 nel log del server web. Al momento la cosa è inevitabile, sebbene sia possibile trasformarli in messages 200 OK completando una valida richiesta. Ma Slowloris ancora non lo fa.
Web server vulnerabili a questo tipo di attacco sono paradossalmente proprio quelli che, come Apache HTTP Server, attuano di norma alcune strategie per evitare sovraccarichi del sistema, consentendo, ad esempio, solo un numero limitato di richieste HTTP in parallelo.
Una volta tanto, Microsoft IIS non è la vittima designata.
I server Web possono essere protetti utilizzando load balancer, oppure filtri che inoltrino al server solo le richieste HTTP complete, come HTTPReady.
Questo è vero tuttavia solamente per richieste GET e HEAD. Modificando perciò il metodo usato da Slowloris in POST, HTTPReady smette di essere una valida difesa contro questo tipo di attacco.
La sua portata può essere ridimensionata anche semplicemente riducendo il parametro relativo al time-out per le richieste HTTP.


June 23rd, 2009 on 10:24 pm
.