Mettere il "freno a mano" ad un web server

L’esperto di sicurezza Robert “RSnake” Hansen ha rilasciato un tool in grado di mettere ko anche i web server più “grossi” usando un semplice PC connesso a Internet.
“Slowloris” non sfrutta particolari vulnerabilità, ma utilizza invece una feature del protocollo HTTP nota come “richieste HTTP parziali”.
I client infatti non sono costretti a forwardare l’intero contenuto di una GET o una POST in un solo passaggio, possono suddividerlo in un certo numero di query HTTP.

A seconda di come è configurato il web server, la prima richiesta può quindi fare in modo che vengano mantenute delle risorse per la response in attesa che venga completata l’intera request.
I web server vulnerabili a questa sorta di “freno a mano” remoto sono stranamente proprio quelli che implementano strategie per evitare gli overload, per esempio, consentendo solo un determinato numero di richieste HTTP parallele.
Stando a quanto dichiarato da Hansen fra questi Apache Server 1.x e 2.x, dhttpd, GoAhead WebServer e Squid. Non vulnerabili al problema IIS6.0, IIS7.0 e lighttpd.
I web server possono essere protetti mediante l’utilizzo di load balancers come Perlbal o web applications firewall che forwardino in maniera completa le richieste HTTP al server.
In caso di attacchi improvvisi, il problema può essere “mitigato”, semplicemente riducendo il parametro di time-out per le richieste http.

RIFERIMENTI:
* Remote handbrake for web servers by Heise Security
* Slowloris HTTP DoS, an explanation of the Slowloris concept from RSnake.

Parameter pollution: un nuovo modo di attaccare le web applications

All’ultima conferenza OWASP, gli esperti di sicurezza italiani Luca Carettoni e Stefano Di Paola hanno dimostrato un nuovo modo di manipolare le web applications e ingannare i classici meccanismi di sicurezza: HTTP Parameter Pollution (HPP).
Questa forma di attacco consiste nell’inviare parametri in GET o POST in forma o ordine “anomalo”, o usando caratteri delimitatori strani.
Una richiesta del tipo:
GET /foo?par1=val1&par2=val2 HTTP/1.1
verrà processata in maniera classica, mentre questa:
GET /foo?par1=val1&par1=val2 HTTP/1.1
con due occorrenze dello stesso parametro par1 è suscettibile a varie interpretazioni, a seconda della routine di parsing dell’application/web server destinatario.

Stando a Carettoni e Di Paola, questo può causare comportamenti anomali e indesiderati, oltre a prestarsi a potenziali attacchi di sicurezza.
Gli stessi WAFs (Web Application Firewalls) e i moduli di sicurezza dei server sarebbero vulnerabili ad attacchi di tipo HPP.
Mentre il modulo Apache’s ModSecurity è infatti in grado di riconoscere un attacco SQL-injection come questo:
/index.aspx?page=select 1,2,3 from table where id=1
non è in grado di inviduare quest’altro:
/index.aspx?page=select 1&page=2,3 from table where id=1
La tecnica HPP potrebbe altresì essere usata per lanciare attacchi di tipo Cross-Site-Scripting (XSS) a danno dei vari web browsers.
Il filtro anti-XSS di Internet Explorer 8 è infatti tra i componenti vulnerabili.

Carettoni e Di Paola come “rimedio” consigliano un filtering appropriato e rigoroso dei parametri oltre all’uso dell’URL encoding. Suggerito anche l’uso di un URL rewriting che utilizzi espressioni regolari “sicure”.

RIFERIMENTI:
New type of attack on web applications: Parameter Pollution, by Heise Security