Lo Slow HTTP Attack è una tecnica di attacco denial-of-service (DoS) che consiste nell’inviare richieste HTTP a un server web in modo estremamente rallentato. L’obiettivo dell’attaccante è di consumare le risorse del server e rendendo la risorsa inaccessibile agli utenti legittimi.

In questo articolo vedremo come funziona questo tipo di attacco e come è possibile mettersi al riparo.

Slow HTTP Attack

Come funziona l’attacco

Lo Slow HTTP Attack, noto anche come Slow Loris, è una tecnica di attacco informatico che sfrutta le debolezze dei server web e delle applicazioni inviando richieste HTTP con estrema lentezza. In buona sostanza, questa tattica consiste nell’invio di dati al server un carattere alla volta, con un notevole intervallo di tempo tra ciascun carattere. Il risultato di questa azione è che la connessione rimane aperta, poiché il server continua ad aspettare l’arrivo della sequenza di caratteri “\n\n”.

È importante notare che una richiesta HTTP tipica è composta principalmente da testo che include il tipo di richiesta (ad esempio, GET o POST) e informazioni sul client, come il tipo di browser o dispositivo utilizzato.
Ciò che rende questa tecnica particolarmente efficace è che ogni richiesta HTTP è tradizionalmente conclusa da una sequenza di due caratteri di newline, ossia “\n\n”. Questa sequenza di caratteri indica la fine della richiesta HTTP.

L’effetto collaterale di questo attacco è che il server è costantemente impegnato nell’elaborazione delle richieste, impedendo in modo sostanziale ad altri utenti legittimi di accedere al server attaccato. Questa tattica può saturare le risorse del server, rallentare notevolmente le sue prestazioni o addirittura causarne il blocco, con conseguente interruzione del servizio per gli utenti legittimi.

Esistono diversi modi per inviare richieste HTTP secondo le tecniche usate nello slow http attack.

  1. Un metodo comune è quello di inviare la richiesta in piccoli frammenti di dati, ciascuno separato da un lasso di tempo predefinito.
  2. Un altro metodo è quello di inviare la richiesta in un formato non valido, in modo che il server abbia necessità di elaborare la richiesta più a lungo.

Effetti

Un attacco Slow HTTP può avere gravi conseguenze per un sito web o un’applicazione web.
Come anticipavamo, qualora l’attacco sia sufficientemente intenso, può rendere il sito web o l’applicazione web inaccessibile agli utenti legittimi.

Esempi di attacco

A differenza degli attacchi DDoS brute-force, che inviano un gran numero di richieste HTTP contemporaneamente, gli attacchi Slow Post DDoS inviano le richieste lentamente, consumando le risorse del server nel tempo.

Questo li rende difficoltosi da rilevare e mitigare perché possono essere lanciati da un singolo computer e possono sembrare traffico normale.
Inoltre, non richiedono una grande quantità di risorse, il che li rende accessibili a chiunque.

Nel corso degli anni, ci sono stati diversi esempi di attacchi Slow HTTP.
In uno dei casi più noti, nel 2017, un gruppo di hacker ha utilizzato questa tipologia di attacco per rendere inaccessibile il sito web del Senato degli Stati Uniti.

In un altro caso, nel 2022, un gruppo di hacker ha utilizzato un attacco Slow HTTP per rendere inaccessibili i siti web di diverse aziende italiane, tra cui Trenitalia e Poste Italiane.

Mentre quest’anno è stato il sito del Ministero della Difesa ad essere preso di mira: un messaggio provocatorio, gli hacktivisti filorussi annunciarono di aver chiuso il sito web del Ministero della Difesa italiano.

Come difendersi

Esistono diverse misure che possono essere prese per difendersi dagli attacchi Slow HTTP.
Alcune di queste misure includono:

  • Limitare il numero di connessioni HTTP aperte per utente. Questa misura impedisce agli attaccanti di aprire un gran numero di connessioni HTTP a un server web, rendendo più difficile per loro eseguire un attacco Slow HTTP.
  • Limitare la lunghezza dell’header e del body della richiesta
    Impostare limiti ragionevoli sulla lunghezza dell’header e del body della richiesta HTTP. Questo può impedire che le richieste troppo lunghe o inusuali saturino il server. Inoltre, considera l’uso di limiti specifici dell’URL per risorse che accettano un body della richiesta.
  • Impostare un timeout per le connessioni HTTP
    Configurare un timeout di connessione assoluto, se possibile.
    Tuttavia, è importante trovare un equilibrio, poiché un timeout troppo breve potrebbe causare la caduta di connessioni legittime, mentre un timeout troppo lungo non fornirà alcuna protezione dagli attacchi. Si consiglia di basare il valore del timeout sulle statistiche delle lunghezze delle connessioni. Ad esempio, un timeout leggermente superiore alla durata media delle connessioni dovrebbe essere adeguato per la maggior parte dei client legittimi.
  • Limitare la lunghezza dell’header e del body della richiesta
    Imposta limiti ragionevoli sulla lunghezza dell’header e del body della richiesta HTTP. Questo può impedire che le richieste troppo lunghe o inusuali saturino il server. Inoltre, considera l’uso di limiti specifici dell’URL per risorse che accettano un body della richiesta.
  • Utilizzare un firewall per bloccare gli attacchi Slow HTTP
    Alcuni firewall sono in grado di rilevare e bloccare gli attacchi Slow HTTP.

Oltre alle misure difensive già menzionate, esistono anche altre tecniche che possono essere utilizzate per mitigare gli attacchi Slow HTTP. Ad esempio, i siti web e le applicazioni web possono utilizzare algoritmi di rilevamento degli attacchi Slow HTTP per identificare e bloccare le richieste HTTP sospette.

Inoltre, i siti web e le applicazioni web possono utilizzare tecniche di compressione dei dati per ridurre la dimensione delle richieste HTTP. Questo può rendere più difficile per gli attaccanti consumare le risorse del server inviando richieste HTTP lentamente.