軟體供應鏈的攻擊向量是指他人可能蓄意或意外入侵軟體的各種方式。
軟體安全漏洞的風險包括憑證或機密資料外洩、資料損毀、安裝惡意軟體,以及應用程式中斷服務。這些問題會導致時間、金錢和顧客信任感流失。
威脅的進入點遍及整個軟體生命週期,可能來自貴機構內外。
圖例包含兩組威脅:
- 字母 A 至 H 代表軟體供應鏈中的攻擊向量,在軟體構件供應鏈級別 (SLSA) 架構中稱為「威脅」。
- 數字 1 到 4 代表 SLSA 架構未直接說明的其他攻擊向量。
Google Cloud 提供模組化功能和工具,並納入最佳做法,可同時防範這兩類威脅。
本文的各個小節會說明來源、建構、部署和依附元件的相關威脅。
來源威脅
這些威脅會影響原始碼的完整性。
1:撰寫不安全的程式碼。如果缺乏安全的程式設計做法,可能會導致編寫的程式碼無意間包含安全漏洞。不安全的開發人員工作站也可能植入惡意或不安全的程式碼。因應措施包括:
- 為開發人員工作站設定政策。 Cloud Workstations 提供全代管的預先設定工作站,您可以自訂工作站,使其符合自身需求。
- 在當地掃描 QR code。Cloud Code 來源保護 (私人搶先體驗版) 提供即時安全性意見回饋,包括依附元件的安全性漏洞和授權資訊。開發人員也可以使用 On-Demand Scanning API,掃描容器映像檔的 OS 和語言套件安全漏洞。
- 加強程式碼安全性的做法教育訓練。
A:將錯誤程式碼提交到原始碼存放區。這不僅包括惡意程式碼,也包括無意間導入攻擊漏洞的程式碼,例如跨網站指令碼。因應措施包括:
- 要求人工審查原始碼變更。
- 使用與 IDE 和來源控制系統整合的程式碼掃描和 Lint 工具。
B:入侵原始碼控管系統。限制對來源控制系統和建構管道中其他系統的存取權,並使用多重驗證,有助於降低這項風險。
評估來源完整性時,請一併檢查用於建構及部署軟體的支援指令碼和設定。請將這些檔案納入原始碼管控系統和程式碼審查程序,以降低檔案中漏洞造成的風險。
如要進一步瞭解如何保護來源,請參閱「保護來源」。
建構威脅
這些威脅會在您建構或封裝軟體時危害軟體,或誘騙軟體消費者使用不良版本。
- C:建構時使用的來源並非來自可信任的來源控制系統。
有助於降低這項風險的緩解措施包括:
- 使用 Cloud Build 等建構服務產生出處資訊,以便驗證建構作業是否使用可信來源。
- 將 CI/CD 基礎架構放在網路 perimeter 中,防止建構作業中的資料遭竊。如要為服務設定存取權,請使用 VPC Service Controls。 Google Cloud
- 在 Artifact Registry 等私有構件儲存空間中,儲存及使用您需要的開放原始碼依附元件的信任副本。
- D:入侵建構系統。有助於降低這項風險的緩解措施包括:
- 遵循最低權限原則,限制只有必要人員才能直接存取建構系統。在 Google Cloud 中,您可以授予適當的預先定義角色,也可以建立自訂角色。
- 使用 Cloud Build 等代管建構服務。 Cloud Build 會為每個建構設定 VM 環境,並在建構後毀損該環境,藉此執行暫時性建構。
- 將 CI/CD 基礎架構放在網路 perimeter 中,防止建構作業中的資料遭竊。如要為服務設定存取權,請使用 VPC Service Controls。 Google Cloud
- F:封裝及發布在官方程序外建構的軟體。建構系統會產生並簽署建構來源資訊,讓您驗證軟體是否由受信任的建構系統建構。
- G:入侵存放軟體的存放區,供內部或外部使用者使用。有助於降低這項風險的緩解措施包括:
- 在 Artifact Registry 等私有構件儲存空間中,儲存及使用您需要的開放原始碼依附元件的信任副本。
- 驗證建構和來源出處。
- 將上傳權限限制在專屬的非人為帳戶和存放區管理員。在 Google Cloud,服務帳戶會代表服務和應用程式執行作業。
部署和執行階段威脅
H:指定版本範圍或未永久附加至特定建構版本的標記來解決依附元件問題,可能會導致下列問題:
- 建構作業無法重現,因為建構作業第一次使用的依附元件,可能與日後執行相同建構作業時使用的依附元件不同。
- 依附元件可能會解析為遭入侵的版本,或是含有會導致軟體中斷的變更。惡意行為人可能會利用這項不確定性,導致建構作業選擇他們的套件版本,而非您打算使用的版本。您可以採取多項依附元件最佳做法,降低依附元件混淆風險。
2:破壞部署程序。如果您使用持續部署程序,一旦該程序遭到入侵,您提供給使用者的軟體可能會出現不必要的變更。您可以限制部署服務的存取權,並在預先發布環境中測試變更,藉此降低風險。Cloud Deploy 可協助您管理持續推送軟體更新程序,以及環境之間的升級作業。
3:部署遭入侵或不符規定的軟體。強制執行部署政策有助於降低這項風險。您可以使用二進位授權,驗證容器映像檔是否符合政策條件,並禁止部署來自不受信任來源的容器映像檔。
4:執行中的軟體存在安全漏洞和設定錯誤。
- 我們經常會發現新的安全漏洞,因此新的發現可能會改變正式版應用程式的安全風險等級。
- 部分設定會提高未經授權存取的風險,例如以超級使用者身分執行,或允許在執行容器時提權。
GKE 安全防護機制狀態資訊主頁會顯示執行中工作負載的安全漏洞和設定問題相關資訊。
在 Cloud Run 中,您也可以查看已部署修訂版本的安全性深入分析,包括您部署的容器映像檔中已知的安全漏洞。
請參閱「保護建構作業」一文,進一步瞭解如何保護來源,並參閱「保護部署作業」一文,瞭解如何保護部署作業。
依附元件威脅
依附元件包括建構作業中的直接依附元件,以及所有遞移依附元件,也就是直接依附元件下游的遞迴依附元件樹狀結構。
在圖表中,E 表示在建構作業中使用錯誤依附元件。不良的依附元件可能包括:
- 應用程式所依附的任何軟體,包括您在內部開發的元件、商業第三方軟體、開放原始碼軟體。
- 源自其他攻擊向量的安全漏洞。例如:
- 攻擊者取得來源控制系統的存取權,並修改專案使用的依附元件版本。
- 您的建構版本包含貴機構其他團隊開發的元件。他們直接從本機開發環境建構及發布元件,並在僅供本機測試和偵錯的程式庫中,意外導入安全性漏洞。
- 從公開存放區中刻意移除開放原始碼依附元件。 如果取用管道直接從公開存放區擷取依附元件,移除作業可能會導致管道中斷。
如要瞭解如何降低風險,請參閱依附元件的最佳做法。
減輕威脅
供應鏈的整體完整性取決於最脆弱的部分。忽略攻擊向量會增加供應鏈該部分的攻擊風險。
但您不必一次變更所有內容,累積行為效應 (又稱瑞士乳酪模型) 適用於軟體供應鏈安全。您實施的每項緩解措施都能降低風險,而結合供應鏈中的緩解措施,則可提高防護力,抵禦不同類型的攻擊。
- 評估安全防護機制:使用架構和工具評估貴機構偵測、回應及修復威脅的能力。
- 瞭解保護軟體供應鏈的最佳做法,以及 Google Cloud 支援這些做法的產品。
- 在開發、建構和部署程序中加入 Google Cloud 安全防護功能,提升軟體供應鏈的安全性。您可以根據優先順序和現有基礎架構,逐步導入服務。