Git安全审计揭露严重溢出漏洞,威胁软件供应链安全

开源Git代码安全审计发现两个关键溢出漏洞,攻击者可利用恶意.gitattributes文件触发内存损坏和代码执行,对GitHub、GitLab等平台及依赖Git的包管理器构成严重供应链攻击威胁。

Git安全审计揭示关键溢出漏洞

Ben Dickson
2023年1月20日 15:00 UTC
更新:2023年1月20日 16:34 UTC

DevSecOps | 漏洞 | 研究


审计发现多重安全隐患

对Git源代码的安全审计揭示了多个漏洞,包括两个关键溢出漏洞。该审计由开源技术改进基金(OSTIF)赞助,X41 D-Sec和GitLab执行,同时还发现了多个高、中、低严重性问题。鉴于Git的流行度及其与常见打包系统的集成,这些漏洞可能对软件供应链安全产生巨大影响。

恶意克隆操作

研究人员发现的最严重缺陷是一个内存损坏漏洞,在Git解析仓库的.gitattributes文件时可能被触发。开发者使用.gitattributes来自定义Git处理仓库中不同文件和文件路径的方式,例如行尾符、文件编码等。

研究人员发现,如果.gitattributes包含非常长的属性行或大量属性行,会导致解析文件的函数发生计数器溢出,进而实现任意代码执行。

攻击者可通过向仓库提交恶意的.gitattributes文件来利用该漏洞。当受害者对该仓库执行git clonegit pull时,漏洞即被触发。由于该漏洞不需要在受害者计算机上使用特殊参数或命令,因此可能成为危险供应链攻击的重要组成部分。

X41 D-Sec董事总经理Markus Vervier向The Daily Swig表示:“如果攻击者能将其部署在流行库上,可能会影响使用该库的Git客户端,甚至波及使用常见包系统安装软件的用户。”

Vervier还指出,该漏洞也可用于攻击Git服务器,如GitHub或GitLab,但他补充说GitLab和GitHub均已发布补丁。

美观但恶意

研究人员发现的第二个关键漏洞允许在Git forge(如GitHub和GitLab)常执行的归档操作期间执行代码。

git loggit archive命令可以使用美观格式化显示提交。在处理填充操作符时,如果使用特殊的格式说明符模式,美观格式解析器可能发生整数溢出。

如果用户使用--format说明符运行git log命令,该溢出漏洞会直接触发;或者通过export-subst机制间接调用git archive命令时也会触发。

GitLab安全工程师Joern Schneeweisz向The Daily Swig确认,攻击者可通过向git log命令注入参数来触发该漏洞。但他表示,更有趣的攻击向量是git archive操作。

攻击者可在仓库的.gitattributes文件中包含export-subst语句。Schneeweisz指出,这将通过git archive命令触发漏洞,无需任何注入参数。

“有效载荷将自包含在仓库中,并通过调用git archive触发,”Schneeweisz说。“对任意仓库运行git archive是Git forge(如GitLab或GitHub)非常常见的操作,因此该问题主要对它们构成RCE(远程代码执行)威胁。”

供应链威胁

除了关键漏洞外,研究人员还发现许多与整数相关的问题,可能导致拒绝服务、越界读取或简单地对大输入处理不当的边界情况。Vervier表示,这些发现与软件供应链安全高度相关。

“Git基本上是当前IT环境中的终极供应链攻击向量,因为它甚至被Rust/Cargo、Golang、NodeJS等包管理器广泛使用。它也是最广泛使用的源代码版本控制工具,”他说。

推荐阅读
Squaring the CircleCI:DevOps平台发布最近漏洞的事后分析


DevSecOps | 漏洞 | 研究 | GitHub | RCE | 开源软件 | 供应链攻击 | 核心

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计