Grafana MCP Server открывает неаутентифицированный SSE-интерфейс и допускает удалённую манипуляцию дашбордами
Автор: Evan Harris
Уровень риска: Низкий
Затронутый компонент: Grafana MCP Server
Введение
В рамках наших продолжающихся исследований безопасности серверов Model Context Protocol (MCP) мы выявили брешь в безопасности Grafana MCP Server, которая допускает несанкционированный доступ к экземплярам Grafana через неаутентифицированную сетевую экспозицию.
Обзор
Grafana MCP Server, запущенный с флагом -t sse, открывает неаутентифицированный интерфейс Server-Sent Events (SSE), который по умолчанию привязывается к 0.0.0.0:8000 при запуске через Docker-команду, приведённую в README MCP Server. Такая конфигурация позволяет удалённым атакующим с сетевым доступом взаимодействовать с экземплярами Grafana жертв без аутентификации.
Технические подробности
Проблема
При конфигурации с транспортом SSE через Docker сервер:
- Привязывается к
0.0.0.0:8000, становясь доступным с любого узла сети - Не предоставляет никакого механизма аутентификации для эндпоинта
/sse - Доверяет любому подключённому клиенту выполнение привилегированных операций Grafana
- Использует
GRAFANA_API_KEYжертвы для выполнения действий от её имени
Уязвимая конфигурация
Согласно README проекта, с добавлением транспорта SSE:
docker run --rm -p 8000:8000 \
-e GRAFANA_URL \
-e GRAFANA_API_KEY \
mcp/grafana -debug -t sse
Это делает эндпоинт http://victim_ip:8000/sse доступным всей сети.
Сценарий атаки
Настройка на стороне жертвы
Пользователь, следующий документации:
- Загружает Docker-образ Grafana MCP Server
- Настраивает переменные окружения
GRAFANA_URLиGRAFANA_API_KEYдля своего экземпляра Grafana - Включает транспорт SSE, добавляя
-t sseк Docker-команде - Неосознанно открывает
http://their_ip:8000/sseатакующим на сетевом уровне
Эксплуатация атакующим
Атакующий с сетевым доступом может:
- Обнаружить открытый эндпоинт по адресу
http://victim_ip:8000/sse - Подключиться с помощью MCP Inspector:
npx @modelcontextprotocol/inspector sse --port 8000 - Выполнять несанкционированные операции с использованием доступных инструментов Grafana
- Манипулировать дашбордами, перечисляя, создавая, обновляя или удаляя их
Proof of Concept
Демонстрация атаки
С помощью MCP Inspector атакующий может подключиться к открытому SSE-эндпоинту и выполнять операции Grafana:
- Перечислить команды (teams), чтобы понять структуру организации
- Перечислить дашборды, чтобы выявить конфиденциальную бизнес-аналитику
- Создать дашборды, чтобы внедрить вредоносный контент
- Обновить дашборды, чтобы изменить существующие визуализации
- Получить доступ к источникам данных и другому привилегированному функционалу Grafana
Оценка воздействия
Этот вектор атаки допускает:
Нарушение конфиденциальности
- Обнаружение источников данных, раскрывающее внутренние системы и конфигурации
- Перечисление дашбордов, раскрывающее конфиденциальную бизнес-аналитику
- Утечку информации о пользователях и командах через интерфейс MCP
Компрометация целостности
- Внедрение вредоносного контента, потенциально вводящее пользователей в заблуждение
- Подмену конфигурации, влияющую на точность визуализаций
- Манипуляцию дашбордами посредством их создания, изменения или удаления
Воздействие на доступность
- Нарушение работы сервиса через удаление или повреждение дашбордов
- Потенциальный отказ в обслуживании через перегрузку системы
- Истощение ресурсов из-за чрезмерного числа запросов к инструментам
Факторы риска
- Требование сетевого доступа: атакующим нужен доступ к жертве на сетевом уровне
- Отсутствие аутентификации: любой клиент может подключиться и выполнять привилегированные операции
- Привязка Docker по умолчанию: экспозиция на
0.0.0.0увеличивает поверхность атаки - Незаметная работа: атаки могут происходить без ведома пользователя
Рекомендуемые меры по устранению
Для пользователей
- Избегайте использования
-t sseв общих или недоверенных сетях - Внедрите ограничения на сетевом уровне с помощью межсетевых экранов или VPN
- Используйте привязку к localhost, изменив маппинг портов Docker на
127.0.0.1:8000:8000 - Отслеживайте журналы Grafana на предмет неожиданной активности API
Хронология раскрытия
- 2024-05-22: Уязвимость обнаружена и сообщена в Grafana через Intigriti VDP
- 2024-05-23: Grafana подтверждает получение отчёта
- 2024-05-23: Отчёт помечен командой Grafana как “Informative”
- 2024-05-23: Grafana предоставляет разрешение на публичную публикацию результатов
- 2025-09-02: Публичное раскрытие и публикация бюллетеня безопасности
Заключение
Неаутентифицированный SSE-интерфейс в Grafana MCP Server демонстрирует важность безопасных настроек по умолчанию в инструментах разработки, связывающих ИИ-агентов с корпоративными системами.
Хотя требование сетевого доступа ограничивает поверхность атаки, организациям, разворачивающим MCP-серверы, следует применять стратегии эшелонированной защиты (defense-in-depth) и сохранять осведомлённость о рисках сетевой экспозиции, особенно в общих средах.