如何評(píng)估NPM軟件包依賴項(xiàng)的安全性?近年來,編程領(lǐng)域已轉(zhuǎn)向越來越高的安全標(biāo)準(zhǔn)。在過去五年中,超過50%的數(shù)據(jù)泄露事件在增加,并且記錄了大量的網(wǎng)絡(luò)犯罪攻擊,因此,確保在線服務(wù)的安全性和可操作性正在逐漸消耗開發(fā)團(tuán)隊(duì)的時(shí)間。數(shù)據(jù)泄露的成本可能會(huì)使一家老牌公司癱瘓,更不用說可能會(huì)使一家初創(chuàng)公司被判處死刑。這就是為什么在每個(gè)級(jí)別上努力減少和減輕所開發(fā)軟件的安全威脅非常重要的原因。
一、包裹檢查工具
讓我們從一些簡(jiǎn)單的命令開始,您可以將它們添加到構(gòu)建腳本中或作為CI/CD步驟。
1.npm重復(fù)數(shù)據(jù)刪除
重復(fù)數(shù)據(jù)刪除命令只是嘗試通過將依賴關(guān)系上移樹來簡(jiǎn)化依賴關(guān)系。本質(zhì)上,試圖擁有一個(gè)可以被更多軟件包使用的兼容的依賴項(xiàng),而不是每個(gè)軟件包都有其自己稍有不同的版本。更少的版本可以通過所說的依賴關(guān)系提供更少的攻擊媒介(較新的版本往往具有針對(duì)已知和已發(fā)布漏洞的修復(fù)程序)。
2.npm審核?
一個(gè)非常強(qiáng)大的命令,它將掃描您的項(xiàng)目中的所有已知漏洞,并為您提供安全報(bào)告以及潛在的修復(fù)程序。在某些情況下,它甚至可以為您更新軟件包。在其他情況下,它僅告訴您如何進(jìn)行修復(fù)。雖然功能非常強(qiáng)大,但也有其局限性。即它只能檢查報(bào)告給npm Registry的已知漏洞。對(duì)于所有尚未通過驗(yàn)證的漏洞,您真是不走運(yùn)。
3.OWASP依賴項(xiàng)檢查
OWASP依賴項(xiàng)檢查是根據(jù)已知漏洞的公共數(shù)據(jù)庫(kù)檢查依賴項(xiàng)的。它具有一個(gè)CLI工具,可在本地存儲(chǔ)要檢查的整個(gè)數(shù)據(jù)庫(kù)。這使得它適合您不想授予完全訪問權(quán)限的系統(tǒng)。
4.NPQ
使用此命令行實(shí)用程序,您可以檢查是否存在不良依賴關(guān)系,并提示您確認(rèn)是否注意到您試圖安裝具有已知漏洞的軟件包。
在這里,您可以找到一系列精選的面向安全性的不同node.js安全性資源。對(duì)于簡(jiǎn)單更新不那么容易的情況,它對(duì)于修復(fù)或緩解問題和漏洞可能很有用。
二、超越自動(dòng)檢查
除了可以添加到常規(guī)代碼工作流中的內(nèi)容之外,您可能還需要定期進(jìn)行更深入的軟件包分析。嘗試為您的項(xiàng)目回答以下問題:
我要用這個(gè)模塊做什么?還是有必要嗎?
1.是否存在使用不同模塊(或我們的代碼)來解決同一問題的情況?
2.哪些軟件包帶有大多數(shù)子模塊?我可以用一些“更扁平的”包裝代替它們嗎?
3.他們都還在積極發(fā)展嗎?哪些長(zhǎng)期未更新或沒有活躍的開發(fā)人員?
4.看一下他們的問題/錯(cuò)誤跟蹤器,是否有關(guān)于漏洞或錯(cuò)誤代碼的報(bào)告?
5.他們是否發(fā)布測(cè)試覆蓋率,通過和/或任何其他代碼質(zhì)量指標(biāo)?
上面的問題將幫助您評(píng)估是否必須更新任何軟件包或?qū)⑵涮鎿Q為替代軟件包,或者甚至由團(tuán)隊(duì)進(jìn)行編碼。但是您可能必須走的更遠(yuǎn)。上面的問題集中于一些攻擊媒介。主要是在開發(fā)人員有意或無意中將漏洞引入其代碼庫(kù)的情況。但是,如果發(fā)布者的用戶帳戶受到威脅該怎么辦?
密碼錯(cuò)誤和重復(fù)是一個(gè)現(xiàn)實(shí),它會(huì)影響每個(gè)在線服務(wù)(包括npm注冊(cè)表)的安全性。如果您具有發(fā)布者的密碼,則可以使用git克隆其代碼,添加您的惡意代碼,并將其構(gòu)建并發(fā)布到NPM注冊(cè)表中。一切看起來都不錯(cuò),可能要花費(fèi)數(shù)月和數(shù)百萬次下載才能有人注意到有什么問題。
其中一個(gè)案例是一個(gè)包裹,該包裹在被發(fā)現(xiàn)之前從礦工的錢包中竊取了近三個(gè)月的比特幣。當(dāng)前,沒有很好的方法來驗(yàn)證發(fā)布的內(nèi)容是該項(xiàng)目的Github上顯示的內(nèi)容。
三、那么該怎么辦?
有幾種方法可以驗(yàn)證上述內(nèi)容:
1.比較GitHub和您從注冊(cè)表下載的版本之間的git commit散列。
2.下載源代碼并自己構(gòu)建,然后將其與從NPM下載的軟件包進(jìn)行比較。針對(duì)這兩個(gè)版本運(yùn)行測(cè)試和基準(zhǔn),并尋找結(jié)果和性能的任何變化,可能會(huì)發(fā)現(xiàn)代碼差異,這可能表明存在潛在的惡意代碼。
四、尋找新的可能的攻擊媒介
這篇文章從您可以采取的一些簡(jiǎn)單步驟開始,以提高安全性。超出范圍的所有內(nèi)容都趨于變得更加復(fù)雜,并且在項(xiàng)目的日常工作中很難做到。除了知道現(xiàn)在可以使用哪些向量來破壞您的應(yīng)用程序之外,您還必須注意將來可能發(fā)生的攻擊向量(這些攻擊向量仍是未知的或從未嘗試針對(duì)npm注冊(cè)表/軟件包)。而且,可悲的是,為此,除了閱讀博客,參加會(huì)議,尋找正式公告或讓專門的安全專家為您做之外,您幾乎無能為力。
這就是像我們這樣的網(wǎng)絡(luò)安全工具可以派上用場(chǎng)的地方。從理論上講,您可以通過研究所有攻擊媒介,漏洞報(bào)告站點(diǎn),測(cè)試案例,代碼基準(zhǔn)以及創(chuàng)建運(yùn)行所需的腳本和CI/CD管道以使其自動(dòng)化來重新實(shí)現(xiàn)整個(gè)檢查堆棧。但是,所有這些工作只會(huì)帶您進(jìn)入當(dāng)前的最新狀態(tài)。此外,僅要保持其運(yùn)行就需要額外的維護(hù)工作。
但是,使用基于云的漏洞掃描器,您不僅可以訂閱最新的漏洞檢查技術(shù)。您還將委派您或您的團(tuán)隊(duì)必須獲得并不斷更新的所有專業(yè)知識(shí)和研究,以擁有用于安全驗(yàn)證的內(nèi)部解決方案。
以上就是關(guān)于如何評(píng)估NPM軟件包依賴項(xiàng)的安全性的全部?jī)?nèi)容介紹,想了解更多關(guān)于信息安全的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。