CVE-2021-39226
Grafana Labs Grafana
2022-08-25
Grafana contains an authentication bypass vulnerability that allows authenticated and unauthenticated users to view and delete all snapshot data, potentially resulting in complete snapshot data loss.
Технический анализ и план устранения
Суть уязвимости
CVE-2021-39226 — это критическая уязвимость обхода аутентификации (Authentication Bypass) в Grafana. Проблема заключается в некорректной обработке путей в API-эндпоинтах снимков панелей (snapshots).
Уязвимость позволяет неавторизованным пользователям получать доступ к эндпоинтам /api/snapshots/:key и /api/snapshots-delete/:deleteKey. В результате злоумышленник может просматривать конфиденциальные данные, содержащиеся в снимках, а также удалять любые существующие снимки без прохождения проверки прав доступа. Это может привести к полной потере данных снимков и утечке чувствительной информации, отображаемой на дашбордах.
Как исправить
Основным и рекомендуемым способом устранения уязвимости является обновление Grafana до исправленной версии.
- Определите текущую версию Grafana:
grafana-server -v
- Обновите Grafana до одной из следующих версий (или выше):
- 8.1.6
- 7.5.11
-
6.7.6 (LTS)
-
Для систем на базе Debian/Ubuntu:
sudo apt-get update
sudo apt-get install --only-upgrade grafana
- Для систем на базе RHEL/CentOS:
sudo yum update grafana
- Перезапустите службу Grafana:
sudo systemctl restart grafana-server
Временные меры
Если немедленное обновление невозможно, необходимо ограничить доступ к уязвимым эндпоинтам на уровне обратного прокси-сервера (Reverse Proxy), такого как Nginx или HAProxy.
- Пример конфигурации для Nginx (добавьте в блок
serverперед основной конфигурацией Grafana):
location ~* ^/api/snapshots(/.*|$) {
return 403;
}
location ~* ^/api/snapshots-delete/.* {
return 403;
}
-
Если вы используете Grafana Cloud, никаких действий не требуется, так как исправление уже применено на стороне провайдера.
-
В качестве дополнительной меры рекомендуется временно отключить функционал создания снимков в конфигурационном файле
grafana.ini:
[snapshots]
external_enabled = false