🔴 【深度分析】严重安全漏洞: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 等参数,用于指定要检出的特定提交或子目录。

  1. 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 仓库或共享文件系统),从而触发远程代码执行。
  2. 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 标志的部署创建请求进行告警。

参考资料