比較
CRACI 與 Black Duck 比較
無論開源程式碼藏在哪裡,Black Duck 都能找出來:manifest、複製來的程式碼片段,以及編譯後的二進位檔。CRACI 則記錄您的建置在執行時實際擷取了什麼。以下說明 Black Duck 的每種方法如何運作,以及建置紀錄能為它補上什麼。
更新日期
簡短的答案
Black Duck 是一套範圍廣泛的應用程式安全產品組合,以其軟體組成分析(SCA)產品為核心,周邊還有靜態分析、二進位分析、模糊測試與態勢管理。CRACI 則是相容於 GitHub Actions 的 CI 執行器,會記錄建置拉入的每個外部相依套件,並依據這份紀錄產生 SBOM、來源證明與法規遵循佐證資料。Black Duck 是掃描工具,而且相當徹底。CRACI 則是記錄工具。對於在 GitHub Actions 上執行的建置,兩者在 SBOM 產生與相依套件監控上有所重疊。在程式碼片段比對、二進位分析或自有程式碼的靜態分析上則沒有重疊,因為 CRACI 不做這些事。
一覽比較
| 功能 | CRACI | Black Duck |
|---|---|---|
| 在建置執行時觀察相依套件 | 執行器上能辨識套件的代理伺服器 | 檢查 manifest、檔案、二進位檔與 BitBake 的任務圖 |
| 附完整性狀態的建置時 SBOM | 五種狀態,每個作業與每個快取皆有 | 從掃描結果產生 SPDX 與 CycloneDX,可使用範本 |
| 建置作業的對外連線政策 | 預設拒絕或允許,失效即封鎖 | 不執行您的建置 |
| 監控已出貨的軟體 | 持續重新評估受監控的 SBOM | 在部署前後監控應用程式 |
| Yocto / BitBake | 執行 BitBake 建置並記錄每次擷取 | BitBake 偵測器讀取 recipe 相依關係圖 |
| 二進位檔與韌體分析 | Black Duck Binary Analysis,不需要原始碼 | |
| 程式碼片段與簽章掃描 | 找出經修改或未宣告的開源程式碼 | |
| 針對自有程式碼的 SAST | Coverity,22 種程式語言 | |
| 授權合規 | 授權政策,包括依授權封鎖建置 | KnowledgeBase 追蹤 2,750 種以上的授權 |
| 執行您的 CI 作業 | 作業在 CRACI 執行器上執行 | 接入您現有的 CI |
| 支援的 CI 系統 | 目前支援 GitHub Actions;GitLab CI 與 Jenkins 已列入產品藍圖 | Jenkins、GitLab、Azure DevOps 等眾多系統 |
| 價格 | 每 vCPU 分鐘 $0.002(2 vCPU 為 $0.004),按秒計量;無月費,也不按 SBOM 收費 | 依報價計費,提供標準套裝或單項選購。截至 2026 年 11 月未公開價格。 |
- 支援
- 部分支援
- 不支援
- 已列入產品藍圖
Black Duck 的強項
找出無人宣告的開源程式碼。Black Duck SCA 結合了套件管理工具掃描、簽章掃描、針對部分或經修改程式碼的片段偵測,以及二進位分析。當程式碼被複製進儲存庫,或在沒有 manifest 的情況下被內嵌(vendored)時,這一點就很重要。發現結果以 Black Duck Security Advisories 為依據,附有嚴重性、優先順序與可達性指標,平台也會標示惡意套件。
授權。Black Duck 能識別已宣告與未宣告的授權、完整授權條文與著作權資料,其 KnowledgeBase 追蹤超過 2,750 種開源授權。CRACI 則在 SBOM 匯出中包含已宣告的授權中繼資料,並強制執行授權政策。
二進位檔與韌體。Black Duck Binary Analysis 無需存取原始碼,就能檢查執行檔、函式庫、容器與韌體。如果您收到第三方的二進位檔,或需要檢查完成的韌體映像檔,這是 CRACI 沒有涵蓋的領域。
不只是 SCA。Coverity 提供涵蓋 22 種程式語言的靜態分析,Defensics 負責模糊測試,Software Risk Manager 則作為應用程式安全態勢管理(ASPM)系統彙整發現結果。Black Duck 可與 Jenkins、GitLab、Azure DevOps、Bitbucket Pipelines、CircleCI、TeamCity 及眾多其他 CI 系統整合。其 Bridge CLI 可以開啟 Fix PR,升級有漏洞的直接相依套件。
Black Duck 較強的地方:
- 對第三方韌體以及其他非您自行建置之軟體的二進位分析。
- 程式碼片段與授權的深度:您自己檔案中的開源程式碼部分複製、未宣告的授權、完整授權條文與著作權資料,依據涵蓋超過 2,750 種授權的 KnowledgeBase。
- 成熟度與 CI 涵蓋範圍:Jenkins、GitLab、Azure DevOps 等眾多系統。
- 更廣泛的產品組合:透過 Coverity 提供 SAST、透過 Defensics 提供模糊測試,以及透過 Software Risk Manager 提供應用程式安全態勢管理。
- 可達性指標與惡意套件偵測,兩者都列在其 SCA 產品頁面上。
Black Duck 如何找出元件,以及建置紀錄能補上什麼
Black Duck 使用四種方式識別開源程式碼,另外還有一個針對 Yocto 建置的偵測器。每一種方式都擅長檢查其對象,而每一種都是依據建置之後或建置之外存在的東西運作:manifest、檔案樹、二進位檔、BitBake 的任務圖。建置記錄工具則提供另一種佐證資料:發布版本的建置實際擷取了什麼,並標示完整性。
套件管理工具偵測器(Black Duck Detect)
運作方式。Black Duck Detect 會執行偵測器,從專案的套件管理工具中找出並擷取相依套件,並透過各套件管理工具推導出相依階層。Detect 也會對專案執行 Black Duck 簽章掃描器。預設情況下,每個 Detect 工具都可以執行,實際執行哪些則由您的設定決定。
擅長之處。跨眾多生態系與 CI 系統的已宣告直接與遞移相依套件,而且不需要更改建置。
建置紀錄能補上什麼。已宣告的相依樹是套件管理工具聲稱它將安裝的內容。任何 manifest 都沒有列出的擷取,例如由安裝 hook 下載的程式碼、在建置時下載內容的建置腳本,以及基礎映像檔的 layer,在設計上就不在其中。CRACI 會記錄這些內容,而每個作業的完整性狀態會標示它無法看到的部分。
簽章掃描
運作方式。簽章掃描器會逐一走訪檔案、目錄與封存檔,並將其簽章與 Black Duck KnowledgeBase 中開源元件的簽章進行比對。這些簽章是檔案系統中繼資料與檔案內容的單向 MD5 或 SHA-1 雜湊值。掃描會傳送檔案路徑、檔案大小與簽章,而 Black Duck 表示不會有任何原始碼或二進位程式碼被傳送到地端之外。它會對經修改的開源封存檔與目錄產生模糊比對結果。個別檔案比對為選用功能:在 2020.2.0 版之前它是預設啟用的,後來 Black Duck 因為它產生相當多誤判而將其預設關閉。
擅長之處。在沒有 manifest 的情況下被複製、內嵌或重新命名的開源程式碼,不限程式語言。
建置紀錄能補上什麼。簽章掃描看到的是其執行位置上存在的檔案。建置擷取、使用後又丟棄的內容,已經不在那裡可供雜湊。兩者回答的是不同的問題:「這個檔案樹中有什麼程式碼」以及「這次建置拉入了什麼」。對於內嵌的程式碼,簽章掃描才是正確的工具。
程式碼片段比對
運作方式。這是簽章掃描之後的第二個階段。未能比對成功的檔案,以及位於未比對成功之目錄與封存檔中的檔案,會進行片段掃描:Black Duck 計算 codeprint(一種單向雜湊),並尋找與 KnowledgeBase 檔案中程式碼相符的程式碼片段。
擅長之處。您自己檔案中的開源程式碼部分複製,以及它們所附帶的授權義務。
建置紀錄能補上什麼。沒有。CRACI 不會檢視您檔案的內容。
Black Duck Binary Analysis
運作方式。即使您無法存取程式碼,Black Duck Binary Analysis 也能檢查編譯進執行檔、函式庫、容器與韌體中的開源程式碼。它結合靜態分析與字串分析,並與 KnowledgeBase 進行模糊比對,回報元件、漏洞與授權。它也會標示電子郵件地址與授權權杖等敏感資訊,以及要求過多權限的行動應用程式。
擅長之處。非您自行建置的軟體:供應商韌體、外購模組、他人完成的映像檔。這是 CRACI 沒有涵蓋的領域。如果您沒有建置過程,分析二進位檔就是了解其內部的方法。其他韌體工具的比較,請參閱 CRACI 與 Finite State 比較以及 CRACI 與 ONEKEY 比較。
建置紀錄能補上什麼。對於您在 CRACI 上自行建置的軟體,它提供的是投入內容的紀錄,而不是從產出推斷的結果。對編譯後程式碼的產出分析必須推斷其投入內容;而產出它的建置紀錄則不需要推斷。兩者是關於同一個產品的不同佐證資料。
Yocto 與 BitBake(Detect 的 BitBake 偵測器)
運作方式。Detect 的 BitBake 偵測器會載入建置環境腳本(預設為
oe-init-build-env),執行 bitbake --environment 以找出目標機器架構與授權目錄,並執行
bitbake-layers show-recipes 將每個 recipe 對應到其 layer。對於 detect.bitbake.package.names
中列出的每個目標,它會執行 bitbake -g 以產生
task-depends.dot,並從該檔案讀取 recipe 及其相依關係。為了排除建置用的相依套件,Detect 會讀取映像檔的 license.manifest,並保留安裝在映像檔中的內容。
結果是一份 recipe 層級的相依關係圖,再與 KnowledgeBase 進行比對。
擅長之處。無需更改建置,就能快速取得映像檔在 recipe 層級的全貌,並可選擇排除僅用於建置的 recipe。
建置紀錄能補上什麼。這份關係圖是根據 BitBake 的任務圖建立的,因此列出的是 recipe。建置所使用但不屬於 recipe 的任何東西,在結構上就不在這份關係圖中:安裝在建置主機上的套件、工作流程中的
GitHub Actions、腳本所擷取的工具。CRACI 會執行 BitBake 建置,並同樣記錄這些擷取。實際映像檔中的情況,請參閱
CRACI 上的 Yocto 建置中公開的並列比較。該比較的對象是 Yocto 自己的
create-spdx SBOM,而不是 Black Duck。
完整性
掃描回報的是它比對到的內容。CRACI 則以五種狀態標示每個作業的完整性:Complete、Complete with connections、Incomplete、Unavailable 與 Not recorded。紀錄中的缺口會清楚呈現,而不是默不作聲。
各方法並列比較
| 方法 | 讀取對象 | 時機 | 擅長之處 | 建置紀錄能補上什麼 |
|---|---|---|---|---|
| 套件管理工具偵測器 | 專案的套件管理工具 | 在 Detect 執行的位置,依據專案的檔案與工具 | 已宣告的直接與遞移相依套件 | 任何 manifest 都沒有列出的擷取,並附完整性狀態 |
| 簽章掃描 | 檔案、目錄與封存檔 | 在掃描執行的位置,針對現有的檔案 | 被複製、內嵌或重新命名的開源程式碼 | 建置擷取後又丟棄的內容 |
| 程式碼片段比對 | 未比對成功的檔案,以 codeprint 形式 | 在簽章掃描之後 | 您檔案中的開源程式碼部分複製 | 沒有:CRACI 不會檢視您檔案的內容 |
| Black Duck Binary Analysis | 執行檔、函式庫、容器、韌體 | 建置之後,針對產出 | 非您自行建置的軟體 | 對於您自己的建置,提供投入內容的紀錄 |
| BitBake 偵測器 | task-depends.dot、recipe 與 layer |
在建置環境中,使用 BitBake 自己的指令 | 映像檔在 recipe 層級的全貌 | 主機套件、GitHub Actions,以及在 recipe 之外擷取的工具 |
| CRACI 建置記錄 | 作業前往套件來源的流量 | 建置期間 | 發布版本的建置實際擷取了什麼,包括快取與隱藏相依性 | 不適用 |
CRACI 的不同之處
它親眼見證建置
上述每種技術都是在檢查某樣東西:manifest、原始碼樹、二進位檔。它們都看不到執行中的建置,包括那些形塑產出、卻不一定在產出中看得到的工具鏈、安裝腳本、基礎映像檔、版本下載與快取套件。CRACI 本身就是執行器,因此能直接看到這些活動。能辨識套件的代理伺服器會觀察前往 npm、PyPI、RubyGems、Composer、Cargo、Go、Nix、OCI、apt、apk 與 Git 來源的套件來源流量,以及下載預設組合。相依套件的佐證資料會隨 CI 快取一起保存。
每份 SBOM 都會以五種狀態標示其完整性,每個作業與每個快取皆有:Complete、Complete with connections、 Incomplete、Unavailable 與 Not recorded。並包含 CycloneDX 與 SPDX 匯出。
它掌控建置網路
由於作業由 CRACI 執行,您可以為它設定對外連線政策:預設拒絕或預設允許、24 個內建的軟體來源預設組合,以及可為 npm、PyPI、apt、apk、Go proxy、Nix、Cargo、OCI registry 與 Git 設定具型別的自訂來源。政策會在作業開始前驗證並且失效即封鎖,而當作業違反政策時,CRACI 可以向您發出警示。掃描工具回報的是已經進來的東西。對外連線政策則限制什麼東西能進來。
來源證明與監控
API 會回傳 SBOM、網路追蹤與來源證明。CRACI 會持續重新評估受監控的 SBOM 是否有新漏洞。
哪些內容部署在哪裡的資產清冊
CRACI 的資產清冊檢視可在全球範圍內精確顯示哪些軟體版本部署到了哪些產品。當新漏洞出現時,您可以直接看到哪些產品執行受影響的版本,而不必從版本說明與試算表中拼湊答案。
Black Duck 的 SBOM 與 CRACI 的 SBOM
Black Duck SCA 從其物料清單匯出 SBOM,支援 SPDX 2.2、2.3 與 3.0,以及 CycloneDX 1.3 至 1.6,也可以匯入 SBOM 檔案。CRACI 則從建置紀錄匯出 CycloneDX 與 SPDX,並附上在其元件中發現的漏洞,其 API 會回傳 SBOM、網路追蹤與來源證明資料。差別在於清單的來源,而不是格式:Black Duck 的清單來自其掃描所比對到的內容,CRACI 的清單則來自建置所擷取的內容。
哪一個適合您,以及何時兩者並用
- 以 Yocto 建置的嵌入式產品。CRACI 在其執行器上執行 BitBake 建置,最高 32 vCPU 與 96 GB,並記錄它所擷取的內容,搭配可補足 BitBake 自身網路控制的對外連線政策。Black Duck 的 BitBake 偵測器會從任務圖對應出映像檔的 recipe,而 Black Duck Binary Analysis 則可以檢查完成的映像檔。請參閱 CRACI 上的 Yocto 建置與 Yocto 指南。
- 長期累積了大量複製或內嵌開源程式碼的程式碼庫。程式碼片段與簽章掃描是 Black Duck 的強項。請繼續使用。
- 使用 GitHub Actions、需要發布佐證資料的團隊。CRACI 會記錄每次建置,保存其 SBOM 與來源證明資料,並以 CycloneDX 或 SPDX 格式匯出 SBOM。
- 在 Jenkins、GitLab 或 Azure DevOps 上的管線。目前 Black Duck 較為適合。CRACI 目前僅支援 GitHub Actions,GitLab CI 與 Jenkins 已列入產品藍圖,因此這些管線需要先移轉。
因應 Cyber Resilience Act
Black Duck 發布了一系列 CRA 頁面,涵蓋各項期限、24 小時漏洞通報要求,以及為何它認為單靠 SCA 不足以因應 Cyber Resilience Act(CRA)。它將其產品組合對應到這項法規:以 Black Duck SCA 依據 EUVD 與 NVD 資料分析程式碼庫並產生 SBOM、Coverity 於 2026 年 7 月宣布提供與 CRA 對齊的檢查器選項、以 Defensics 進行穩健性測試,以及以 Software Risk Manager 作為政策關卡。它的論點是,這項法規需要多層防護:以 SCA 處理元件,再加上針對您自有程式碼與服務的靜態與動態測試。
CRACI 補上的是來自建置本身的佐證資料:每個發布版本包含了什麼、這份紀錄有多完整,以及之後的持續監控,並提供可匯出為 CycloneDX 或 SPDX 的 SBOM。它能將企業在更廣泛的 CRA 法規遵循流程中所需的軟體供應鏈可視性與佐證資料,自動化其中相當大的一部分。進一步了解 CRA 法規遵循與 工業物聯網。
在 Black Duck 之外加入 CRACI
CRACI 取代的是執行器,而不是 GitHub Actions。在工作流程中將 runs-on 改為 craci,執行紀錄依然會顯示在 GitHub
介面中。Black Duck 的掃描步驟則保留在工作流程中。挑選一個產品發布版本,比較 CRACI 的建置時 SBOM 與您的 Black Duck 物料清單,並檢視只有其中一方找到的元件。
CRACI 目前支援 GitHub Actions。GitLab CI、Jenkins 及其他 CI 系統已列入產品藍圖。進一步了解 建置時 SBOM 產生與 CRA 佐證資料。
Black Duck 與 CRACI:常見問題
各自如何找出元件,以及兩者如何搭配
Black Duck 如何找出開源程式碼?
四種方式,另外還有一個針對 Yocto 的 BitBake 偵測器。Black Duck Detect 讀取專案的套件管理工具以推導相依樹。簽章掃描器將檔案、目錄與封存檔的雜湊值與 KnowledgeBase 比對。程式碼片段比對會在未比對成功的檔案中,找出開源程式碼的部分複製。Black Duck Binary Analysis 則檢查編譯後的執行檔、函式庫、容器與韌體。
什麼是 Black Duck Binary Analysis?
這是 Black Duck 的一項產品,無需存取原始碼,就能檢查編譯進執行檔、函式庫、容器與韌體中的開源程式碼。它結合靜態分析與字串分析,並與 KnowledgeBase 進行模糊比對,回報元件、漏洞與授權,以及授權權杖等敏感資訊。它適用於非您自行建置的軟體,例如供應商韌體。
Black Duck 支援 Yocto 嗎?
支援。Detect 的 BitBake 偵測器會執行 BitBake 自己的指令,包括對每個目標映像檔執行 bitbake -g,從 task-depends.dot 讀取 recipe 及其相依關係,並可利用映像檔的 license.manifest 排除建置用的相依套件。結果是一份 recipe 層級的相依關係圖,再與 KnowledgeBase 進行比對。
CRACI 能取代 Black Duck 嗎?
不能。CRACI 不做程式碼片段、二進位或靜態分析,因此這些仍由 Black Duck 負責。對於在 CRACI 上執行的建置,它可以接手 SBOM 產生與相依套件監控:它會記錄每次 GitHub Actions 建置擷取的內容,以 CycloneDX 或 SPDX 格式匯出 SBOM,並持續重新評估是否有新漏洞。
我可以兩者並用嗎?
可以。CRACI 取代的是執行器,而不是 GitHub Actions,因此 Black Duck 的掃描步驟會在 CRACI 執行器上的同一個工作流程中繼續執行。針對一個發布版本,比較 CRACI 的建置時 SBOM 與您的 Black Duck 物料清單,並檢視只有其中一方找到的元件。
Black Duck 與 Snyk 有何不同?
兩者都是軟體組成分析工具,但找出開源程式碼的方式不同。Snyk Open Source 從 manifest 與鎖定檔建立相依樹,並在掃描目錄中包含完整相依套件原始碼時,對未受管理的 C 與 C++ 程式碼比對檔案簽章。它以開發人員為中心,運作於 IDE、CLI、儲存庫與 CI 中,並與 Snyk Code、Snyk Container 和 Snyk IaC 並列。Black Duck 則另外提供任意檔案的簽章掃描、針對部分複製的程式碼片段比對,以及無需原始碼即可分析編譯後軟體與韌體的 Binary Analysis。Snyk 公開了 Free 方案與每月 $25 起的 Team 方案;Black Duck 則依報價計費。兩者都不會執行您的建置。CRACI 會執行,並記錄每次 GitHub Actions 建置擷取的內容,因此可以與兩者任一搭配使用。