[nginx-ru-announce] nginx security advisory (CVE-2013-4547)

Maxim Dounin mdounin at mdounin.ru
Tue Nov 19 15:02:36 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-announce