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命令触发漏洞,无需任何注入参数。

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

供应链威胁

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

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

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

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

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