什麼是軟體組成分析 (SCA)?
使用開放原始碼元件有哪些風險?
在使用這些元件建立 容器映像 之前,開發人員需要瞭解因先前發現的套件漏洞而產生的安全性疑慮。他們也需要確保符合軟體使用授權的合規性需求。
社群成員經常發現並修補漏洞,但更新程式碼的重任則落在開發人員身上。當發現漏洞時,公開的漏洞攻擊遲早會被公開,甚至為低階的攻擊者打開利用此問題的大門。
事實上,軟體中絕大多數的弱點都不在直接或根套件中,而是在多層深度的相依性中,這使得問題更加嚴重。僅修正使用中的根套件,並不一定能確保使用中的函式庫安全。
此外,還有數十種開放原始碼授權條款,規則各異。舉例來說,有些元件需要歸屬,有些則要求使用該元件的應用程式的原始碼也必須公佈。要追蹤所有的執照及其規則可能很困難。
軟體組成分析找出開放原始碼套件的風險
SCA 工具可辨識應用程式中的所有開放原始碼套件,以及這些套件的所有已知漏洞。這些知識可以用來通知開發人員代碼中的問題,以便在問題被利用之前修復。良好的軟體組成分析流程會將目光從套件管理員延伸至 基礎架構即程式碼 (IaC) 和 Kubernetes 艙單,拉取影像以找出這些影像中的弱點。

SCA 工具可連結至 IaC 範本和無限的依賴性掃描,確保漏洞不會被偵測不到或無法解決。
軟體組成分析工具也可用於產生軟體物料清單 (SBOM 或 software BOM),其中包含應用程式使用的所有開放原始碼元件。SBOM 會列出套件版本的詳細資訊,以及每個使用中元件的已知弱點和授權。例如,對於 Python,BOM 將包括匯入語句中的所有套件,例如 httplib2,以及每個套件的版本號碼、已發現的漏洞和授權。
SCA 計畫應能讓工程、DevOps、安全性和合規性團隊等利害關係人 協同合作 。許多組織會使用這些程式來建立警示和/或阻止程式碼合併到程式碼儲存庫中,如果上述程式碼包含違反組織控制暴露的合規性規定的開放原始碼元件。為弱點和授權類型決定可接受的嚴重性等級時,應讓相關利害關係人參與。
如何在開發流程中使用 SCA
良好的 SCA 流程會貫穿整個開發流程。從本機環境開始,開發人員需要能夠在撰寫程式碼時,檢查程式碼是否有漏洞以及是否合規性。
利用整合式開發環境 (IDE) 外掛程式,SCA 工具可以在開發人員新增套件時通知他們有關漏洞的資訊。在程式碼提交到儲存庫之前,檢查和自動化的拉取請求註解應該告知開發人員任何正在引入的問題,並封鎖不符合需求的程式碼。
這應該可以延續到部署中,在部署中可以阻止具有預定等級漏洞或許可證類型的軟體。安全性團隊也應該對環境中元件的狀態有廣泛的可視性。

軟體組成分析將覆蓋範圍從程式碼到雲端,從基礎架構到應用程式層,以追蹤整個開發生命週期的弱點。
在所有領域中,開發人員都應該被告知套件可能會曝露的風險。需要根據關鍵性和基礎結構影響(例如,如果有漏洞的套件位於私有 VPC 中),對漏洞進行排序和優先排序(例如,使用 CVE 分數和漏洞報告後的時間)。許可證應按可允許但需要額外細節(如歸屬)的許可證和組織政策不允許的許可證(如 「copyleft」許可證)分類。
軟體組成分析的優點
對於團隊而言,了解其應用環境的勢態是非常重要的。透過及早並經常提供授權合規性和弱點回饋,軟體組成分析有助於減輕在應用程式中使用開放原始碼元件的一些風險。雖然 100% 的修補率不太可能達到,但了解風險並衡量修補弱點的成本,是改善安全勢態的一部分。
若要瞭解更多關於現代開發過程保護的資訊,請參閱「 什麼是 DevSecOps?