Компания 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;
    }



Оставить мнение