nginx security advisory (CVE-2013-4547)
Maxim Dounin
mdounin at mdounin.ru
Tue Nov 19 15:02:33 UTC 2013
Hello!
Ivan Fratric из Google Security Team обнаружил ошибку в nginx, которая
позволяет в некоторых случаях обходить ограничения безопасности с
помощью специального запроса, а также может иметь другие последствия
(CVE-2013-4547).
Некоторые проверки URI запроса не делались над символом, следующим за
незакодированным символом пробела (незакодированный пробел недопустим в
соответствии с протоколом HTTP, однако поддерживается начиная с nginx
0.8.41 из соображений совместимости). Одним из результатов ошибки была
возможность получить доступ к файлу, закрытому с помощью ограничений
доступа вида
location /protected/ {
deny all;
}
запросив его как "/foo /../protected/file" (в случае статических файлов -
только если существует каталог "foo ", с пробелом на конце), а также
возможность вызывать специальную обработку файла с пробелом на конце в
конфигурации вида
location ~ \.php$ {
fastcgi_pass ...
}
запросив файл как "/file \0.php".
Проблеме подвержены версии nginx 0.8.41 - 1.5.6.
Проблема исправлена в nginx 1.5.7, 1.4.4.
Патч, исправляющий проблему, доступен тут:
http://nginx.org/download/patch.2013.space.txt
В качестве временной защиты можно в каждом блоке server{}
воспользоваться конфигурацией вида:
if ($request_uri ~ " ") {
return 444;
}
--
Maxim Dounin
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru