你的位置:首頁(yè) > 電路保護(hù) > 正文

二進(jìn)制密鑰掃描實(shí)現(xiàn)預(yù)警守護(hù),阻擊潛在供應(yīng)鏈重大安全隱患

發(fā)布時(shí)間:2024-08-16 責(zé)任編輯:lina

【導(dǎo)讀】作為一項(xiàng)針對(duì)線(xiàn)上社區(qū)的服務(wù),JFrog安全研究團(tuán)隊(duì)持續(xù)掃描Docker Hub、NPM和PyPI等公共倉(cāng)庫(kù),旨在識(shí)別惡意軟件包和泄露的密鑰。一旦發(fā)現(xiàn)潛在威脅,團(tuán)隊(duì)會(huì)立即通知相關(guān)維護(hù)人員,確保漏洞在攻擊者對(duì)其進(jìn)行利用之前便得到修復(fù)。盡管JFrog團(tuán)隊(duì)以往已多次檢測(cè)到相似方式泄露密鑰的安全隱患,但由于此次事件潛在后果影響廣泛,因此尤為嚴(yán)重——假設(shè)攻擊者將惡意代碼注入PyPI軟件包,或者將所有Python包替換為惡意軟件包,這將可能影響到Python語(yǔ)言本身!


JFrog安全研究團(tuán)隊(duì)近期發(fā)現(xiàn)并報(bào)告了一起嚴(yán)重的安全事件,一個(gè)具有管理員權(quán)限的訪(fǎng)問(wèn)令牌在Docker Hub上托管的某個(gè)公共Docker容器中意外泄露,該令牌可訪(fǎng)問(wèn)Python、PyPI及Python軟件基金會(huì)(PSF)的GitHub倉(cāng)庫(kù)。


作為一項(xiàng)針對(duì)線(xiàn)上社區(qū)的服務(wù),JFrog安全研究團(tuán)隊(duì)持續(xù)掃描Docker Hub、NPM和PyPI等公共倉(cāng)庫(kù),旨在識(shí)別惡意軟件包和泄露的密鑰。一旦發(fā)現(xiàn)潛在威脅,團(tuán)隊(duì)會(huì)立即通知相關(guān)維護(hù)人員,確保漏洞在攻擊者對(duì)其進(jìn)行利用之前便得到修復(fù)。盡管JFrog團(tuán)隊(duì)以往已多次檢測(cè)到相似方式泄露密鑰的安全隱患,但由于此次事件潛在后果影響廣泛,因此尤為嚴(yán)重——假設(shè)攻擊者將惡意代碼注入PyPI軟件包,或者將所有Python包替換為惡意軟件包,這將可能影響到Python語(yǔ)言本身!


JFrog安全研究團(tuán)隊(duì)迅速鎖定泄露的密鑰,并即刻向PyPI安全團(tuán)隊(duì)報(bào)告,PyPI安全團(tuán)隊(duì)僅在短短17分鐘內(nèi)便撤銷(xiāo)了該令牌,有效遏制了潛在安全危機(jī)。

如今,Python編程語(yǔ)言被廣泛應(yīng)用于絕大多數(shù)的數(shù)字系統(tǒng)中,包括:

  • YouTube、Instagram、Facebook、Reddit、Pinterest以及其他各類(lèi)社交媒體網(wǎng)站

  • 所有機(jī)器學(xué)習(xí)和人工智能程序

  • 金融支付系統(tǒng),如Venmo、Zelle以及摩根大通和高盛等銀行的內(nèi)部操作系統(tǒng)


我們將深入剖析JFrog是如何發(fā)現(xiàn)并阻止一起可能危及整個(gè)Python基礎(chǔ)設(shè)施的GitHub個(gè)人訪(fǎng)問(wèn)令牌(PAT)泄露事件,同時(shí)借此案例強(qiáng)調(diào)在密鑰檢測(cè)中“右移”策略的重要性,該策略保證了不僅在源代碼中查找密鑰,還將在二進(jìn)制文件和生產(chǎn)制品中加強(qiáng)防范。

