聯系電話:
+886 2 77182788
創提部落格
希望我們能與您分享和探討成長中的點點滴滴
FOSSID如何快速且準確找到專案中引用第三方原始碼
創提科技
2026/06/15
分享到
轉載自FossID
FossID 的 code snippet 機制本質上是「以指紋比對為核心的局部原始碼匹配引擎」,可以在你的專有程式碼裡找出被複製、改寫或 AI 產生的開源片段,並連回其來源組件、授權與 CVE。
FOSSID 的 SCA 工具不同於僅依賴 manifest 或 package manager 的傳統方法,而是透過對整個 codebase 進行內容層級(content-based)的掃描,並結合程式碼指紋比對技術,分析包含完整檔案以及任意細粒度的程式碼片段(code snippets)。
其核心是一個持續維護的大規模開源知識庫(Knowledge Base, KB)。FOSSID 的開源軟體(OSS)知識庫由專門的研究團隊維護和管理,涵蓋來自數十個公共來源和用戶貢獻網站的超過 3 Petabytes 的軟體元件。整體規模包含超過 2 億個開源元件,其原始碼均已預先進行標準化處理、指紋化(fingerprinting)與索引,以支援高效率且高精確度的比對分析。
該知識庫的來源廣泛,包含主流開源程式碼託管平台與套件生態系,例如 GitHub、Maven、Google Source、GNU 專案、Linux Kernel、PyPI 等,並涵蓋多種語言與開發生態中的 code forges。
此外,FOSSID 亦會納入來自使用者貢獻平台(如 Stack Overflow)的程式碼片段。由於實務開發中大量被複用的 code snippet 來源於此類 Q&A 平台,這些片段同樣經過指紋化處理並整合進知識庫,以提升對「非套件來源」程式碼(例如 copy-paste 範例)的偵測能力與覆蓋率,進一步降低 snippet blind spot。
FossID 對你掃描的程式碼切分成較小的 code blocks,為這些 block 建立 指紋(digital fingerprint),然後跟知識庫中的指紋做比對。
幾個關鍵特性:
● 最小粒度:可以精確到「只要 6 行 code」就能做 snippet 檢出,因此即便只有一小段 utility 函式被拷貝也有機會被抓到。
● 非單純字串比對:它會做語法/結構層級的正規化與編碼(例如忽略空白、縮排、重新命名變數、程式碼重新排版等),以提升對格式變形與簡單重構的韌性。
● 片段匹配:不要求整個檔案一致,可以在單一檔案中找出多個來源不同的 snippet,並連結回多個開源專案。
Snippet Engine 可以偵測
● 完全拷貝的 snippet(verbatim copy)。
● 只改過格式/縮排/命名但邏輯一致的 snippet。
● 有部分重構、插入/刪減少量程式碼的 snippet,只要結構與核心片段仍足以形成穩定指紋。
這種韌性主要來自於:
● 先對程式碼做 lexical / syntactic 正規化,減少跟格式、命名相關的差異。
● 匹配時不是要求整段完全一致,而是找「足夠多」的連續或相近 token/block fingerprint 命中,並做 scoring 判斷是否達到 snippet 門檻。
FossID 提供可調整的靈敏度設定,讓你在「抓更多潛在 snippet」與「減少 false positive」之間取得平衡。
實務上可以透過設定:
● 最小 snippet 長度(如 token/行數門檻)。
● 匹配相似度分數閾值(例如要求更高的 fingerprint 重疊率)。
● 忽略特定類型的常見 boilerplate / template / generated code。
官方在 CI/CD 與日常開發情境下建議:
● 開發階段可以用較 aggressive 的設定,以便早期發現可能的 copy-paste 或 AI 產生 snippet。
● 正式合規報告則可收緊參數,搭配人工 triage 以降低不必要噪音。
FossID 的 Vulnerable Snippet Finder (VSF) 是建立在同一個 snippet matching 引擎上,只是匹配目標改成「已知存在 CVE 的具體程式碼片段」。
差異在於:
● 傳統 SCA:看 component/version 或 manifest 推斷某個套件可能含有 CVE。
● VSF:直接在你的 codebase 找出那幾行真實存在的「有漏洞的 snippet」,無論是原封不動還是 fork/改寫後留下的脈絡。
對做 EU CRA / 供應鏈風險評估的人而言,VSF 的價值在於:
● 能在沒有完整 SBOM 或只有二手來源資訊時,精確指出「哪幾行 code、在什麼檔案」需要修補。
● 避免 version-based 推斷帶來的 false positive(例如套件版本已打 patch 但 signature 判斷仍標示有洞)。
FossID 的 snippet detection 已被整合進 SCA 主產品與 CI/CD toolbox 裡,可在 pipeline 中自動觸發掃描與 gate keeping。
常見用法:
● Dev/CI:push 或 PR 時觸發 scan,對新加入的 code 做 snippet 檢查,特別適合控管 AI 產碼與 copy-paste 風險。
● 守門(gating):若偵測到高風險授權(如 copyleft)或已知 CVE snippet,阻擋 merge/build,並提示修補動作。
● 合規/稽核:對 release 版本或 M&A 稽核範圍做全面掃描,輸出報告與 SBOM,呈現所有 snippet 來源與授權義務。