大多數(shù)現(xiàn)代應(yīng)用程序都依賴第三方組件和依賴項(xiàng)來(lái)運(yùn)行。雖然這種開(kāi)源代碼有其優(yōu)勢(shì),但它也可能將漏洞、惡意代碼和其他安全風(fēng)險(xiǎn)引入應(yīng)用程序。軟件組合分析 (SCA) 是一種用于識(shí)別這些外部代碼片段的DevSecOps工具。SCA 可用于跟蹤開(kāi)源組件、查找漏洞和管理軟件許可證。
軟件組成分析解決方案的工作原理
SCA 解決方案旨在檢查未知代碼庫(kù)并記錄所使用的開(kāi)源組件、它們的漏洞和其他信息。這可以通過(guò)以下步驟完成:
- 掃描: SCA 工具將從掃描代碼庫(kù)開(kāi)始,以識(shí)別代碼使用的庫(kù)和依賴項(xiàng)。基于此掃描,該工具可以生成軟件物料清單 (SBOM),其中列出了應(yīng)用程序使用的所有開(kāi)源代碼。
- 文檔:軟件版本、許可信息和應(yīng)用程序的使用情況都是有價(jià)值的信息。在代碼庫(kù)中識(shí)別開(kāi)源代碼后,SCA 掃描器將記錄此數(shù)據(jù)。
- 漏洞檢測(cè):已知漏洞與受影響的軟件和版本一起記錄為常見(jiàn)漏洞和暴露 (CVE)。通過(guò)了解所使用的開(kāi)源庫(kù)及其版本號(hào),SCA 工具可以識(shí)別應(yīng)用程序中的已知漏洞。
在此過(guò)程結(jié)束時(shí),SCA 工具生成了一份報(bào)告,其中包含有關(guān)應(yīng)用程序使用的所有開(kāi)源依賴項(xiàng)的信息。此信息可能會(huì)報(bào)告給安全人員,或者,根據(jù)調(diào)查結(jié)果和CI/CD 管道中的集成級(jí)別,如果新提交使用已棄用或不安全的組件,甚至可能會(huì)阻止將新提交添加到代碼庫(kù)中。通過(guò)將 SCA 集成到 CI/CD 管道中,開(kāi)發(fā)團(tuán)隊(duì)可以將安全性轉(zhuǎn)移到左側(cè)并降低可利用漏洞到達(dá)生產(chǎn)系統(tǒng)的風(fēng)險(xiǎn)。
為什么重要
供應(yīng)鏈攻擊已成為對(duì)應(yīng)用程序安全的日益嚴(yán)重的威脅。許多應(yīng)用程序依賴于包含易受攻擊代碼的開(kāi)源組件。網(wǎng)絡(luò)犯罪分子還積極致力于開(kāi)發(fā)庫(kù)或?qū)阂獯a注入合法庫(kù)以破壞應(yīng)用程序安全。SCA 使組織能夠了解其應(yīng)用程序所依賴的第三方代碼。這種可見(jiàn)性對(duì)于識(shí)別繼承漏洞和使用開(kāi)源和第三方代碼可能引起的其他問(wèn)題至關(guān)重要。
軟件組成分析 (SCA) 用例
SCA 提供對(duì)組織應(yīng)用程序使用的開(kāi)源依賴項(xiàng)的可見(jiàn)性。這種可見(jiàn)性對(duì)于漏洞和許可證管理至關(guān)重要。
漏洞管理
開(kāi)源庫(kù)可能包含可利用的漏洞或惡意代碼。如果應(yīng)用程序?qū)脒@些庫(kù),則可能容易受到利用或執(zhí)行惡意代碼。通常,公司很難保持對(duì)其使用的第三方代碼的可見(jiàn)性。對(duì)于一個(gè)開(kāi)源組件導(dǎo)入一個(gè)或多個(gè)其他組件的間接依賴關(guān)系尤其如此。SCA 解決方案可以幫助公司獲得所需的可見(jiàn)性,并快速確定應(yīng)用程序使用的庫(kù)版本是否存在 CVE。
許可證管理
使用第三方代碼可能會(huì)給組織帶來(lái)許可問(wèn)題,尤其是在存在廣泛的潛在許可要求的情況下。在一種極端情況下,版權(quán)可能使公司無(wú)法使用組件或可能需要支付版稅。另一方面,copyleft 許可證可以強(qiáng)制要求任何使用特定組件的代碼也必須是免費(fèi)可用和開(kāi)源的。
如果不了解其應(yīng)用程序使用的開(kāi)源組件,組織就會(huì)對(duì)許可規(guī)則一無(wú)所知,并可能處于法律危險(xiǎn)之中。通過(guò)收集代碼庫(kù)中使用的所有開(kāi)源組件的許可信息,公司可以了解潛在的許可和法律問(wèn)題。
SCA 如何幫助防止供應(yīng)鏈攻擊
越來(lái)越多的網(wǎng)絡(luò)威脅參與者正在執(zhí)行供應(yīng)鏈攻擊,其中漏洞或惡意代碼被注入到其他應(yīng)用程序使用的開(kāi)源項(xiàng)目中。導(dǎo)入庫(kù)的軟件將執(zhí)行惡意代碼或繼承漏洞,使它們?nèi)菀妆焕谩?/p>
SCA 可以通過(guò)識(shí)別應(yīng)用程序依賴項(xiàng)中的漏洞來(lái)幫助防止供應(yīng)鏈攻擊。此外,深入了解應(yīng)用程序使用的依賴關(guān)系有助于識(shí)別網(wǎng)絡(luò)犯罪分子為這些攻擊創(chuàng)建或破壞的已知不良庫(kù)。
軟件組成分析 (SCA) 挑戰(zhàn)
SCA 對(duì)于管理組織的軟件供應(yīng)鏈安全風(fēng)險(xiǎn)至關(guān)重要。然而,SCA 面臨挑戰(zhàn),包括:
- 間接依賴:一個(gè)應(yīng)用程序的依賴可能有它們自己的依賴。這些鏈條可能深入多個(gè)層次,因此難以實(shí)現(xiàn)完全可見(jiàn)性。
- 依賴關(guān)系識(shí)別:不同的編程語(yǔ)言和生態(tài)系統(tǒng)以不同方式處理依賴關(guān)系。SCA 解決方案必須了解將開(kāi)源代碼導(dǎo)入應(yīng)用程序的所有方式。
- 漏洞管理:每天都會(huì)發(fā)現(xiàn)新的漏洞,漏洞管理的來(lái)源并不總是最新的。因此,SCA 可能會(huì)遺漏漏洞,而開(kāi)發(fā)團(tuán)隊(duì)可能難以跟上積壓工作。