我們發(fā)現(xiàn)了什么


我們的密鑰掃描引擎在Docker Hub上的一個(gè)公共倉(cāng)庫(kù)中檢測(cè)到了一個(gè)“傳統(tǒng)”的GitHub令牌。與更新的細(xì)粒度令牌不同,傳統(tǒng)GitHub令牌的風(fēng)險(xiǎn)在于,它們授予用戶(hù)訪(fǎng)問(wèn)所有倉(cāng)庫(kù)相似的權(quán)限。


在本次的案例中,該事件主角擁有對(duì)Python核心基礎(chǔ)設(shè)施倉(cāng)庫(kù)(包括PSF、PyPI、Python語(yǔ)言及CPython)的管理員權(quán)限。


GitHub團(tuán)隊(duì)

具有管理員訪(fǎng)問(wèn)權(quán)限的倉(cāng)庫(kù)數(shù)量

python

91

pypa

55

psf

42

pypi

21


可能引發(fā)的后果


如果有他人發(fā)現(xiàn)了這一泄露的令牌,將造成后果極其嚴(yán)重的安全隱患。該令牌的持有者將擁有訪(fǎng)問(wèn)所有Python、PyPI和Python軟件基金會(huì)存儲(chǔ)庫(kù)的管理員權(quán)限,并可能借此實(shí)施大規(guī)模的供應(yīng)鏈攻擊。


如果出現(xiàn)這一情況,可能會(huì)發(fā)生各種形式的供應(yīng)鏈攻擊。其中一種可能的攻擊方式是,攻擊者將惡意代碼藏匿于CPython中,該組件包含Python語(yǔ)言的核心庫(kù),由C語(yǔ)言編寫(xiě)。鑒于Python的廣泛應(yīng)用,惡意代碼一旦混入Python分發(fā)版,其潛在影響將波及全球數(shù)以千萬(wàn)計(jì)的計(jì)算機(jī)。


二進(jìn)制密鑰掃描實(shí)現(xiàn)預(yù)警守護(hù),阻擊潛在供應(yīng)鏈重大安全隱患


另一種可能遭受攻擊的場(chǎng)景是,向PyPI的Warehouse代碼中滲透惡意代碼,該代碼用于管理PyPI包管理器。如果攻擊者通過(guò)插入代碼獲得通往PyPI存儲(chǔ)的后門(mén)的權(quán)限,他們將隨意操縱熱門(mén)PyPI包,并且在其中隱藏惡意代碼或用惡意代碼完全替換原有內(nèi)容。盡管這一攻擊方式并不十分高明,但其危害性不可小覷。


二進(jìn)制密鑰掃描實(shí)現(xiàn)預(yù)警守護(hù),阻擊潛在供應(yīng)鏈重大安全隱患


為什么該令牌僅在二進(jìn)制文件中找到?


在Docker容器內(nèi)的一個(gè)編譯后的Python文件——__pycache__/build.cpython-311.pyc中發(fā)現(xiàn)了身份驗(yàn)證令牌:


二進(jìn)制密鑰掃描實(shí)現(xiàn)預(yù)警守護(hù),阻擊潛在供應(yīng)鏈重大安全隱患


然而,在匹配的源代碼文件中,該令牌并未包含在相同功能的部分當(dāng)中。


這就意味著原作者:

1.曾經(jīng)短暫地將授權(quán)令牌添加到了他們的源代碼中,并運(yùn)行了源代碼

2.這項(xiàng)被運(yùn)行的源代碼(Python腳本) 是帶有授權(quán)令牌的 .pyc二進(jìn)制文件

3.盡管原作者從源代碼中刪除了授權(quán)令牌,但沒(méi)有同步清理 .pyc

4.將修正版本的源代碼和未修正的 .pyc二進(jìn)制文件都推送到了Docker鏡像中

例如,以下是反編譯的build.cpython-311.pyc文件與Docker容器中實(shí)際源代碼的比較:


二進(jìn)制密鑰掃描實(shí)現(xiàn)預(yù)警守護(hù),阻擊潛在供應(yīng)鏈重大安全隱患


