Уязвимости в Grafana, позволяющие получить доступ к файлам в системе

В открытой платформе визуализации данных Grafana выявлена уязвимость (CVE-2021-43798), позволяющая выйти за пределы базового каталога и получить доступ к произвольным файлам в локальной файловой системе сервера, насколько это позволяют права доступа пользователя, под которым выполняется Grafana. Проблема вызвана некорректной работой обработчика пути “/public/plugins//”, в котором допускалось использование символов “..” для доступа к нижележащим каталогам.

Уязвимость может быть эксплуатирована через обращение к URL типовых предустановленных плагинов, таких как “/public/plugins/graph/”, “/public/plugins/mysql/” и “/public/plugins/prometheus/” (всего предустановлено около 40 плагинов). Например, для доступа к файлу /etc/passwd можно было отправить запрос “/public/plugins/prometheus/../../../../../../../../etc/passwd”. Для выявления следов эксплутации рекомендуется проверить наличие маски “..%2f” в логах http-сервера.


Проблема проявлялась начиная с версии 8.0.0-beta1 и устранена в выпусках Grafana 8.3.1, 8.2.7, 8.1.8 и 8.0.7, но следом были выявлены ещё две похожие уязвимости (CVE-2021-43813, CVE-2021-43815) которые проявлялись начиная с версий Grafana 5.0.0 и Grafana 8.0.0-beta3, и позволяли аутентифицированному пользователю Grafana получить доступ к произвольным файлам в системе, имеющим расширения “.md” и “.csv” (с именами файлов только в нижнем или только в верхнем регистре), через манипуляцию с символами “..” в путях “/api/plugins/.*/markdown/.*” и “/api/ds/query”. Для устранения данных уязвимостей сформированы обновления Grafana 8.3.2 и 7.5.12.

Release. Ссылка here.