【NodeJS】3 種確保開源Node.js依賴包安全的方法
隨著Node.js應用程序的規模和特性的擴展,它們的依賴關系也會擴展。為了讓Node.js應用程序能夠正常運行,你還需要測試框架、UI框架、數據庫客戶端、像Express這樣的MVC庫等等。

然而,**黑客們正越來越多地瞄準這類依賴關系,發起鏈式攻擊,將惡意代碼注入第三方軟件。**研究人員還發現,配置不良的構建過程使應用程序更容易受到這類攻擊。
在這篇文章中,我們將回顧三種工具,它們是最近開源的,用于提高Node.js依賴的安全性,包括Socket、Node-Secure CLI和N|Solid。讓我們開始吧!
什么是開源依賴關系?
**如果源代碼可供任何人查看、修改或改進,則該軟件被認為是開源的。**任何人都可以訪問和使用源代碼,或者增強原始軟件,或者創建完全不同的東西。流行的托管服務如GitHub托管了許多這樣的開源項目。
當開發人員決定在他們的應用程序中使用另一個軟件包中已經存在的特性,而不是從頭開始編寫它時,原始包就會成為他們自己項目中的依賴項。
然而,偶爾會有一些附加到開源依賴項的許可證,對使用該依賴項的軟件能做什么和不能做什么造成一些限制。例如,有些許可證不允許開發人員銷售利用開源依賴關系的軟件。因此,檢查開放源碼許可證并確保項目是兼容的是很重要的。
npm是Node.js的包管理器。它創建于2009年,是一個開源項目,幫助JavaScript開發人員輕松地將打包的模塊作為依賴項共享。
開源的依賴關系是無價的,也是有風險的
許多軟件開發團隊依賴于開源依賴來實現身份驗證等特性,從而加快了整體開發時間。然而,使用這些依賴項可能會使項目暴露于攻擊,使它們面臨嵌入惡意軟件的風險。
依賴關系可以分為傳遞性依賴和直接依賴。直接依賴項是你的代碼直接引用的庫,而傳遞依賴項是你的依賴項鏈接到的庫。本質上,傳遞依賴性是您的依賴性的依賴性。由于傳遞依賴,開發人員經常不知道他們正在使用的開源庫的數量。
根據Veracode進行的研究,在2020年被訪問的85000個應用程序中,71%在初始掃描時在開源庫中有一個漏洞,47%的缺陷來自傳遞依賴。JavaScript應用程序是罪魁禍首,占這個數字的87%。
**當您安裝一個依賴項時,您也導入了它的所有問題,比如安全缺陷甚至bug。**例如,如果用于生成用戶詳細信息的開源庫有跨站點腳本漏洞,那么您的整個軟件都是脆弱的,使您和您的用戶處于數據被盜的風險中。作為開發人員,您有責任確保其他人編寫的代碼不會使您的系統變得不安全。
確保開源Node.js依賴的安全性
對開發人員來說,跟蹤應用程序中使用的每個依賴項(包括直接依賴項和傳遞依賴項)是很重要的。如果開發人員不知道他們正在使用的依賴關系,他們就無法在開源安全性和許可證遵從性問題上保護自己。
**定期的代碼檢查對于開發團隊跟蹤依賴關系以及項目中依賴于它們的部分是很有幫助的。開發人員應該始終注意他們所使用的軟件包的安全公告。**當有新的更新時,更新依賴關系也是一個很好的實踐,密切關注補丁版本,它有時會修復已經報告的漏洞。
前述Veracode的研究報告稱,**75%的已知缺陷可以通過對代碼進行小的修改或補丁來輕松修復。**然而,開發人員也可以使用工具來掃描依賴關系樹以發現安全風險。有許多工具可以集成到應用程序的構建過程中,并檢測軟件中的所有開源組件,生成關于許可、庫存和安全性的報告。讓我們回顧一下最流行的三種。
1. Socket
根據其文檔,Socket可以在受到攻擊之前檢測并阻止它們,防止最壞的可能結果。Socket在包及其所有依賴項(包括傳遞依賴項)上運行靜態分析,以查找特定的風險標記。它使用深度包檢查來剝離依賴層,并描述其實際行為。
套接字通過防止任何被破壞或劫持的包滲透到您的供應鏈來確保安全性。它監視對package.json的實時更改,檢測依賴更新是否引入了新的有風險的api,包括網絡、shell、文件系統等等。最后,它可以阻止開源代碼中的任何危險信號,包括惡意軟件、錯字占用、隱藏代碼、誤導包、權限蔓延等等。
Socket不僅可以檢測依賴項中的漏洞,還可以提供關于依賴項風險的可操作反饋。要使用Socket,安裝Socket GitHub應用程序來獲得實時依賴掃描和報告每一個pull請求:
2. Node-Secure CLI
Node- secure CLI是來自NodeSecure的一個Node js命令行工具。它獲取并深入分析給定npm包或帶有package.json的本地項目的依賴樹,輸出一個.Json文件,其中包含關于每個包的所有元數據和標志。CLI能夠打開JSON代碼并顯示網絡中的所有依賴關系,幫助你識別潛在的安全威脅和問題:
有了生成的數據,就有可能快速識別跨項目和包的不同安全性和質量問題。Node-Secure CLI包可以在npm上使用。你可以使用下面的命令輕松安裝它:
npm install @nodesecure/cli -g
安裝后,nsecure的二進制文件將在終端中可用。要查看所有可用的命令,請運行nsecure --help。
3. N|Solid
N|Solid是來自NodeSource的一個可觀察和洞察工具,用于管理Node.js的性能和安全。有了N|Solid,數據直接從您的應用程序架構和堆棧收集,然后以一個清晰的、用戶友好的方式顯示在N|Solid控制臺。
通過一系列測試,npm包被評分,讓開發人員了解他們的軟件面臨多大的風險,以及如何降低風險。Node.js包的評估依據是安全性、合規性和代碼質量。
結尾
對于開發人員來說,更好地認識到他們對項目的依賴關系,從而減少黑客將惡意代碼插入到開放源碼依賴關系中的可能性。
為您的團隊創建開放源碼使用策略,監視開放源碼依賴項的使用情況,以及尋找新的漏洞,將有助于極大地提高開放源碼依賴項的安全性。
在本文中,我們回顧了Socket、Node-Secure CLI和N|Solid,這三種開源工具用于運行項目中可傳遞和直接依賴項的安全性報告。這些還可以幫助您審查許可和庫存,防止您和應用程序用戶將來遇到麻煩。
JavaScript Node.js
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。