都来看看自己受影响没:Git 源代码版本软件存在远程代码执行漏洞

阅读量271872

|评论1

发布时间 : 2018-05-31 16:15:02

x
译文声明

本文是翻译文章,文章来源:https://www.bleepingcomputer.com/

原文地址:https://www.bleepingcomputer.com/news/security/malicious-git-repository-can-lead-to-code-execution-on-remote-systems/

译文仅供参考,具体内容表达以及含义原文为准。

Git 开发人员以及多家提供 Git 库托管服务的公司推出补丁,修复了 Git 源代码版本软件中的一个危险漏洞。

这个修复方案在 Git 2.17.1 中推出,它修复了两个安全漏洞 CVE-2018-11233 和 CVE-2018-11235。

Git 缺陷导致任意代码执行

其中 CVE-2018-11235 最危险,因为它可导致恶意人员创建包含特殊构建的 Git 子模块的恶意 Git 库。

每当用户克隆这个库时,由于 Git 客户端处理这个恶意 Git 子模块方式的问题,均可导致攻击者在用户系统上执行代码。

刚刚推出的 Git 2.17.1 应该能够阻止这些命令在用户电脑上执行。

为 Git 托管服务提供服务器端修复方案

不过补丁并非仅面向 Git 客户端,也包含Git 服务器端组件的修复方案。后者能让 Git 托管服务发现包含恶意子模块的代码库并阻止用户上传它们。

Git 托管服务如 GitHub 和微软(经由 Visual Studio Team Services)已经部署这些补丁以阻止攻击者滥用服务。

GitHub 的一名员工 Jeff King 指出,修复方案本身并不复杂,但在 Git 推送操作过程中进行检测需要进行大量重构。

King 表示,修复工作需要很多项目的支持,他表示他自己为 Git 本身写补丁,其他人涉及 libgit2、JGit 和 VSTS。

Visual Studio Team Services 的项目管理经理 Edward Thomson 更加详细地解释了 CVE-2018-11235 的技术细节。

他指出,“远程存储库可能包含对子模块的定义,并将该子模块的存储库数据捆绑在一起作为文件夹签入父存储库。当 Git 递归克隆这个存储库时,首先将父存储库签出到工作目录中,然后准备克隆子母扣。随后 git 意识到无需执行克隆,子模块的存储库已经存在于磁盘上;由于它被签入父存储库,因此在签出时被写入工作目录中。因此,git 能够跳过抓取并简单地使用磁盘上的存储库签出子模块。

问题在于,当克隆存储库时,无法从服务器中获得一些重要的配置,包括 .git/config 文件内容、钩子即在 git 工作流的某些点中运行的脚本等。例如,签出后的钩子会在 git 将文件签出到工作目录时运行。

这种配置无法从远程服务器中克隆,因为这么做会触发严重漏洞:远程服务器能够提供在电脑上执行的代码。

遗憾的是,这就是该子模块配置漏洞做的事情。由于子模块的存储库被签入父存储库,因此它从未得到真正的克隆。这个子模块存储库因此能够配置钩子。如果当你递归克隆这个精心构造的恶意父存储库时,它会首先签出父存储库,然后读取子模块的签入存储库以便将子模块写入工作目录中,最后它将执行任意配置在子模块签入存储库中的签出后钩子。”

研究员 Etienne Stalmans 通过 GitHub 的漏洞奖励计划发现并报告了这个漏洞。

Thomson 还在博客上提供了操作指南,供用户测试是否运行易受攻击的 Git 客户端。建议用户更新其 Git 桌面以及/或服务器端。

本文翻译自https://www.bleepingcomputer.com/ 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
奇安信代码卫士
分享到:微信

发表评论

奇安信代码卫士

奇安信代码卫士是国内第一家专注于软件开发安全的产品线,产品涵盖代码安全缺陷检测、软件编码合规检测、开源组件溯源检测三大方向,分别解决软件开发过程中的安全缺陷和漏洞问题、编码合规性问题、开源组件安全管控问题。微信公号:codesafe。

  • 文章
  • 387
  • 粉丝
  • 104

热门推荐

文章目录
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全KER All Rights Reserved 京ICP备08010314号-66