昨天,Git 2.17.1 发布,其中包含修复程序,用于修补 Git 源代码版本控制软件中的两个危险漏洞:CVE-2018-11233 和 CVE-2018-11235。
Git 漏洞可能导致攻击者在用户 PC 上远程执行代码其中,CVE-2018-11235 这个漏洞被认为是最危险的,因为它允许恶意攻击者创建格式错误的 Git 仓库,其中包含特制 Git 子模块。当用户克隆该仓库时,Git 客户端处理此恶意子模块的方式可能致使攻击者在用户的系统上执行代码。
Git 2.17.1 于昨天发布后,会阻止这些命令在用户的计算机上执行。
补丁不仅仅发布到 Git 客户端, Git 服务器端组件中也包含了修复程序,允许 Git 托管服务识别包含恶意子模块的代码库,并在第一时间阻止用户上传它们。
GitHub 和 Microsoft(通过 Visual Studio Team Services)等 Git 托管服务已经部署了这些补丁,以防止攻击者滥用他们的服务。
GitHub 的工作人员 Jeff King 金说:“修复本身非常简单,但‘Git 推送操作’期间的检测需要大量重构。”
King 说,这项工作涉及很多项目。 “我为 Git 编写了补丁程序,还有其他人则在为 libgit2,JGit 和 VSTS 编写。”
Visual Studio Team Services 项目经理 Edward Thomson 也提供了 CVE-2018-11235 的技术说明:
远程仓库可能包含子模块的定义,并将该子模块的仓库数据捆绑在一起,作为文件夹签入到父仓库。 当递归克隆这个仓库时,git 会首先将父仓库签出到工作目录中,随后准备克隆子模块。 然后它会意识到其实不必执行克隆—— 子模块的仓库已经存在于磁盘上 ; 因为子模块已经签入到父项中,在签出时会被写入工作目录。 因此,git 可以跳过抓取并使用磁盘上的仓库检出子模块。
问题是,当你用git clone命令克隆一个仓库时,无法从服务器获得一些重要配置,包括.git / config文件内容,以及在 git 工作流程中某些点运行的脚本(如钩子)。 比如,一旦 git 将文件检出到工作目录中,post-checkout钩子就会运行。
该配置不会从远程服务器克隆,否则会造成一个危险的漏洞:远程服务器可能会为你提供将在计算机上执行的代码。
不幸的是,由于这个子模块配置漏洞,上述情况就会发生。 由于子模块的仓库已签入到父仓库中,因此从未实际克隆。 这样一来子模块仓库实际上可以具有已配置的钩子。 如果你递归克隆了(要显示这个漏洞,此仓库确实必须用--recursive克隆)这个精心设计的恶意父仓库,它会先检出父仓库,然后读取子模块的检入仓库,将子模块写入工作目录,最后执行任意配置在子模块签入仓库中的post-checkout钩子。
Thomson 还在他的博客上(https://www.edwardthomson.com/blog/upgrading_git_for_cve2018_11235.html)提供了额外的指导来测试用户是否运行了易受攻击的 Git 客户端。跟所有安全漏洞的应对方法一样,建议用户更新 Git 桌面和/或 Git 服务器客户端。
近期其他安全漏洞问题:
各大OS提供商齐发安全补丁:都是误解文档惹的祸
微软谷歌再曝CPU新漏洞,Intel、AMD、Arm全部遭殃
活动推荐
2018 年,人工智能全面爆发,资本大量涌入,政策不断加持,各企业趋之若鹜。作为技术管理者应该如何理性看待技术新浪潮,如何做出合理的技术落地评估,将人工智能脱虚入实,真正为企业创造价值?
第三届 GTLC 全球技术领导力峰会,瞄准需求特别策划了“新热技术落地评估”专场,旨在为技术 Leader 解读如何应对一波接一波的技术新浪潮。点击“阅读原文”或扫描下方二维码即可了解大会详情。大会 8 折限时优惠,报名立减 720 元。售票咨询电话:13269078023
