CVE-2018-11235:git爆遞歸clone嚴重漏洞致任意代碼執行

2020-12-13 蟲蟲搜奇

0x00 概述

今日git 和git for window相繼發布最新版本Git 2.17.1、Git for Windows 2.17.1主要用於解決git一個嚴重(非史詩級)漏洞CVE-2018-11235。

該漏洞允許在運行'git clone --recurse-submodules'(或已棄用的'git clone --recursive')時可實現任意代碼的執行。惡意倉庫包含指向倉庫外部的.git modules子模塊配置文件。 當git clone這樣的倉庫時,它可以被誘騙到clone子模塊內(非.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

則你的git版本不受該漏洞影響。

如果你的git顯示,以下信息,並且創建一個空倉庫,那麼你的版本有問題。

0x13漏洞解決

windows:

從gitforwindows獲取最新版本的Git for Windows(2.17.1版)。

macOS

蘋果通過用Xcode發布Git,但是有定期更新機制。因此,你需要第三方的包管理器來實現升級。 在此建議你使用Homebrew包管理器。

如果你還沒有安裝Homebrew,你需要首先安裝。

然後,你可以使用Homebrew來更新git:

brew update git

Linux(Debian,Ubuntu)

如果你使用的發行版為Ubuntu或Debian,可能很快就會有更新包發布,請注意更新。

Redhat,CentOS下:

sudo yum update git

Debian,Ubuntu下:

sudo apt-get update git

相關焦點

  • Ubuntu 系統內核發現拒絕服務或執行任意代碼漏洞,需儘快升級
    12 月 2 日,Ubuntu 發布了安全更新 , 修復了系統內核拒絕服務、執行任意代碼等重要漏洞。本地攻擊者可利用此漏洞造成拒絕服務(系統崩潰)或可能執行任意代碼。2.CVE-2020-25645 CVSS 評分:7.5 高Linux 內核中的 GENEVE 隧道實現與 IPSec 結合時,在某些情況下沒有正確選擇 IP 路由。攻擊者可以利用此漏洞暴露敏感信息(未加密的網絡流量)。
  • Win10漏洞又來了 可繞過Chromium瀏覽器沙盒執行任意代碼
    谷歌安全團隊近年來挖出不少嚴重漏洞,最近他們曝出了Windows 10 May 2019,也就是1903版本中的一個BUG,該BUG能夠破壞所有基於Chromium瀏覽器的沙盒,並且繞過沙盒執行任意代碼,雖然谷歌安全團隊表示想要利用這個BUG發起攻擊比較複雜,但從BUG本身來看,又是一個比較嚴重的系統
  • 深入研究VBScript—CVE-2018-8174利用分析
    漏洞CVE-2018-8174並寫了一篇描述文章。該漏洞使用了CVE-2014-6332 poc中一種眾所周知的技術,它基本上「破壞」了兩個內存對象,並將一個對象的類型更改為Array(用於對地址空間的讀/寫訪問),另一個對象更改為為Integer用於獲取任意對象的地址。CVE-2014-6332是針對寫入任意內存位置的整數溢出利用,但我的興趣在於如何調整此技術以利用use-after-free漏洞。
  • Git 2.25.0 發布,新特性:部分 clone 與稀疏 checkout
    partial clone,部分克隆一般來說,Git clone 時副本會複製倉庫的所有數據,包括歷史記錄中每個文件的每個版本,對於非常大的存儲庫,如果只需要文件的一部分,那會無形中增加網絡傳輸和本地存儲的成本
  • Git 2.25.0發布,新特性:部分clone與稀疏checkout
    partial clone,部分克隆一般來說,Git clone 時副本會複製倉庫的所有數據,包括歷史記錄中每個文件的每個版本,對於非常大的存儲庫,如果只需要文件的一部分,那會無形中增加網絡傳輸和本地存儲的成本。
  • 「物聯網漏洞復現」TP-Link SR20 本地網絡遠程代碼執行漏洞
    TP-Link SR20 是一款支持 Zigbee 和 Z-Wave 物聯網協議可以用來當控制中樞 Hub 的觸屏 Wi-Fi 路由器,此遠程代碼執行漏洞允許用戶在設備上以 root 權限執行任意命令,該漏洞存在於 TP-Link 設備調試協議(TP-Link Device Debug Protocol 英文簡稱 TDDP) 中,TDDP 是 TP-Link 申請了專利的調試協議
  • 高清還原漏洞——被微軟發布又秒刪的遠程預執行代碼漏洞CVE-2020...
    ◆2020年3月10日是微軟補丁日,安全社區注意到Microsoft發布並立即刪除了有關CVE-2020-0796的信息;  ◆2020年3月11日早上,Microsoft發布了可糾正SMBv3協議如何處理特製請求的修補程序;  ◆2020年03月12日微軟發布安全公告聲稱Microsoft 伺服器消息塊 3.1.1 (SMBv3) 協議處理某些請求的方式中存在遠程執行代碼漏洞
  • Golang TLS雙向身份認證DoS漏洞分析(CVE-2018-16875)
    原文作者:apisecurity翻譯來源:安全客原文連結:https://apisecurity.io/mutual-tls-authentication-vulnerability-in-go-cve-2018-16875/譯文連結:https://www.anquanke.com
  • Palo Alto Networks VPN漏洞曝光,允許黑客遠程執行任意代碼
    據外媒報導,研究人員發現Palo Alto Networks的GlobalProtect產品存在一個關鍵的RCE漏洞,允許未經身份驗證的黑客遠程執行任意代碼。因網關以未經抽樣和可利用的方式將特定參數值傳遞給snprintf,允許黑客利用該漏洞向易受攻擊的SSL VPN目標發送特製請求,遠程執行系統上的代碼。
  • SUMAP網絡空間測繪|2021年CVE漏洞趨勢安全分析報告
    ,其中以cve2017年最高,cve2018年第二,cve2019年第三,但是整體平均值均在20%左右分布比較均勻。預測2021年的cve漏洞影響網際網路佔比會在20%-30%。 中國地區的cve年份主要集中在cve2018年第一,cve2019年第二,cve2017
  • 一行代碼搞定Git遷移
    第1步:git clone -- bare xxxx1xxx1:為原來git地址,就是你要遷移的地址這一句主要是把代碼基礎包下載下來第2步第一步結束後,回你生成xxx2.gitcd xxx2.git第3步git push --mirrir xxxx3地址xxx3:是你要往哪遷移的git地址附:截屏--mirrorSet up a mirror of the source repository.
  • D-Link 850L&645路由漏洞分析
    $ git clone https://github.com/devttys0/binwalk.git  $ cd binwalk$ sudo python setup.py install$ sudo apt-get install python-lzma$ sudo apt-get install python-crypto
  • 雲安全日報201106:思科AnyConnect安全客戶端發現任意代碼執行漏洞...
    根據思科(Cisco)11月5日安全公告顯示,思科AnyConnect安全移動客戶端發現任意代碼執行漏洞,需要儘快升級。CVE-2020-3556 CVSS評分:7.3 高Cisco AnyConnect安全移動客戶端軟體的進程間通信(IPC)通道中的漏洞可能允許經過身份驗證的本地攻擊者誘使目標AnyConnect用戶執行惡意腳本。
  • 雲安全日報201209:Adobe圖形視頻編輯軟體發現任意代碼執行高危...
    Adobe Prelude是Adobe出品的一款專業級別的視頻編輯軟體,Pl CC能夠和Adobe Premiere或Final Cut Pro配合使用,可用於收錄剪輯、轉換素材代碼、創建子剪輯標記和粗剪,為影視後期製作構建堅實基礎。
  • 團隊協作開發,你需要知道這些git操作
    git initgit clone 倉庫地址 本地目錄名執行上面的命令git會把對應的倉庫地址的內容克隆到本地指定的目錄中,指定的目錄名可以不傳, 默認在當前目錄下使用倉庫名做為目錄名。# 暫存所有cpp文件git add *.cpp # 暫存src目錄下所有更改git add src如果在git倉庫目錄下添加了新文件,執行了文件修改,使用該命令把修改保存到暫存區,再使用下面的命令提交更改# 提交代碼git commit -m "提交說明"# 暫存並提交代碼, 使用-a參數可以在只有更改文件的情況下不執行
  • 1小時搞懂 Git 版本控制
    enter image description here如下圖所示:在工作區中有文件 a.txt、b.html,經過執行 git add . 命令之後會將工作區的文件添加到暫緩區中,再經過執行 git commit -m "說明文字" 命令之後,會將暫緩區的文件添加到版本庫的分支當中去。
  • 30分鐘教你學會Git
    OS X – 最簡單的方式是使用homebrew安裝,命令行執行brew install git如果你是新手,推薦使用圖形工具Github desktop和Sourcetree。不過即使使用圖形界面的應用,知道一些基本的git命令依然很重要。接下來的內容我們集中在命令行控制上。
  • 思科修復嚴重等級為最高級10的遠程代碼執行漏洞
    根據此前發布的安全通報,較老版本的思科自適應安全設備軟體,會因為作業系統的安全套接層協議層(SSL)VPN功能漏洞而受到影響。漏洞將會影響啟用VPN功能的ASA設備雷鋒網(公眾號:雷鋒網)了解到,這一漏洞(CVE-2018-0101)將會導致以下思科ASA設備受到影響——不過,只有當「webvpn」功能啟動時,漏洞才會生效。
  • Git 常用命令清單筆記
    git clone git://github.com/JSLite/JSLite.js.gitgit clone git://github.com/JSLite/JSLite.js.git mypro #克隆到自定義文件夾git clone [user@]example.com:path/to/repo.git/ #SSH協議還有另一種寫法。