什麼是軟體組成分析 (SCA)?

軟體組成分析 (SCA) 可深入分析應用程式所使用的開放原始碼套件。SCA 可強調風險與合規性評估的依賴性中的弱點與授權,並可產生所有資源的軟體物料清單 (SBOM),與內部利害關係人及外部客戶分享。

 

什麼是軟體組成分析?

軟體組成分析可安全地讓開發人員利用開放原始碼套件,而不會讓組織暴露於不必要的弱點或法律與合規性問題。

開放原始碼元件在現代軟體開發中已經無孔不入,大部分現代應用程式的程式碼都是由這些套件所構成。此方法可讓開發人員更快速地進行開發,因為他們不需要重新製作可自由取得並經社群審核的程式碼。然而,這個過程也有其自身的風險。

 

使用開放原始碼元件有哪些風險?

在使用這些元件建立 容器映像 之前,開發人員需要瞭解因先前發現的套件漏洞而產生的安全性疑慮。他們也需要確保符合軟體使用授權的合規性需求。

社群成員經常發現並修補漏洞,但更新程式碼的重任則落在開發人員身上。當發現漏洞時,公開的漏洞攻擊遲早會被公開,甚至為低階的攻擊者打開利用此問題的大門。

事實上,軟體中絕大多數的弱點都不在直接或根套件中,而是在多層深度的相依性中,這使得問題更加嚴重。僅修正使用中的根套件,並不一定能確保使用中的函式庫安全。

此外,還有數十種開放原始碼授權條款,規則各異。舉例來說,有些元件需要歸屬,有些則要求使用該元件的應用程式的原始碼也必須公佈。要追蹤所有的執照及其規則可能很困難。

 

軟體組成分析找出開放原始碼套件的風險

SCA 工具可辨識應用程式中的所有開放原始碼套件,以及這些套件的所有已知漏洞。這些知識可以用來通知開發人員代碼中的問題,以便在問題被利用之前修復。良好的軟體組成分析流程會將目光從套件管理員延伸至 基礎架構即程式碼 (IaC) 和 Kubernetes 艙單,拉取影像以找出這些影像中的弱點。

SCA 工具可連結至 IaC 範本和無限的依賴性掃描,確保漏洞不會被偵測不到或無法解決。

SCA 工具可連結至 IaC 範本和無限的依賴性掃描,確保漏洞不會被偵測不到或無法解決。

軟體組成分析工具也可用於產生軟體物料清單 (SBOM 或 software BOM),其中包含應用程式使用的所有開放原始碼元件。SBOM 會列出套件版本的詳細資訊,以及每個使用中元件的已知弱點和授權。例如,對於 Python,BOM 將包括匯入語句中的所有套件,例如 httplib2,以及每個套件的版本號碼、已發現的漏洞和授權。

SCA 計畫應能讓工程、DevOps、安全性和合規性團隊等利害關係人 協同合作 。許多組織會使用這些程式來建立警示和/或阻止程式碼合併到程式碼儲存庫中,如果上述程式碼包含違反組織控制暴露的合規性規定的開放原始碼元件。為弱點和授權類型決定可接受的嚴重性等級時,應讓相關利害關係人參與。

 

如何在開發流程中使用 SCA

良好的 SCA 流程會貫穿整個開發流程。從本機環境開始,開發人員需要能夠在撰寫程式碼時,檢查程式碼是否有漏洞以及是否合規性。

利用整合式開發環境 (IDE) 外掛程式,SCA 工具可以在開發人員新增套件時通知他們有關漏洞的資訊。在程式碼提交到儲存庫之前,檢查和自動化的拉取請求註解應該告知開發人員任何正在引入的問題,並封鎖不符合需求的程式碼。

這應該可以延續到部署中,在部署中可以阻止具有預定等級漏洞或許可證類型的軟體。安全性團隊也應該對環境中元件的狀態有廣泛的可視性。

軟體組成分析將覆蓋範圍從程式碼到雲端,從基礎架構到應用程式層,以追蹤整個開發生命週期的弱點。

軟體組成分析將覆蓋範圍從程式碼到雲端,從基礎架構到應用程式層,以追蹤整個開發生命週期的弱點。

在所有領域中,開發人員都應該被告知套件可能會曝露的風險。需要根據關鍵性和基礎結構影響(例如,如果有漏洞的套件位於私有 VPC 中),對漏洞進行排序和優先排序(例如,使用 CVE 分數和漏洞報告後的時間)。許可證應按可允許但需要額外細節(如歸屬)的許可證和組織政策不允許的許可證(如 「copyleft」許可證)分類。

 

軟體組成分析的優點

對於團隊而言,了解其應用環境的勢態是非常重要的。透過及早並經常提供授權合規性和弱點回饋,軟體組成分析有助於減輕在應用程式中使用開放原始碼元件的一些風險。雖然 100% 的修補率不太可能達到,但了解風險並衡量修補弱點的成本,是改善安全勢態的一部分。

