Опубликованы подробности и эксплоит для уязвимости (CVE-2016-1247) в пакете с nginx, в конце октября устранённой в Debian и Ubuntu. Проблема специфична для deb-пакета nginx, не касается самого nginx, и может привести к выполнению кода с правами root при наличии у атакующего прав доступа «www-data» в системе.

Проблема вызвана некорректными настройками доступа к директории с логами web-сервера. Директория с логами /var/log/nginx имеет владельца «www-data», что позволяет пользователю с данными полномочиями произвольно манипулировать файлами в данной директории. При запуске или перезапуске nginx в лог добавляются записи от процесса с правами root. Периодически скрипт ротации логов меняет владельца файлов с логами на «www-data».

Локальный пользователь с правами www-data может создать в директории /var/log/nginx символическую ссылку вместо файла с логом «error.log». Таким образом, направив символическую ссылку «/var/log/nginx/error.log» на другой файл перед перезапуском nginx, можно изменить любой файл в системе. Перезапуск nginx по сигналу USR1 осуществляется скриптом ротации логов, который по умолчанию вызывается из cron.daily каждый день в 6:25.

Для организации запуска кода с правами root в эксплоите осуществляется создание символической ссылки на файл /etc/ld.so.preload (/var/log/nginx/error.log -> /etc/ld.so.preload), который после перезапуска nginx будет создан, а после ротации лога получит владельца www-data, что позволит прописать в нём произвольную библиотеку атакующего, после чего библиотека будет активироваться при выполнении любого исполняемого файла, например, можно запустить suid root приложение /usr/bin/sudo.

opennet.ru