[Только зарегистрированные могут видеть это. ]
Компания Nginx [Только зарегистрированные могут видеть это. ] о выпуске [Только зарегистрированные могут видеть это. ] для недавно обнаруженной уязвимости CVE-2013-4547.


Баг в Nginx, найденный сотрудником компании Google, позволяет злоумышленнику обойти ограничения безопасности в некоторых конфигурациях веб-сервера с помощью специально составленного запроса. Баг может иметь и другие возможности его эксплуатации.


Проблема в том, что Nginx некорректно обрабатывает URI с пробелами. Символ пробела запрещено использовать по стандарту HTTP, но веб-сервер Nginx ради обратной совместимости обрабатывает пробелы с версии 0.8.41. При этом некоторые проверки URI не осуществляются, если часть URI находится за пробелом.


Предположим, что в настройках веб-сервера запрещен доступ к части сайта:
Код:
    location /protected/ {
        deny all;
    }
Так вот, кто угодно через интернет может получить доступ к закрытой части сервера, если запросит файл, используя пробел.
Код:
/foo /../protected/file
Способ работает со статическими файлами, если директория "foo " существует и имеет пробел на конце.


Другой вариант эксплуатации уязвимости — запуск на исполнение файла с завершающим пробелом в имени в конфигурации:

Код:
    location ~ \.php$ {        fastcgi_pass ...
    }
Его можно запустить запросом "/file \0.php".


Баг присутствует во всех версиях Nginx, начиная с 0.8.41 и заканчивая 1.5.6, но патч выпущен только с версиями 1.5.7 и 1.4.4.


В качестве временной защитной меры можно запретить использование пробелов через конфигурационный файл.
Код:
    if ($request_uri ~ " ") {
        return 444;
    }
©Хакер