千家信息网

clone如何实现任意代码执行

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,clone如何实现任意代码执行,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。0x00 概述今日git 和git for window
千家信息网最后更新 2026年10月31日clone如何实现任意代码执行

clone如何实现任意代码执行,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

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如何实现任意代码执行问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

仓库 模块 漏洞 文件 配置 代码 版本 问题 文件夹 托管 恶意 目录 结构 脚本 升级 存储 攻击 更新 管理 运行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会副主任毛军 互联网扶贫科技 互联网科技公司怎么样 广州互联网络科技有限公司 互联网科技小额贷款 顺玮阁互联网科技 广州慧亚互联网科技怎么样 智腾互联网科技有限公司 移动互联网年度科技创新 玉溪互联网科技怎么选 烟台灵鸽互联网科技有限公司 为客找房互联网科技公司怎么样 怎样加入科技互联网 东营紫格互联网科技 扫呗互联网科技有限公司 神州科技互联网有限公司 全球科技与互联网公司市值变化 互联网时代高科技布局 第三届互联网大会安防黑科技 互联网科技快速发展优美句子 互联网科技产业 互联网科技工作委员会副主任毛军 港股互联网科技股 嘟嘟瓜互联网科技 亿账通互联网科技 互联网科技素材视频竖屏 科技与互联网哪个更好 电子科技大学互联网创业大赛 保险科技服务互联网营销体系 互联网第三次科技革命特征
0