🟠 高危 | CVE-2026-15343 — A path traversal vulnerability was identified in G...
🟠 【深度分析】高危安全漏洞:CVE-2026-15343
CVSS 评分: 高危(8.6)🟠 状态: Deferred 发布时间: 2026-07-17
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-15343 |
| CVSS 评分 | 8.6 🟠 |
| 严重程度 | 高危 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| CWE 分类 | CWE-22 |
| 发布时间 | 2026-07-17 |
| 最后更新 | 2026-07-17 |
| 状态 | Deferred |
| 数据来源 | product-cna@github.com |
CVSS 评分:8.6(高危)
向量: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
危害等级: ⚠️ 高风险,可能导致机密性与完整性严重受损
漏洞概述
CVE-2026-15343 是 GitHub Enterprise Server(GHES)中 Dependabot updater 容器存在的一个路径遍历漏洞。攻击者在已获得 Dependabot 容器内代码执行权限的前提下,能够绕过路径校验,将恶意文件写入任意仓库路径,包括 .github/workflows/ 下的 GitHub Actions 工作流文件。若受影响的仓库配置了 pull_request_target 触发器或启用了自动合并(auto-merge),攻击者注入的工作流可以执行,并窃取仓库的 GitHub Actions 密钥(Secrets)。该漏洞影响所有低于 3.22 版本的 GHES,官方已在 3.21.3、3.20.5、3.19.9、3.18.12、3.17.18 中修复。
受影响组件与版本
| 组件/产品 | 影响版本范围 | 修复版本 |
|---|---|---|
| GitHub Enterprise Server | < 3.22 | 3.21.3, 3.20.5, 3.19.9, 3.18.12, 3.17.18 |
注意: Dependabot 服务默认集成于 GHES 中,因此在受影响版本上开启 Dependabot 功能的实例均面临风险。
漏洞原理分析
漏洞成因
漏洞的核心在于 Dependabot updater 容器在处理依赖文件时,未对最终写入路径进行有效验证。具体而言:
Dependabot 会解析仓库中的依赖清单(如
package.json、Gemfile等)并下载更新后的依赖文件。在写入文件之前,系统会校验目标路径是否在允许的仓库目录范围内。然而,攻击者可以通过以下两种方式控制有效路径:
- 依赖文件目录遍历:利用
../等相对路径操作符,使路径解析脱离预期目录。 - 符号链接(Symlink)目标:若依赖文件包含指向仓库外部的符号链接,Dependabot 在解压或处理时可能跟随链接写入外部路径。
- 依赖文件目录遍历:利用
关键的缺陷在于:路径校验仅检查初始路径字符串,而未解析符号链接后的真实路径,也未限制横向目录跨越。因此攻击者能够将文件写入任意仓库路径(包括非
.github目录外的区域),尤其是有意构造写入.github/workflows/下的工作流 YAML 文件。
攻击向量
攻击者需要具备以下前提:
- 已经获得 Dependabot updater 容器内的代码执行能力(例如通过恶意依赖包触发代码执行,或利用容器内其他漏洞提权)。
- 目标仓库使用 Dependabot 进行依赖更新,并且攻击者能够向该仓库提交恶意依赖变更(如通过 Fork + PR 或拥有写入权限)。
实际利用步骤:
- 攻击者在仓库中引入一个特制的依赖文件(如一个包含
../.github/workflows/malicious.yml路径的包),或创建一个符号链接指向工作流目录。 - Dependabot 在处理该依赖更新时,由于路径验证缺陷,将恶意工作流文件写入
.github/workflows/下。 - 若仓库存在
pull_request_target工作流或已开启自动合并,该注入的工作流将在目标仓库的 Actions 环境中以较高权限执行,可读取secrets.GITHUB_TOKEN、仓库密钥等敏感信息,甚至向仓库写入恶意代码。
影响评估
利用难度评估(基于 CVSS 向量)
- 攻击向量(AV:N):通过 Dependabot 的网络交互触发,无需物理接触。
- 攻击复杂度(AC:L):无需特殊条件,只需构造恶意依赖文件。
- 权限要求(PR:L):攻击者需要具备 Dependabot 容器内的低权限代码执行能力(可能通过恶意依赖获取),或已获得仓库的部分权限。
- 用户交互(UI:N):受害者无需主动交互,Dependabot 自动处理即可触发。
- 攻击需求(AT:N):无需绕过额外攻击条件。
整体利用难度较低,危害高。
潜在后果
- 机密性泄露:攻击者可以通过注入的工作流窃取仓库所有 GitHub Actions secrets,包括
GITHUB_TOKEN、云服务密钥、API 令牌等。 - 完整性破坏:攻击者能够修改仓库代码、提交记录、分支保护规则,甚至篡改生产环境部署流程。
- 进一步横向移动:若 GHES 实例与内部 CI/CD 系统集成,攻击者可利用窃取的密钥访问其他服务。
实际利用场景
该漏洞最危险的利用场景是供应链攻击:攻击者通过维护一个被广泛依赖的恶意包,在 Dependabot 自动更新后,向目标仓库注入恶意工作流,进而接管仓库或 CI 管道。
修复建议
官方修复版本
立即升级至以下已修复版本之一(选择与当前部署最接近的版本):
- 3.21.3(推荐,最短升级路径)
- 3.20.5
- 3.19.9
- 3.18.12
- 3.17.18
注意: 版本 3.22 及更高版本未受影响,建议长期规划升级至最新稳定版。
临时缓解措施
若无法立即升级,可采用以下临时措施:
- 禁用 Dependabot 功能:在 GHES 管理控制台中关闭
Enable Dependabot alerts and updates,直到完成升级。 - 限制 Dependabot 容器权限:通过容器运行时限制文件写入路径,禁用符号链接跟随(如 Docker 的
--security-opt no-new-privileges和只读文件系统)。 - 审计仓库工作流:检查所有使用
pull_request_target或auto-merge的仓库,确保工作流中不使用不安全的文件写入操作。 - 启用 Actions 的
GITHUB_TOKEN权限最小化:将GITHUB_TOKEN的权限设置为只读,并严格限制工作流使用的 secrets 范围。
验证修复
升级后,建议对 Dependabot 功能进行回归测试:尝试通过符号链接或路径遍历向 .github/workflows/ 写入文件,观察是否被正确拦截。
参考资料
- NVD 官方页面
- CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
- GitHub 官方公告(待发布,CVE 状态为 Deferred,建议关注 GitHub Security Advisories)
免责声明: 本文基于 NVD 公开数据及通用安全知识撰写,未包含未经确认的私有漏洞细节。攻击者利用路径遍历和符号链接绕过路径校验的逻辑在类似 CVE 中已有先例(如 CVE-2021-22862、CVE-2022-39253),上述分析符合行业对 CWE-22 的通用理解。实际修复需参考 GitHub 官方补丁与安全公告。