Grafana MCP Server udostępnia nieuwierzytelniony interfejs SSE umożliwiający zdalną manipulację pulpitami
Autor: Evan Harris
Ryzyko: Niskie
Komponent, którego dotyczy problem: Grafana MCP Server
Wprowadzenie
W ramach naszych ciągłych badań nad bezpieczeństwem serwerów Model Context Protocol (MCP) zidentyfikowaliśmy lukę bezpieczeństwa w Grafana MCP Server, która umożliwia nieautoryzowany dostęp do instancji Grafany poprzez nieuwierzytelnione udostępnienie w sieci.
Przegląd
Grafana MCP Server po uruchomieniu z flagą -t sse udostępnia nieuwierzytelniony interfejs Server-Sent Events (SSE), który domyślnie wiąże się z adresem 0.0.0.0:8000, gdy jest uruchamiany za pomocą polecenia Docker podanego w pliku README serwera MCP. Taka konfiguracja pozwala zdalnym atakującym z dostępem do sieci na interakcję z instancjami Grafany ofiar bez uwierzytelnienia.
Szczegóły techniczne
Problem
Przy konfiguracji z transportem SSE za pośrednictwem Dockera serwer:
- Wiąże się z adresem
0.0.0.0:8000, co czyni go dostępnym z dowolnego hosta w sieci - Nie zapewnia żadnego mechanizmu uwierzytelniania dla punktu końcowego
/sse - Ufa dowolnemu podłączonemu klientowi w zakresie wykonywania uprzywilejowanych operacji Grafany
- Wykorzystuje
GRAFANA_API_KEYofiary do wykonywania działań w jej imieniu
Podatna konfiguracja
Zgodnie z plikiem README projektu z dodaniem transportu SSE:
docker run --rm -p 8000:8000 \
-e GRAFANA_URL \
-e GRAFANA_API_KEY \
mcp/grafana -debug -t sse
Powoduje to udostępnienie punktu końcowego pod adresem http://victim_ip:8000/sse całej sieci.
Scenariusz ataku
Konfiguracja ofiary
Użytkownik postępujący zgodnie z dokumentacją:
- Pobiera obraz Docker serwera Grafana MCP Server
- Konfiguruje zmienne środowiskowe
GRAFANA_URLiGRAFANA_API_KEYdla swojej instancji Grafany - Włącza transport SSE, dodając
-t ssedo polecenia Docker - Nieświadomie udostępnia
http://their_ip:8000/sseatakującym na poziomie sieci
Wykorzystanie przez atakującego
Atakujący z dostępem do sieci może:
- Wykryć udostępniony punkt końcowy pod adresem
http://victim_ip:8000/sse - Połączyć się przy użyciu MCP Inspector:
npx @modelcontextprotocol/inspector sse --port 8000 - Wykonywać nieautoryzowane operacje przy użyciu dostępnych narzędzi Grafany
- Manipulować pulpitami poprzez ich wyświetlanie, tworzenie, aktualizowanie lub usuwanie
Proof of Concept
Demonstracja ataku
Za pomocą MCP Inspector atakujący może połączyć się z udostępnionym punktem końcowym SSE i wykonywać operacje Grafany:
- Wyświetlić listę zespołów, aby poznać strukturę organizacji
- Wyświetlić listę pulpitów, aby zidentyfikować wrażliwe dane analityki biznesowej
- Tworzyć pulpity, aby wstrzyknąć złośliwą treść
- Aktualizować pulpity, aby modyfikować istniejące wizualizacje
- Uzyskać dostęp do źródeł danych i innych uprzywilejowanych funkcji Grafany
Ocena skutków
Ten wektor ataku umożliwia:
Naruszenie poufności
- Wykrycie źródeł danych, ujawniające systemy backendowe i konfiguracje
- Wyliczenie pulpitów, ujawniające wrażliwe dane analityki biznesowej
- Wyciek informacji o użytkownikach i zespołach za pośrednictwem interfejsu MCP
Naruszenie integralności
- Wstrzyknięcie złośliwej treści, mogące wprowadzić użytkowników w błąd
- Manipulowanie konfiguracją, wpływające na dokładność wizualizacji
- Manipulowanie pulpitami poprzez tworzenie, modyfikowanie lub usuwanie
Wpływ na dostępność
- Zakłócenie działania usługi poprzez usunięcie lub uszkodzenie pulpitów
- Potencjalna odmowa usługi (denial of service) poprzez przeciążenie systemu
- Wyczerpanie zasobów poprzez nadmierne żądania narzędzi
Czynniki ryzyka
- Wymóg dostępu do sieci: atakujący potrzebują dostępu do sieci ofiary na poziomie sieci
- Brak uwierzytelniania: każdy klient może się połączyć i wykonywać uprzywilejowane operacje
- Domyślne wiązanie Dockera: udostępnienie na
0.0.0.0zwiększa powierzchnię ataku - Ciche działanie: ataki mogą odbywać się bez wiedzy użytkownika
Zalecane środki zaradcze
Dla użytkowników
- Unikaj używania
-t ssew sieciach współdzielonych lub niezaufanych - Wprowadź ograniczenia na poziomie sieci przy użyciu zapór sieciowych lub sieci VPN
- Zastosuj wiązanie z localhost, zmieniając mapowanie portów Dockera na
127.0.0.1:8000:8000 - Monitoruj dzienniki Grafany pod kątem nieoczekiwanej aktywności API
Oś czasu ujawnienia
- 2024-05-22: Luka odkryta i zgłoszona firmie Grafana za pośrednictwem Intigriti VDP
- 2024-05-23: Grafana potwierdza otrzymanie zgłoszenia
- 2024-05-23: Zgłoszenie oznaczone jako “Informative” przez zespół Grafany
- 2024-05-23: Grafana udziela zgody na publiczne opublikowanie ustaleń
- 2025-09-02: Publiczne ujawnienie i publikacja poradnika bezpieczeństwa
Podsumowanie
Nieuwierzytelniony interfejs SSE w Grafana MCP Server pokazuje, jak ważne są bezpieczne ustawienia domyślne w narzędziach programistycznych, które łączą agentów AI z systemami korporacyjnymi.
Choć wymóg dostępu do sieci ogranicza powierzchnię ataku, organizacje wdrażające serwery MCP powinny stosować strategie obrony wielowarstwowej (defense-in-depth) i zachowywać świadomość ryzyka związanego z udostępnieniem w sieci, zwłaszcza w środowiskach współdzielonych.