從二進(jìn)制文件“build.cpython-311.pyc”中重構(gòu)的源代碼


二進(jìn)制密鑰掃描實(shí)現(xiàn)預(yù)警守護(hù),阻擊潛在供應(yīng)鏈重大安全隱患


Docker容器中匹配文件的實(shí)際源代碼


可以發(fā)現(xiàn),盡管從 .pyc緩存文件中反編譯的代碼與原始代碼相似,但其含有了一個(gè)包含有效GitHub令牌的授權(quán)數(shù)據(jù)頭。

僅在源代碼中掃描密鑰是不夠的

此事件警醒我們,為了預(yù)防類(lèi)似的安全隱患,雖然與基于文本的文件相比,在二進(jìn)制文件中搜索泄露的機(jī)密信息更為困難,但是很多情況下關(guān)鍵數(shù)據(jù)只存在于二進(jìn)制數(shù)據(jù)當(dāng)中,因此對(duì)發(fā)布的Docker鏡像中的源代碼和二進(jìn)制數(shù)據(jù)進(jìn)行全面審核將成為最佳的解決方案。

二進(jìn)制密鑰掃描實(shí)現(xiàn)預(yù)警守護(hù),阻擊潛在供應(yīng)鏈重大安全隱患


PyPI的快速響應(yīng)


在本次事件報(bào)告中,我們由衷感謝PyPI安全團(tuán)隊(duì)的迅速響應(yīng)。


面對(duì)難以規(guī)避的泄露風(fēng)險(xiǎn),企業(yè)和相關(guān)組織應(yīng)以最快速度采取行動(dòng),評(píng)估并減輕潛在損害。


在此次事件中,在發(fā)現(xiàn)令牌后,JFrog立即將這一情況通知了PyPI的安全團(tuán)隊(duì)和令牌的所有者。PyPI的安全團(tuán)隊(duì)迅速響應(yīng),僅在17分鐘后就做出回應(yīng),撤銷(xiāo)了這一具有安全隱患的令牌。與此同時(shí),PyPI進(jìn)行了全面的檢查,確認(rèn)該令牌尚未涉及任何具有安全威脅的可疑活動(dòng)。


我們可以從密鑰檢測(cè)中汲取哪些經(jīng)驗(yàn)?


從此次事件中,我們汲取了寶貴經(jīng)驗(yàn):

1.在源代碼和文本文件中掃描密鑰已經(jīng)不足以排除安全隱患。現(xiàn)代集成開(kāi)發(fā)環(huán)境(IDE)和開(kāi)發(fā)工具雖然可以有效地在源代碼中檢測(cè)密鑰并防止其泄露,但它們的范圍僅限于代碼,卻往往忽略由構(gòu)建和打包工具生成的二進(jìn)制制品。我們?cè)陂_(kāi)源注冊(cè)表中遇到的大多數(shù)密鑰都位于環(huán)境、配置和二進(jìn)制文件中。

2.用新的令牌替換老式的GitHub令牌以實(shí)現(xiàn)更好的可見(jiàn)性。最初,GitHub 使用的是十六進(jìn)制編碼的 40 個(gè)字符的令牌字符串,與 SHA1 哈希字符串無(wú)異,大多數(shù)密鑰掃描工具都無(wú)法捕捉到這種字符串。2021年,GitHub改用了一種新的令牌格式,該更新并未強(qiáng)制要求所有用戶(hù)重新生成他們的令牌。新格式的令牌包含可識(shí)別的前綴 ghp_,同時(shí)還嵌入了校驗(yàn)和,允許密鑰檢測(cè)工具能更輕松、更準(zhǔn)確地識(shí)別它們。