若要瞭解更多關於現代開發過程保護的資訊,請參閱「 什麼是 DevSecOps?

 

軟體組成分析常見問題

SCA 中的開放原始碼元件識別包括掃描軟體程式碼,以偵測所有使用的開放原始碼程式庫和框架。此程序會產生元件清單,包括其版本和來源。準確的識別對於評估安全漏洞、執照合規性和潛在的法律問題至關重要。Snyk 和 WhiteSource 等工具使用先進的演算法和廣泛的資料庫來準確辨識元件。透過瞭解使用中的開放原始碼元件,組織可以有效管理風險,並確保其軟體開發實作符合業界標準。
SCA 中的漏洞偵測包括掃描開放原始碼元件,以找出已知的安全漏洞。SCA 工具會將識別出的元件與弱點資料庫 (如國家弱點資料庫 (NVD)) 及專屬來源進行比較。此過程會突顯安全漏洞,讓開發人員能夠主動處理。漏洞偵測有助於預防開放原始碼程式庫的弱點被利用,降低資料外洩和網路攻擊的風險。Black Duck 和 Snyk 等工具可提供即時的弱點警示和詳細的修復指引,強化軟體專案的安全勢態。
SCA 中的許可證合規性可確保軟體專案中使用的開放原始碼元件遵守法律和監管需求。SCA 工具會分析與每個元件相關的授權,找出潛在的衝突和義務。此流程可協助組織避免法律風險,並確保遵守開放原始碼授權條款。許可證合規性也涉及追蹤和管理許可證義務,例如歸屬和發行需求。WhiteSource 和 FOSSA 等工具提供全面的授權合規性解決方案,讓組織能夠負責任地管理開放原始碼的使用,並降低法律風險。
SCA 中的相依性管理涉及追蹤和控制軟體專案所依賴的第三方函式庫和框架。SCA 工具可辨識直接和轉式的依賴關係,深入瞭解其安全性和合規性狀態。有效的相依性管理可確保元件為最新且不存在已知的弱點。這也涉及到自動更新和解決相依性衝突的問題。Snyk 和 Renovate 等工具提供先進的相依性管理功能,可無縫整合至開發作業流程,以提升軟體的安全性和可維護性。
SCA 中的風險評估可評估與開放原始碼元件相關的安全性、法律與作業風險。SCA 工具會分析元件弱點、授權條款和維護狀態,以提供全面的風險概況。此流程可協助組織依據已識別風險的嚴重性和影響,排定修復工作的優先順序。有效的風險評估可讓您做出明智的決策和主動的風險管理。Black Duck 和 WhiteSource 等工具可提供詳細的風險評估報告,讓開發團隊有能力解決關鍵問題,並提升軟體專案的整體安全性。
SCA 中的補救工作包括處理開放原始碼元件中已識別的弱點和合規性問題。SCA 工具提供修復安全漏洞的詳細指引,例如升級至安全版本或套用修補程式。補救措施還包括解決許可證衝突和履行法律義務。自動化的修復工作流程可簡化流程,快速有效地回應已識別的風險。Snyk 和 WhiteSource 等工具可提供整合式解決方案,協助開發團隊維持軟體的安全性與合規性,同時將作業中斷降至最低。
SCA 中的持續監控包括不斷地掃描和分析開放原始碼元件,以偵測新的弱點和合規性問題。SCA 工具提供即時警示和更新,確保開發團隊瞭解新出現的風險。不斷地監控能夠主動進行風險管理和及時修復,從而增強安全性。它還可以追蹤許可條款和監管需求的變更,從而支援合規性。Black Duck 和 Snyk 等工具提供持續監控功能,可無縫整合至 CI/CD 管道,為軟體專案提供不斷地保護。
在 SCA 中與 CI/CD 整合涉及將 SCA 工具嵌入持續整合與持續交付管道。此整合可在開發過程中自動掃描和分析開放原始碼元件,確保能及早偵測到漏洞和合規性問題。CI/CD 整合可將 SCA 納入開發工作流程,快速識別並修復風險,從而增強軟體安全性。Snyk 和 WhiteSource 等工具提供強大的 CI/CD 整合功能,支援安全且高效的軟體遞送,同時維持合規性以符合業界標準。
SCA 中的軟體物料清單 (SBOM) 是軟體專案中使用的所有開放原始碼元件的全面清單,包括其版本和相依性。SBOM 能夠詳細瞭解軟體的組成,從而進行有效的風險管理和合規性。SCA 工具可自動產生 SBOM,促進軟體開發的透明度與問責性。SBOM 支援漏洞偵測、許可證合規性和安全稽核。Black Duck 和 WhiteSource 等工具提供 SBOM 生成和管理功能,使組織有能力維護安全且合規的軟體生態系統。
上一頁 什麼是不安全的系統組態?
下一頁 什麼是中毒管道執行 (PPE)?