2026 年每日通報的 CVE 數量比前一年多 131%。

供應鏈

什麼是 SLSA?

SLSA(發音同「salsa」)是 Supply-chain Levels for Software Artifacts 的縮寫。它是一套資安框架,用來證明一套軟體確實依照製作者所說的方式、從其宣稱的原始碼建置而成,且過程中未遭竄改。其等級為製作者提供可依循的路徑,也讓使用者有依據可以提出要求。

更新日期

SLSA 要解決什麼問題?

即使您審查過每一行原始碼,交付出去的仍可能是另一回事,因為使用者執行的是建置的產出。 如果建置遭到入侵,就像 SolarWinds 事件那樣,乾淨的原始碼也會產出被下毒的版本。SLSA 聚焦的正是這個缺口: 任何人能否驗證這個建置產物確實來自這份原始碼、經過這個流程?

SLSA 等級

SLSA 將其要求分成數個軌道(track)。 目前的 1.2 版包含 Build 軌道與 Source 軌道。 Build 軌道分為四個等級。

等級 名稱 要求 帶來的保障
Build L0 無任何保證 無 L0 即未採用 SLSA
Build L1 具備來源證明 一致的建置流程,以及由建置平台產生並提供給使用者的來源證明 有助於防止失誤,但很容易被繞過或偽造
Build L2 託管建置平台 建置在託管平台上執行,由平台產生並簽署來源證明,並由使用者加以驗證 偽造來源證明必須發動明確的攻擊
Build L3 強化的建置 各次執行彼此隔離,且使用者定義的建置步驟無法觸及簽署用的機密 偽造來源證明必須利用漏洞,超出大多數攻擊者的能力

等級並不是必須追求最高分的評等。每個等級各自防範特定威脅,請選擇符合您風險的等級。 使用託管 CI 服務的開源維護者,往往不需太多工夫就能達到 L2。

什麼是來源證明?

來源證明(provenance)是記錄建置產物如何產生的紀錄。在 SLSA 中,它說明了是哪個平台、從哪份原始碼、 經過哪個流程、以哪些頂層輸入建置而成。L2 以上的來源證明會經過簽署,讓使用者可以確認它來自建置平台且未遭竄改。

您可以把 SBOM 想成食材清單,而來源證明則是這道菜在哪裡、如何烹調。 兩者回答不同的問題,搭配使用效果更好:SBOM 列出裡面有什麼,來源證明則說明建置產物從何而來。

如何導入 SLSA

  1. 在 CI 中建置,且每次都用相同方式。不要再從筆電發布版本。這就是達到 L1 的大部分工作。
  2. 產生來源證明。在 GitHub 上,artifact attestations 可產生經簽署的來源證明。請參閱 attestations 如何在 GitHub Actions 中搭配 SBOM 運作。
  3. 在關鍵環節進行驗證。沒有人檢查的簽署來源證明,保護不了任何人。請在部署步驟或准入控制器(admission controller)中加入驗證。
  4. 強化建置。隔離各次執行,並讓簽署金鑰遠離建置步驟。請參閱 執行器安全性比較。
  5. 要求您的相依套件。優先選用會發布來源證明的套件,npm 等登錄庫現已支援。

SLSA 未涵蓋的範圍

  • 漏洞。建置得再完美的建置產物,也可能含有缺陷。SLSA 並不說明程式碼是否安全。
  • 惡意原始碼。如果攻擊者把程式碼 commit 進儲存庫,來源證明也會忠實記錄該程式碼的建置。 Source 軌道處理了其中一部分。
  • 建置拉進了什麼。來源證明只列出頂層輸入。Build 軌道並未要求完整的相依套件清單,而這正是 SBOM 的用途。
  • 受信任的內部人員。xz 後門是透過一位受信任的維護者植入的,單靠 SLSA 無法阻止。

SLSA 與其他框架

SLSA 深入探討建置完整性。NIST SSDF 的範圍則廣得多:它涵蓋整體的安全開發, 其中包括一項保護並封存版本的實務,而 SLSA 來源證明正好能支援這項實務。SLSA 是 OpenSSF 的專案,許多團隊會同時採用兩者。 若想了解全貌,請參閱 什麼是軟體供應鏈安全。

CRACI 的定位

CRACI 不會產生經簽署的來源證明,也不宣稱符合任何 SLSA 等級;若您需要,請使用 GitHub artifact attestations 或類似服務。 CRACI 補上的是 SLSA 未涵蓋的部分:完整記錄每個 GitHub Actions 作業拉進了什麼。每個作業都在各自隔離的虛擬機器中執行, 它擷取的每個套件都會寫入 SBOM,對外連線政策則會封鎖建置不需要的連線。請參閱 建置時 SBOM 產生。

SLSA 常見問題

SLSA 代表什麼?

Supply-chain Levels for Software Artifacts,發音同「salsa」。

SLSA 有哪些等級?

Build 軌道共有四個等級:L0,無任何保證;L1,具備來源證明;L2,由會簽署來源證明的託管建置平台執行;L3,強化的建置,各次執行彼此隔離且簽署機密受到保護。1.2 版另外新增了 Source 軌道。

什麼是 SLSA 來源證明?

記錄建置產物如何建置的紀錄:哪個平台、從哪份原始碼、經過哪個流程、以哪些頂層輸入。在 Build L2 以上會經過簽署,讓使用者可以驗證。

SLSA 與 SBOM 有什麼不同?

SBOM 列出一套軟體裡面有什麼,SLSA 來源證明則描述它是如何、在哪裡建置的。一般而言兩者都需要。

SLSA 是強制性的嗎?

不是。它是 OpenSSF 社群推出的自願性框架。部分客戶與組織可能會要求達到某個等級,但它並不是法律。

我應該以哪個 SLSA 等級為目標?

先在 CI 中建置並產生來源證明,達到 Build L1;接著在託管平台上邁向 L2,許多團隊都能很快達到。L3 適合許多人仰賴或風險較高的版本。

掌握您的建置拉進了什麼

來源證明說明建置產物從何而來。針對每個 GitHub Actions 作業,看清其中包含了什麼。

預約示範