3.您的令牌只能訪(fǎng)問(wèn)使用它的應(yīng)用程序所需的資源。將令牌權(quán)限設(shè)置為最大并非明智決定。兩年前,GitHub引入了新的細(xì)粒度令牌。與傳統(tǒng)令牌不同,它們?cè)试S用戶(hù)選擇個(gè)人訪(fǎng)問(wèn)令牌可用的權(quán)限和倉(cāng)庫(kù),并將其范圍限制為相應(yīng)任務(wù)所需的最小范圍。我們強(qiáng)烈建議使用此功能,從而最大程度避免類(lèi)似于對(duì)整個(gè)基礎(chǔ)設(shè)施具有最終訪(fǎng)問(wèn)權(quán)限的令牌在一個(gè)輔助項(xiàng)目或臨時(shí)的“hello-world”應(yīng)用程序中被泄露的情況。


二進(jìn)制密鑰掃描實(shí)現(xiàn)預(yù)警守護(hù),阻擊潛在供應(yīng)鏈重大安全隱患


JFrog Secrets Detection – 二進(jìn)制優(yōu)勢(shì)


即使關(guān)鍵令牌被泄露在一個(gè)編譯后的Python二進(jìn)制文件(.pyc)中,JFrog的密鑰檢測(cè)引擎依然能夠?qū)⑵渥R(shí)別。我們能夠檢測(cè)到泄露的令牌主要得益于兩個(gè)重要原因:

1.JFrog Secrets Detection在開(kāi)發(fā)人員的IDE內(nèi)部實(shí)現(xiàn)左移運(yùn)行,也可以在已部署的Docker容器內(nèi)部進(jìn)行右移運(yùn)行。

2.JFrog Secrets Detection能夠?qū)崿F(xiàn)在文本文件和二進(jìn)制文件中搜索泄露的密鑰,實(shí)現(xiàn)全方位的保護(hù)。


JFrog的檢測(cè)基于JFrog Xray針對(duì)配置文件、文本文件和二進(jìn)制文件進(jìn)行掃描,查找純文本憑據(jù)、私鑰、令牌和類(lèi)似的密鑰信息。通過(guò)利用持續(xù)更新且擁有超過(guò)150種特定類(lèi)型證書(shū)列表,以及專(zhuān)有的通用密鑰匹配器,JFrog將盡可能的在掃描過(guò)程中實(shí)現(xiàn)最佳的文件覆蓋范圍。


關(guān)于JFrog


JFrog Ltd.(納斯達(dá)克股票代碼:FROG)的使命是創(chuàng)造一個(gè)從開(kāi)發(fā)人員到設(shè)備之間暢通無(wú)阻的軟件交付世界。秉承“流式軟件”的理念,JFrog軟件供應(yīng)鏈平臺(tái)是統(tǒng)一的記錄系統(tǒng),幫助企業(yè)快速安全地構(gòu)建、管理和分發(fā)軟件,確保軟件可用、可追溯和防篡改。集成的安全功能還有助于發(fā)現(xiàn)和抵御威脅和漏洞并加以補(bǔ)救。JFrog 的混合、通用、多云平臺(tái)可以作為跨多個(gè)主流云服務(wù)提供商的自托管和SaaS服務(wù)。全球數(shù)百萬(wàn)用戶(hù)和7200多名客戶(hù),包括大多數(shù)財(cái)富100強(qiáng)企業(yè),依靠JFrog解決方案安全地開(kāi)展數(shù)字化轉(zhuǎn)型。一用便知!

(作者:Yoav Landman,JFrog聯(lián)合創(chuàng)始人兼首席技術(shù)官、Shachar Menashe, JFrog安全研究高級(jí)總監(jiān))


免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理。


推薦閱讀:

使用環(huán)路供電隔離器解決接地環(huán)路問(wèn)題

有源全波整流器無(wú)需匹配電阻?來(lái)看看這個(gè)非常規(guī)設(shè)計(jì)

麥克風(fēng)傳感器的選擇與設(shè)計(jì)技巧

全方面的高功率直流快速充電解決方案

電動(dòng)汽車(chē)電源轉(zhuǎn)換器的藍(lán)圖


特別推薦
技術(shù)文章更多>>
技術(shù)白皮書(shū)下載更多>>
熱門(mén)搜索
?

關(guān)閉

?

關(guān)閉