軟件供應鏈攻擊(依賴關系混淆攻擊)正在破壞你的系統安全

2021-03-20

一位安全研究人員設法破壞了35家以上高科技公司的系統,這(zhè)被稱爲一種(zhǒng)新穎的軟件供應鏈攻擊(依賴關系混淆攻擊)。通過(guò)利用這(zhè)種(zhǒng)稱爲依賴性混淆或命名空間混淆的攻擊方式,尤其是npm Registry更容易受到供應鏈命名空間混淆的影響。

什麼(me)是依賴關系混淆

我們先來列舉一個例子:

想象一下,我說過(guò),您正在從事(shì)一個非常秘密的項目,名爲Secret Almo。組件坐标爲org.acme:secret-almo:1.0,并且您不希望競争對(duì)手知道(dào)它。但是,如果您的一位同事(shì)不小心將(jiāng)org.acme:secret-almo:1.1或任何不存在的版本添加爲該庫的依賴項,并運行了構建該怎麼(me)辦?這(zhè)是將(jiāng)要發(fā)生的事(shì)情:

l 請求到達私服的組倉庫(group),首先檢查本地資源庫。如果您的同事(shì)沒(méi)有犯錯并且使用1.0作爲版本,則解決方案將(jiāng)在那裡(lǐ)停止,并且將(jiāng)檢索到正确的工件。但是找不到1.1,因此公司的依賴私服會繼續尋找。

l 私服會一對(duì)一地查看作爲組倉庫(group)一部分的遠程存儲庫(proxy),將(jiāng)包含您的秘密項目名稱的URL請求發(fā)送到外部第三方存儲庫!

在這(zhè)種(zhǒng)情況下,依賴性混淆指的是您的開(kāi)發(fā)環境無法區分軟件構建中依賴的組件是内部私有創建的程序包,還(hái)是公用軟件存儲庫中同名的程序包。

如何利用依賴關系混淆進(jìn)行攻擊呢

我們繼續舉個例子:

讓我們回到上一個場景,有關Secret Almo的工作仍在進(jìn)行中。讓我們看一下項目的另一個組件, almo-common-utils,它是用Node編寫的,是web應用程序的所有依賴組件中一部分。而私服組倉庫(group),包括代理一組遠程倉庫(代理npm官方注冊表),本地(用于内部共享模塊)。

考慮以下:

1. npm Registry是一個集市。任何人都(dōu)可以在上面(miàn)發(fā)布一個未知範圍NPM組件,并爲所欲爲的調用,即“almo-common-utils”。

2. npm注冊表中沒(méi)有名爲“ almo-common-utils ”的軟件包(好(hǎo)吧,因爲它是一個内部公司庫),因此沒(méi)有名稱沖突。

3. 大多數npm依賴項都(dōu)使用版本範圍聲明來請求最新的兼容版本。

攻擊者想要攻擊不受保護的組織的唯一信息是almo-common-utils的存在,使用中的該庫的主要版本(假設他們知道(dào)版本3在組織中被廣泛使用),并且知道(dào)其中的源代碼。

他們可以克隆和修改源代碼,將(jiāng)任何惡意軟件嵌入其中,但仍保持與原始代碼的兼容性,并將(jiāng)其作爲secret-almo:3.99.99 上載到npm Registry,沒(méi)有人能(néng)阻止它們這(zhè)麼(me)做。

現在讓我們看看當請求secret-almo:^ 3.0.0時私服的工作模式:

1. 在本地存儲庫中尋找最新的兼容機密Almo。發(fā)現3.2.4。

2. 在npm-registry代理遠程存儲庫中查找最新的兼容secret-almo。發(fā)現3.99.99。

3. 來自npm注冊表的虛假secret-almo獲勝,供應鏈被劫持。

如何解決依賴混淆攻擊呢

使用Artifactory,在您的遠程存儲庫上使用排除模式!

您知道(dào)在npm Registry中永遠找不到almo-common-utils的方法嗎?告訴你的倉庫管理員!在排除模式中添加您的私有依賴項,并保護自己免受嚴重供應鏈攻擊。如此簡單,以至于幾乎可以忽略不計。


同時也可以在本地倉庫中排除掉第三方組件的坐标,避免内部私人串改第三方的可信版本

——END——

  更多網站設計、網頁設計等相關内容,歡迎您咨詢中山網訊科技!
  
責任編輯:中山網站建設
     【網訊網絡】國(guó)家高新技術企業》十二年專注軟件開(kāi)發(fā),網站建設,網頁設計,APP開(kāi)發(fā),小程序,微信公衆号開(kāi)發(fā),定制各類企業管理軟件(OA、CRM、ERP、OMS訂單管理系統、WMS進(jìn)銷存管理軟件等)!服務熱線:0760-88610046、13924923903,http://www.wansion.net

您的項目需求咨詢熱線:0760-88610046(國(guó)家高新技術企業)

*請認真填寫需求,我們會在24小時内與您取得聯系。