Secondo quanto rilevato da Ivan Fratric, componente del Google Security Team, il Web server nginx sarebbe affetto da una vulnerabilità che potrebbe consentire a qualche utente malintenzionato di aggirare le restrizioni di sicurezza attraverso l'invio di richieste appositamente confezionate; il relativo advisory (CVE-2013-4547) informa comunque che il bug interesserebbe soltanto alcune configurazioni dell'engine in versioni specifiche.
Sostanzialmente il problema riguarderebbe le verifiche a carico delle request URI che non verrebbero eseguite in presenza di un carattere successivo a un spazio vuoto del quale non sia stato effettuato l'escape; si tratta di un'eventualità non prevista e non valida per il protocollo HTTP che ma che comunque potrebbe verificarsi nel caso in cui si stia utilizzando le release del Web server a partire dalla 0.8.41.
In pratica, e in caso di file statici e di percorsi in cui la directory iniziale sia seguita da spazi, ad esempio "/foo /../protected/file", si potrebbe avere una richiesta ad una risorsa sul modello della seguente:
/file .php
essa potrebbe permettere di rendere inservibili restrizioni come:
location /protected/ { deny all; }
in presenza di configurazioni come quella mostrata di seguito:
location ~ \.php$ { fastcgi_pass ... }
Esiste comunque un workaroud, da utilizzare all'interno dei blocchi server{}
, grazie al quale impedire che vengano processate le richieste contenenti le caratteristiche citate.
if ($request_uri ~ " ") { return 444; }
In ogni caso il problema esposto riguarda le versioni di nginx dalla 0.8.41 alla 1.5.6, da questo punto di vista dovrebbero essere invece sicure le release 1.5.7 e 1.4.4. E' inoltre presente una patch disponibile su questo link.
Via: CVE-2013-4547