Уязвимость в GitLab, позволяющая прочитать содержимое системных файлов
В корректирующих обновлениях платформы для организации совместной разработки GitLab 8.13.3, 8.12.8, 8.11.10 и 8.10.13 устранена критическая уязвимость (CVE-2016-9086), позволяющая аутентифицированному в web-интерфейсе GitLab пользователю получить доступ к произвольным файлам на сервере.
Проблема вызвана ошибкой в реализации функции импорта и экспорта проектов, впервые появившейся в GitLab 8.9 и позволяющей пользователю загрузить файлы своих проектов в форме tar-архива. До версии 8.13 функция была разрешена только администраторам, но после 8.13 стала доступна всем пользователям. Суть уязвимости в некорректной проверке символических ссылок в передаваемом архиве, что позволяет заменить типовые файлы проекта на ссылку на внешний файл и получить доступ к этому файлу.
Например, в архив можно добавить ссылку project.json, указывающую на /etc/passwd и после импорта проекта будет выведена ошибка о некорректности данных JSON, включающая содержимое всего файла. Таким способом можно прочитать файлы с ключами аутентификации и получить доступ к серверу. Всем пользователям рекомендуется срочно обновить GitLab или применить патч. В качестве обходного пути защиты можно отключить в настройках поддержку экспорта проектов ("Admin Area/Settings/Import Sources/GitLab export").