GitHub Copilot CLI 漏洞 CVE-2026-45033 通过恶意仓库启用 RCE
CVE-2026-45033 (CVSS 9.8) 在 GitHub Copilot CLI 1.0.43 之前的版本中,允许攻击者通过在项目目录中嵌入恶意的裸 git 仓库来实现远程代码执行。

执行摘要
GitHub修补了Copilot CLI中的一个关键远程代码执行漏洞,跟踪为CVE-2026-45033,CVSS得分为9.8。该漏洞允许攻击者通过在项目目录中嵌入恶意裸git仓库,在开发人员的机器上实现任意代码执行。当Copilot CLI代理执行git操作(如读取文件历史记录或分析差异)时,它可以被诱骗执行来自攻击者控制的裸仓库中的代码。该漏洞影响1.0.43之前的所有版本。根据在GitHub安全咨询数据库(GHSA-9ccr-r5hg-74gf)中发布的咨询,GitHub于2026-05-14发布了修复。
技术分析
Copilot CLI是一个命令行界面,它将GitHub的AI驱动代码补全和分析直接带到终端。它通过扫描当前项目的git历史记录、暂存更改和文件内容来提供上下文感知的建议。该漏洞存在于工具在目录遍历期间处理git仓库发现的方式中。
Git支持“裸”仓库——没有工作树的仓库,只存储git元数据(对象、引用、HEAD)。Git的自动裸仓库发现意味着,如果一个目录包含一个名为.git的子目录,其中有一个HEAD文件和一个objects子目录,git将其视为一个有效的仓库。攻击者可以制作一个恶意的裸仓库,当用户在Copilot CLI中打开包含该仓库的项目时,会导致代理在常规git操作期间执行任意命令。
GitHub的咨询声明:“一个嵌套在项目目录中的恶意裸git仓库可以在代理执行git操作时实现任意代码执行。”确切的机制涉及代理在没有清理路径或验证仓库来源的情况下对仓库调用git命令。通过在目录遍历期间利用git的自动裸仓库发现,攻击者提供的仓库可以执行钩子或以导致在运行Copilot CLI的用户上下文中执行代码的方式操纵引用。
GitHub为这个问题分配了CVSS 9.8的评分,表明该漏洞不需要身份验证,不需要用户交互,只需打开项目,并且对机密性、完整性和可用性有高影响。攻击向量基于网络——攻击者可以通过从公共注册表克隆的项目、被破坏的依赖项或引入裸仓库到共享代码库的拉取请求来传递恶意仓库。
截至本文撰写时,尚未发布公开的概念验证漏洞利用。然而,咨询中的技术细节足以让熟练的攻击者重现问题。该漏洞在CI/CD环境中尤其危险,Copilot CLI可能被用来自动分析仓库。
缓解措施与建议
防御者和开发人员应立即更新GitHub Copilot CLI到1.0.43或更高版本。更新可通过npm(npm update -g @githubnext/github-copilot-cli)、Homebrew(brew upgrade github-copilot-cli)或直接从GitHub的发布页面下载。
在共享开发环境或CI管道中使用Copilot CLI的组织应验证所有节点上安装的版本。鉴于攻击向量——通过克隆项目传递的恶意裸仓库——团队还应该审查他们的依赖管理实践。扫描第三方代码中意外的.git目录或裸仓库结构可以提供深度防御,尽管这不是修补的替代品。
截至咨询日期,GitHub尚未报告CVE-2026-45033的任何野外利用。该公司将发现归功于外部研究人员,但没有透露研究人员的身份。
订阅更新
将最新的网络安全资讯直接发送到您的邮箱。
