Inquinamento dei parametri HTTP - HTTP parameter pollution

L'inquinamento da parametri HTTP ( HPP ) è una vulnerabilità delle applicazioni Web sfruttata iniettando delimitatori di stringhe di query codificate in parametri già esistenti . La vulnerabilità si verifica se l'input dell'utente non viene disinfettato correttamente da un'applicazione web. Questa vulnerabilità consente l'inserimento di parametri negli URL creati da applicazioni Web. È stato presentato per la prima volta al pubblico nel 2009 da Stefano di Paola e Luca Carettoni, nella conferenza OWASP EU09 Polonia. L'impatto di tale vulnerabilità varia e può variare dal "semplice fastidio" alla completa interruzione del comportamento previsto di un'applicazione web. L'override dei parametri HTTP per alterare il comportamento di un'applicazione Web, bypassare i checkpoint di convalida dell'input e dell'accesso, nonché altre vulnerabilità indirette, sono possibili conseguenze di un attacco HPP.

Non esiste uno standard RFC su cosa dovrebbe essere fatto quando ha superato più parametri. L'HPP potrebbe essere utilizzato per l'inquinamento cross-channel, bypassando la protezione CSRF e i controlli di convalida dell'input WAF .

Comportamento

Quando ha passato più parametri con lo stesso nome, ecco come si comporta il backend.

Comportamento
Tecnologia Risultato dell'analisi Esempio
ASP.NET/IIS Tutte le occorrenze concatenate con una virgola param=val1,val2
ASP/IIS Tutte le occorrenze concatenate con una virgola param=val1,val2
PHP/Apache Solo ultima occorrenza param=val2
PHP/Zeus Solo ultima occorrenza param=val2
JSP, Servlet/Apache Tomcat Solo prima occorrenza param=val1
JSP, Servlet/Server di applicazioni Oracle Solo prima occorrenza param=val1
JSP, Servlet/Molo Solo prima occorrenza param=val1
IBM Lotus Domino Solo ultima occorrenza param=val2
IBM HTTP Server Solo prima occorrenza param=val1
mod_perl,libapreq2/Apache Solo prima occorrenza param=val1
Perl CGI/Apache Solo prima occorrenza param=val1
mod_wsgi (Python)/Apache Solo prima occorrenza param=val1
Python/Zope Tutte le occorrenze nell'elenco (array) param=['val1','val2']

tipi

Dalla parte del cliente

  • Primo ordine / HPP riflesso
  • Secondo ordine / HPP immagazzinato
  • Terzo Ordine / DOM HPP

Lato server

  • HPP standard
  • HPP di secondo ordine

Prevenzione

La corretta convalida dell'input e la consapevolezza della tecnologia Web su HPP sono la protezione contro l'inquinamento da parametri HTTP.

Guarda anche

Riferimenti

Bibliografia