溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何攻入微軟VS Code的Github倉庫

發(fā)布時間:2021-12-23 10:21:09 來源:億速云 閱讀:197 作者:柒染 欄目:網(wǎng)絡(luò)管理

這篇文章將為大家詳細(xì)講解有關(guān)如何攻入微軟VS Code的Github倉庫,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

概述

就在這個月,一位安全研究人員披露了他是如何滲透進(jìn)微軟Visual Studio Code的官方GitHub存儲庫的。

據(jù)了解,微軟Visual Studio Code的問題管理功能中存在一個安全漏洞,并且缺少了相應(yīng)的身份驗證檢測機(jī)制,這將允許研究人員以及網(wǎng)絡(luò)攻擊者能夠獲取到推送訪問,并將其寫入到代碼庫中。

由于這名研究人員負(fù)責(zé)任地將該漏洞的詳細(xì)信息上報給了微軟的開發(fā)團(tuán)隊,這名研究人員也獲取到了一筆具體金額不詳?shù)穆┒椽劷稹?/p>

存在安全問題的正則表達(dá)式,沒有身份驗證,CI腳本中的代碼注入!

據(jù)悉,安全研究人員RyotaK當(dāng)時在乘坐火車的過程中意外發(fā)現(xiàn)了微軟Visual Studio Code的持續(xù)集成(CI)腳本中存在一個漏洞,該漏洞導(dǎo)致他能夠滲透進(jìn)微軟Visual Studio Code的官方GitHub存儲庫并向其提交文件。

RyotaK在接受BleepingComputer的采訪時表示:“我當(dāng)時在火車上實在是太無聊了,所以我打算讀一下微軟Visual Studio Code的源代碼。過了一會兒,我發(fā)現(xiàn)VS Code中有一個單獨的針對CI的腳本存儲庫,該代碼庫名為【vscode-github-triage-actions】。”

很快,這名安全研究人員就發(fā)現(xiàn)了該腳本中有一行非常有意思的代碼,可以利用它來實現(xiàn)代碼注入攻擊:

exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {

RyotaK還說到:“當(dāng)然了,這是一個命令注入漏洞。但是該漏洞的利用要求我們獲取到‘commit’變量或‘release’變量的控制權(quán)?!?/p>

研究人員RyotaK很快便意識到,由于以下兩個原因,攻擊者很可能能夠控制commit變量:

  • closedWith命令中缺乏有效的身份驗證機(jī)制;

  • 用于驗證closedWith命令(在結(jié)束注釋中指定)的正則表達(dá)式存在安全問題;

closedWith命令可以用來在commit關(guān)閉之前將commit哈希與問題進(jìn)行關(guān)聯(lián)。

但是,這里使用了存在安全問題的正則表達(dá)式來驗證關(guān)閉的評論,而且CI腳本中沒有任何的身份驗證機(jī)制,任何用戶都可以將commit與一個問題繼續(xù)寧關(guān)聯(lián),并在closedWith值中注入代碼。具體如下所示:

const closingHashComment = /(?:\\|\/)closedWith (\S*)/

由于Visual Studio Code存在安全問題的CI工作流每天會執(zhí)行一次,那么在午夜時分,研究人員就可以預(yù)先植入一份PoC漏洞利用代碼,這樣也可以避免在夜間犯任何危險的錯誤。

為此,研究人員瀏覽了該項目的GitHub Actions代碼文件,以了解持續(xù)集成和持續(xù)交付(CI/CD)工作流。

研究人員告訴BleepingComputer稱:“幸運的是,GitHub Actions的工作流文件是在GitHub上發(fā)布的,因此我對GitHub Actions的內(nèi)部情況還是能夠有所了解的。由于actions/checkout是在使用易受攻擊的工作流文件之前執(zhí)行的,因此我們能夠獲取到對代碼庫具有寫入權(quán)限的GitHub令牌,隨后我們還將使用到這個令牌?!?/p>

通過將我們的PoC漏洞利用代碼注入到Visual Studio Code的CI腳本中(該腳本在午夜前后運行),研究人員成功拿到了一個反向Shell。

除此之外,研究人員還拿到了Visual Studio Code代碼庫的GitHub授權(quán)令牌,這個令牌將允許研究人員獲取到針對該代碼庫的寫入權(quán)限。

最后,在拿到令牌之后,研究人員向代碼庫發(fā)布了一個PoC commit:

如何攻入微軟VS Code的Github倉庫

研究人員表示,雖然這個代碼庫的主分支具有基于帳戶的分支保護(hù),但GitHub Actions令牌無法繞過這些保護(hù),不過可以使用該令牌將文件推送到發(fā)布分支。

值得注意的是,RyotaK在遵守了微軟的漏洞獎勵計劃提交漏洞的同時,也按照微軟的“Safe Harbor”準(zhǔn)則執(zhí)行了這一次的PoC攻擊。

研究人員RyotaK在其發(fā)布的報告中寫到:“Microsoft允許通過“Safe Harbor”來診斷和調(diào)測漏洞。

這個代碼庫中的安全問題將有可能被應(yīng)用到軟件供應(yīng)鏈攻擊中

這種類型的安全漏洞將允許攻擊者入侵其他安全的軟件代碼庫,從而為更加復(fù)雜的軟件供應(yīng)鏈攻擊奠定基礎(chǔ)。

毫無疑問,SolarWinds供應(yīng)鏈攻擊已經(jīng)成為了安全界的新聞頭條。在有針對性的供應(yīng)鏈攻擊中,針對源代碼編輯器和IDE的攻擊可能會對其用戶、開發(fā)人員以及接收使用問題IDE構(gòu)建的應(yīng)用程序的客戶端造成毀滅性的后果。

關(guān)于如何攻入微軟VS Code的Github倉庫就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI