Автор: 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 доступным всей сети.

Сценарий атаки

Настройка на стороне жертвы

Пользователь, следующий документации:

  1. Загружает Docker-образ Grafana MCP Server
  2. Настраивает переменные окружения GRAFANA_URL и GRAFANA_API_KEY для своего экземпляра Grafana
  3. Включает транспорт SSE, добавляя -t sse к Docker-команде
  4. Неосознанно открывает http://their_ip:8000/sse атакующим на сетевом уровне

Эксплуатация атакующим

Атакующий с сетевым доступом может:

  1. Обнаружить открытый эндпоинт по адресу http://victim_ip:8000/sse
  2. Подключиться с помощью MCP Inspector: npx @modelcontextprotocol/inspector sse --port 8000
  3. Выполнять несанкционированные операции с использованием доступных инструментов Grafana
  4. Манипулировать дашбордами, перечисляя, создавая, обновляя или удаляя их

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) и сохранять осведомлённость о рисках сетевой экспозиции, особенно в общих средах.

Ссылки