标签: Git

Git 中的远程代码执行漏洞已被修复 多个工具受影响

据外媒 BleepingComputer 报道,Git 项目组于前两天公布了一个在 Git 命令行客户端、Git Desktop 和 Atom 中发现的任意代码执行漏洞,这是一个比较严重的安全漏洞,可能会使得恶意仓库在易受攻击的计算机上远程执行命令。 这个漏洞已被分配 CVE-2018-17456 这个唯一 ID,与之前的 CVE-2017-1000117 可选注入漏洞相似 —— 恶意仓库可以新建一个 .gitmodules 文件,其中包含以破折号开头的 URL。 通过破折号,当 Git 使用 –recurse-submodules 参数来克隆仓库时,该命令会将 URL 翻译为一个选项,然后可以使用该选项在计算机上进行远程代码执行。 当运行 “git clone –recurse-submodules” 时,Git 会解析 .gitmodules 文件中的 URL 字段,然后将其作为参数传递给 “git clone” 子进程。如果 URL 字段是一个字符串,并使用短划线开头,这个 “git clone” 子进程将会把 URL 翻译为一个选项。这可能导致用户运行 “git clone” 时,会执行 superproject 中的任意脚本。 下面通过一个例子进行说明,下面的漏洞使用了恶意的 .gitmodules 文件(注意 URL 如何以破折号开头),以使得 Git 认为这是一个选项。然后 “touch VULNERABLE/git@github.com:/timwr/test.git” 这条命令将会被执行。 [submodule "test"] path = test url = ssh://-oProxyCommand=touch VULNERABLE/git@github.com:/timwr/test.git 此漏洞已在 Git v2.19.1 (with backports in v2.14.5, v2.15.3, v2.16.5, v2.17.2, and v2.18.1), GitHub Desktop 1.4.2, Github Desktop 1.4.3-beta0, Atom 1.31.2 和 Atom 1.32.0-beta3 中得到修复。 Git 项目组强烈建议所有用户升级到最新版本的 Git client, Github Desktop 或 Atom,以免遭受恶意仓库的攻击。     稿源:开源中国,封面源自网络;

Git 曝任意代码执行漏洞,所有使用者都受影响

Git 由于在处理子模块代码库的设置档案存在漏洞,导致开发者可能遭受任代码执行攻击,多数代码托管服务皆已设置拒绝有问题的代码储存库,但建议使用者尽快更新,避免不必要的风险。 Microsoft Visual Studio 团队服务项目经理 Edward Thomson May 在 DevOps 博客中提到,Git 社区最近发现 Git 存在一个漏洞,允许黑客执行任意代码。 他敦促开发人员尽快更新客户端应用程序。 微软还采取了进一步措施,防止恶意代码库被推入微软的 VSTS(Visual Studio Team Services)。 此代码是 CVE 2018-11235 中的一个安全漏洞。 当用户在恶意代码库中操作时,他们可能会受到任意代码执行攻击。 远程代码存储库包含子模块定义和数据,它们作为文件夹捆绑在一起并提交给父代码存储库。 当这个代码仓库被来回复制时,Git 最初会将父仓库放到工作目录中,然后准备复制子模块。 但是,Git 稍后会发现它不需要复制子模块,因为子模块之前已经提交给父存储库,它也被写入工作目录,这个子模块已经存在于磁盘上。 因此,Git 可以跳过抓取文件的步骤,并直接在磁盘上的工作目录中使用子模块。 但是,并非所有文件都可以被复制。 当客户端复制代码库时,无法从服务器获取重要的配置。 这包括 .git 或配置文件的内容。 另外,在 Git 工作流中的特定位置执行的钩子(如Git)将在将文件写入工作目录时执行 Post-checkout 钩子。 不应该从远程服务器复制配置文件的一个重要原因就是,远程服务器可能提供由 Git 执行的恶意代码。 CVE 2018-11235 的漏洞正是犯了这个错误,所以 Git 有子模块来设置漏洞。 子模块存储库提交给父存储库,并且从未实际复制过。 子模块存储库中可能存在已配置的挂钩。 当用户再次出现时,恶意的父库会被精心设计。 将写入工作目录,然后 Git 读取子模块,将这些子模块写入工作目录,最后一步执行子模块存储库中的任何 Post-checkout 挂钩。 为了解决这个问题,Git 客户端现在将更仔细地检查子文件夹文件夹名称。 包含现在非法的名称,并且它们不能是符号链接,因此这些文件实际上必须存在于 .git 中,而不能位于工作目录中。 Edward ThomsonMay 提到,Git,VSTS 和大多数其他代码托管服务现在拒绝使用这些子模块配置的存储库来保护尚未更新的 Git 客户端。 Git 2.17.1 和 Windows 的 2.17.1 客户端软件版本已经发布,微软希望开发人员尽快更新。   稿源:开源中国,封面源自网络;