🔴 严重 | CVE-2026-5366 — Prefect version 3.6.23 is vulnerable to remote cod...
🔴 【深度分析】严重安全漏洞:CVE-2026-5366
CVSS 评分: 严重(9.9)🔴 状态: Awaiting Analysis 发布时间: 2026-06-20
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-5366 |
| CVSS 评分 | 9.9 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| CWE 分类 | CWE-94 |
| 发布时间 | 2026-06-20 |
| 最后更新 | 2026-06-22 |
| 状态 | Awaiting Analysis |
| 数据来源 | security@huntr.dev |
好的,作为一名资深网络安全分析师,我将基于您提供的 NVD 原始数据,为您生成一篇专业的漏洞深度分析文章。
漏洞深度分析:CVE-2026-5366 - Prefect GitRepository 远程代码执行漏洞
CVSS 评分:9.9(严重)
危害等级:严重 (Critical)
攻击向量:网络 (AV:N)
攻击复杂度:低 (AC:L)
所需权限:低 (PR:L)
用户交互:无 (UI:N)
影响范围:已变更 (S:C)
机密性/完整性/可用性影响:高 (C:H/I:H/A:H)
漏洞概述
CVE-2026-5366 是一个存在于 Prefect 3.6.23 版本中的严重远程代码执行(RCE)漏洞。该漏洞源于 Prefect 工作流引擎中 GitRepository 存储类对用户输入处理不当。攻击者通过注入恶意的 Git 参数,可以在运行工作流的 Worker 机器上执行任意系统命令。由于该漏洞允许低权限用户(仅需部署创建权限)在共享工作池环境中横向移动并完全控制 Worker 节点,其威胁等级被评定为“严重”。
受影响组件与版本
- 受影响组件: Prefect 工作流引擎中的
GitRepository存储类。 - 受影响版本: Prefect 3.6.23 及更早版本(具体影响范围需等待官方公告确认)。
- 修复版本: 官方尚未发布补丁,建议关注 Prefect 官方安全公告。
漏洞原理分析
该漏洞的核心问题在于 CWE-94: 代码生成控制不当(代码注入),具体表现为对 Git 命令参数的不安全拼接。
Prefect 允许用户通过 GitRepository 类来定义从 Git 仓库拉取代码的工作流。该类提供了 commit_sha 和 directories 等参数,用于指定要检出的特定提交或子目录。
commit_sha参数注入:- 在底层实现中,
commit_sha参数的值被直接传递给git checkout或git rev-parse等命令。 - 由于缺乏有效的输入验证和过滤,并且没有使用
--分隔符来明确标识参数值的结束,攻击者可以在commit_sha字段中注入 Git 命令行标志(flags)。 - 例如,攻击者可以构造一个类似
--upload-pack=malicious.sh的值。当 Prefect 执行git checkout --upload-pack=malicious.sh时,Git 会将其解释为--upload-pack选项,并尝试执行malicious.sh脚本。攻击者可以预先将恶意脚本放置在 Worker 机器可访问的位置(如通过另一个 Git 仓库或共享文件系统),从而触发远程代码执行。
- 在底层实现中,
directories参数注入:- 类似地,
directories参数用于在git sparse-checkout操作中指定需要检出的目录列表。 - 攻击者可以在
directories列表的某个条目中注入 Git 标志。例如,注入--config core.hooksPath=/path/to/malicious/hooks可以更改 Git 的钩子路径,从而在后续的 Git 操作(如git checkout)中执行恶意钩子脚本。
- 类似地,
攻击向量总结:
攻击者通过向 Prefect 的 API 或 UI 提交一个包含恶意 commit_sha 或 directories 参数的部署定义,即可触发漏洞。Prefect Server 在接收到该部署后,会将其分发给 Worker 执行。Worker 在执行 GitRepository 相关的 Git 命令时,由于参数处理不当,会执行攻击者注入的恶意命令。
影响评估
- 攻击复杂度:低 (AC:L)。攻击者无需复杂的网络或协议知识,只需构造特定的字符串即可。
- 所需权限:低 (PR:L)。攻击者只需要拥有创建或修改部署的权限。在 Prefect 的多租户环境中,这通常是一个常见的用户角色,使得攻击面非常广泛。
- 用户交互:无 (UI:N)。漏洞利用过程完全自动化,无需受害者(如管理员)进行任何点击或确认操作。
- 利用条件: 攻击者需要能够向 Prefect Server 提交部署配置。Worker 机器需要能够访问攻击者指定的恶意程序(例如,通过另一个 Git 仓库或网络共享)。
- 潜在后果:
- 完全控制 Worker 节点 (C:H/I:H/A:H):成功利用后,攻击者可以在 Worker 机器上以运行 Prefect Agent 的权限执行任意命令。这通常意味着可以窃取敏感数据、安装后门、横向移动到其他系统,甚至利用 Worker 的计算资源进行挖矿等恶意活动。
- 共享工作池污染 (S:C):在多租户环境中,一个租户的攻击者可以利用此漏洞控制共享的 Worker 池,进而窃取或篡改其他租户的工作流数据、代码和凭证,导致严重的数据泄露和供应链攻击。
- 持久化与横向移动:攻击者可以利用 Worker 节点作为跳板,攻击 Prefect Server 或其他内部系统。
修复建议
1. 官方补丁(首选)
- 关注官方公告: 密切关注 Prefect 官方安全公告和 GitHub 仓库的 Release 页面。一旦官方发布修复版本(如 3.6.24 或更高版本),请立即升级所有 Prefect Server 和 Worker 组件。
- 升级步骤: 使用
pip install --upgrade prefect命令进行升级,并重启所有相关服务。
2. 临时缓解措施
在官方补丁发布前,可以采取以下措施降低风险:
- 限制部署创建权限: 严格审查并限制谁可以创建或修改部署。在 Prefect 中,通过 RBAC(基于角色的访问控制)将
create_deployment权限仅授予受信任的管理员用户。 - 输入验证与过滤: 如果可能,在 Prefect Server 端或 API 网关层增加对
commit_sha和directories参数的输入验证。拒绝包含--、;、|、$()等特殊字符或 Git 标志的输入。 - 最小权限原则: 确保运行 Prefect Agent 的操作系统用户具有最小权限。避免使用 root 或具有高权限的账户运行 Worker。
- 网络隔离: 将 Worker 节点部署在隔离的网络环境中,限制其对外部网络的访问,特别是出站连接。这可以增加攻击者部署恶意 payload 的难度。
- 监控与告警: 监控 Worker 节点上异常的进程创建行为,特别是由
git命令启动的非预期进程。对包含可疑 Git 标志的部署创建请求进行告警。
参考资料
- CVE 详情页 (NVD): https://nvd.nist.gov/vuln/detail/CVE-2026-5366
- CWE-94 代码生成控制不当(代码注入): https://cwe.mitre.org/data/definitions/94.html
- Prefect 官方安全公告: (待官方发布,请关注 https://github.com/PrefectHQ/prefect/security)
- Git 文档 -
--upload-pack选项: https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt---upload-packltgt