freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Git爆严重漏洞CVE-2018-11235:递归 clone可致任意代码执行
2018-05-30 17:55:27

0x00 概述

今日git 和git for window相继发布最新版本Git 2.17.1、Git for Windows 2.17.1,主要用于解决git一个严重漏洞:CVE-2018-11235。

该漏洞允许在运行'git clone --recurse-submodules'(或已弃用的gi tclone --recursive)时实现任意代码的执行。恶意仓库可以包含指向仓库外部的.git modules子模块配置文件。当git克隆这样一个仓库时,就被诱骗执行克隆子模块内(非.git目录)的hook,实现任意代码执行。

0x01 bug详解

当Git仓库包含子模块时,为了编译项目管理,子模块的仓库结构与.git文件夹内的父级仓库结构可以存在一起。子模块的仓库结构通常存储在与子模块名称相同的文件夹中,但此文件夹的名称可由父仓库中的文件配置。

问题版本的git允许配置中包含不一定属于.git目录的路径。导致攻击者可以精心设计创建一个拥有另一个Git仓库的父仓库,作为该父仓库内的一个文件夹。然后,该仓库可以作为子模块添加到父仓库。该子模块的位置可以配置非.git文件夹,指向父仓库本身内的签入仓库。

当递归clone这个父仓库时,Git会检查已配置的子模块,然后查找存储该子模块库的位置。它将遵循父仓库本省得配置,检入仓库。该仓库将用于检出子模块,由于没有过滤导致该检入仓库中的任何hook脚本将运行。

因此,攻击者可以将这个仓库配置一个恶意的post-checkout脚本捆绑在一起,它们的代码仓库递归clone会立即执行。

0x11漏洞影响

0x1101 Git托管商

由于,实际中大多数人依赖托管服务提供商(比如Github)来存储代码,因此通过服务托管商简单地阻止仓库来阻止此漏洞扩散。据悉目前Visual Studio Team Services、GitLab和Github都是会主动阻止任何试图在.git目录之外设置git子模块的仓库。

0x1102 Git客户端

阻止托管提供程序中的恶意仓库会关闭攻击媒介源,但是不排除有其他的托管商以及其他恶意利用的途径(比如假冒个github站点)。所以建议尽快升级git客户端。

0x12漏洞检测

漏洞的检查也非常简单,你可以通过如下脚本来检验你的git是否存在问题:

新建一个临时目录运行它:

mkdir chongchongtemp && cd chongchongtemp

git init test && \

  cd test && \

  git update-index --add --cacheinfo 120000,e69de29bb2d1d6434b8b29ae775ad8c2e48c5391,.gitmodules

error: Invalid path '.gitmodules'

fatal: git update-index: --cacheinfo cannot add .gitmodules

注意:该命令不会克隆任何仓库,没有执行任何危险的指令。

如果显示为:

error: Invalid path '.gitmodules'

fatal: git update-index: --cacheinfo cannot add .gitmodules

则你的版本不受该漏洞的影响。

如果你的git无任何提示,并且创建一个空仓库,那么你的版本有问题。

0x13漏洞解决

windows:

从gitforwindows获取最新版本的Git for Windows(2.17.1版)。

macOS

苹果通过用Xcode发布Git,但是没有有定期更新机制。因此,你需要使用第三方包管理来进行版本升级版。建议使用Homebrew管理器。

如果你还未安装Homebrew,通过一下命令安装:

 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后,你可以使用Homebrew来安装和升级git:

brew install git

brew update git

Linux(Debian,Ubuntu)

如果你使用的发行版为Ubuntu或Debian,可能很快就会有更新包发布,请注意更新。

Redhat,CentOS:

sudo yum update git

Debian,Ubuntu:

sudo apt-get update git

源码安装:

其他没有源码包的版本,可以直接clone源码安装

源码地址:https://github.com/git/git

本文作者:, 转载请注明来自FreeBuf.COM

# CVE # git # git漏洞 # CVE-2018-11235
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
评论 按时间排序

登录/注册后在FreeBuf发布内容哦

相关推荐
  • 0 文章数
  • 0 评论数
  • 0 关注者
登录 / 注册后在FreeBuf发布内容哦
收入专辑