2021-03-20
一位安全研究人員設(shè)法破壞了35家以上高科技公司的系統(tǒng),這被稱為一種新穎的軟件供應(yīng)鏈攻擊(依賴關(guān)系混淆攻擊)。通過利用這種稱為依賴性混淆或命名空間混淆的攻擊方式,尤其是npm Registry更容易受到供應(yīng)鏈命名空間混淆的影響。
什么是依賴關(guān)系混淆
我們先來列舉一個例子:
想象一下,我說過,您正在從事一個非常秘密的項目,名為Secret Almo。組件坐標為org.acme:secret-almo:1.0,并且您不希望競爭對手知道它。但是,如果您的一位同事不小心將org.acme:secret-almo:1.1或任何不存在的版本添加為該庫的依賴項,并運行了構(gòu)建該怎么辦?這是將要發(fā)生的事情:
l 請求到達私服的組倉庫(group),首先檢查本地資源庫。如果您的同事沒有犯錯并且使用1.0作為版本,則解決方案將在那里停止,并且將檢索到正確的工件。但是找不到1.1,因此公司的依賴私服會繼續(xù)尋找。
l 私服會一對一地查看作為組倉庫(group)一部分的遠程存儲庫(proxy),將包含您的秘密項目名稱的URL請求發(fā)送到外部第三方存儲庫!
在這種情況下,依賴性混淆指的是您的開發(fā)環(huán)境無法區(qū)分軟件構(gòu)建中依賴的組件是內(nèi)部私有創(chuàng)建的程序包,還是公用軟件存儲庫中同名的程序包。
如何利用依賴關(guān)系混淆進行攻擊呢
我們繼續(xù)舉個例子:
讓我們回到上一個場景,有關(guān)Secret Almo的工作仍在進行中。讓我們看一下項目的另一個組件, almo-common-utils,它是用Node編寫的,是web應(yīng)用程序的所有依賴組件中一部分。而私服組倉庫(group),包括代理一組遠程倉庫(代理npm官方注冊表),本地(用于內(nèi)部共享模塊)。
考慮以下:
1. npm Registry是一個集市。任何人都可以在上面發(fā)布一個未知范圍NPM組件,并為所欲為的調(diào)用,即“almo-common-utils”。
2. npm注冊表中沒有名為“ almo-common-utils ”的軟件包(好吧,因為它是一個內(nèi)部公司庫),因此沒有名稱沖突。
3. 大多數(shù)npm依賴項都使用版本范圍聲明來請求最新的兼容版本。
攻擊者想要攻擊不受保護的組織的唯一信息是almo-common-utils的存在,使用中的該庫的主要版本(假設(shè)他們知道版本3在組織中被廣泛使用),并且知道其中的源代碼。
他們可以克隆和修改源代碼,將任何惡意軟件嵌入其中,但仍保持與原始代碼的兼容性,并將其作為secret-almo:3.99.99 上載到npm Registry,沒有人能阻止它們這么做。
現(xiàn)在讓我們看看當請求secret-almo:^ 3.0.0時私服的工作模式:
1. 在本地存儲庫中尋找最新的兼容機密Almo。發(fā)現(xiàn)3.2.4。
2. 在npm-registry代理遠程存儲庫中查找最新的兼容secret-almo。發(fā)現(xiàn)3.99.99。
3. 來自npm注冊表的虛假secret-almo獲勝,供應(yīng)鏈被劫持。
如何解決依賴混淆攻擊呢
使用Artifactory,在您的遠程存儲庫上使用排除模式!
您知道在npm Registry中永遠找不到almo-common-utils的方法嗎?告訴你的倉庫管理員!在排除模式中添加您的私有依賴項,并保護自己免受嚴重供應(yīng)鏈攻擊。如此簡單,以至于幾乎可以忽略不計。
同時也可以在本地倉庫中排除掉第三方組件的坐標,避免內(nèi)部私人串改第三方的可信版本
——END——
更多網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計等相關(guān)內(nèi)容,歡迎您咨詢中山網(wǎng)訊科技!
責任編輯:中山網(wǎng)站建設(shè)
【網(wǎng)訊網(wǎng)絡(luò)】國家高新技術(shù)企業(yè)》十二年專注軟件開發(fā),網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,APP開發(fā),小程序,微信公眾號開發(fā),定制各類企業(yè)管理軟件(OA、CRM、ERP、OMS訂單管理系統(tǒng)、WMS進銷存管理軟件等)!服務(wù)熱線:0760-88610046、13924923903,http://www.denorpool.com
*請認真填寫需求,我們會在24小時內(nèi)與您取得聯(lián)系。