Автор: 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-сервери, слід впроваджувати стратегії ешелонованого захисту та зберігати обізнаність про ризики мережевого відкриття, особливо у спільних середовищах.

Джерела