Reachability分析證明易受攻擊的程式碼是否確實被您的應用程式呼叫——過濾掃描器雜訊中的誤報 作為證據

阻擋發行的是什麼——先是可達、尚未修復、與政策相關的風險。

長尾只需一個篩選條件。

~85% 的關鍵容器漏洞存在於非活躍程式碼中(Sysdig 2024 容器安全報告)。可達性分析會詢問你映像中是否存在一條路徑能夠到達該漏洞函式,並為每個判決——無论是保留或移除——都簽署證明。

工作集

以下畫面顯示七項發現。一個阻擋項目:它可達且尚未修復。另外六個是固定的,但不會顯示可達——它們留在組合中,排名較低,從未隱藏。

blocking = reachable × unfixed × policy-relevant

Stella Ops 曝光篩檢:一組工作中的七項發現,其中一項標記為REACHABLE狀態阻擋,其餘則以NOT OBSERVED狀態保持
曝光畫面,v1.0-RC1主控台,展示範例資產。NOT OBSERVED並非「不脆弱」——未知因素會在證據顯示之前保持可見。

REACHABLE

從入口點到易受攻擊符號的可執行路徑會被證明——透過靜態呼叫圖、二進位符號匹配或執行時探針命中。

NOT OBSERVED

目前收集的證據中,尚未找到可執行的路徑。這是針對證據的陳述,而非脆弱性。這個發現在工作集中佔有一席之地。

兩個排名,一個資料集

同一套工作組同時執行兩種工作。在它們之間切換會改變頂部的種類——沒有東西會進出。

船隻

排名依阻擋此發行的因素排序:優先於可達、未修正、政策相關的風險。

安全

依照整個環境資產的總曝光度排名,包括那些永遠不會限制發行的發現。

它改變的是排名和重點,而不是資料本身。

證據從何而來

靜態分析在每次掃描中產出判決。二進位符號與執行階段事實在你需要時提供更多深度。 CVE公共漏洞和暴露 - 公開已知安全漏洞的唯一識別碼

層 1

靜態呼叫圖分析

從編譯後的位元碼與原始碼建置呼叫圖,再從你的進入點追蹤到安全公告所指名的函式。

  • • 可建置呼叫圖的語言:Go、Java、C#/.NET、JavaScript 與 TypeScript、Python、Rust、PHP、Ruby。每個映像只分析一種語言。其他生態進入 unknown 分類——計分,而非跳過。
  • • 離線擷取範圍較窄:CLI 從原始碼樹建置呼叫圖僅支援 Go 與 Rust,且使用詞法層——SSA 工具鏈位於 scanner worker 內。其他語言由掃描流水線分析,CLI 取用其已擷取的呼叫圖。
  • • Python、JavaScript/TypeScript、Rust、PHP 與 Ruby 依原始碼文字分析,且每條邊都帶有信心度——你能看出判決出自哪一層
  • • 不建模反射、動態呼叫,以及超出已知實作的虛擬方法分派——每個結果都會宣告這一限制
層 2

二進位符號分析

面向無原始碼可讀的原生程式碼的 CLI 通道:ELF 符號表與 DWARF 函式名稱,支援 x86、x64 與 ARM64。其結論獨立成立,與掃描判決分開。

  • • ELF 符號表與 DWARF 函式名稱
  • • x86、x64 與 ARM64 反組譯。除錯資訊僅從 DWARF 讀取——不支援 PDB
層 3

執行階段 eBPF擴展柏克萊封包過濾器 — 一種Linux核心技術,執行沙箱程式實現高效能可觀測性和執行階段分析,無需核心模組 探針

把真實的執行資料送進來,Stella Ops 會驗證並封存它,作為最強的可達性證據。探針由你執行;RC1 提供接收通路。

  • • 基於 Tetragon 的 eBPF擴展柏克萊封包過濾器 — 一種Linux核心技術,執行沙箱程式實現高效能可觀測性和執行階段分析,無需核心模組 工具
  • • 記錄 symbol_id、code_id、hit_count、 loader_base
  • • 隱私保護:未捕獲任何參數值

每個判決都以DSSE簽名證明形式包裝,將該發現綁定於其判斷的可執行路徑。若無法分析出任何路徑,該發現會被標記為未知,而不是被判定為無風險。 DSSEDead Simple Signing Envelope - 用於以加密簽章簽署任意資料的簡單靈活標準

未知作為一級狀態

當分析無法確定可達性時,會顯式追蹤不確定性 — 不會隱藏或默默地假定安全。

Reachability分析證明易受攻擊的程式碼是否確實被您的應用程式呼叫——過濾掃描器雜訊中的誤報預設權重
reachable:proven1.0
reachable:likely0.85
not-observed0.0

數值越高代表風險越大,而非信心越足:該權重用於縮放一條發現的風險分值。執行階段確認不會取代路徑證明——它提高的是附加在判決上的信心。若分析器根本沒有觀測到路徑,Stella Ops 會報告未觀測並附上簽名的涵蓋範圍說明,絕不會說「不可達」:沒有觀測到路徑,並不能證明路徑不存在。

政策建議:將 unknown 視為一級判決,為每個嚴重性設置明確的閾值,並在證據包中記錄審核者覆蓋原因。

VEX語句的入口

發布者的 VEX 聲明匯入同一張證據圖,並正規化為五種狀態——not_affected、affected、fixed、under_investigation、unknown——因此「調查中」是有後果的狀態,而非註腳。 VEX漏洞可利用性交換 - 關於漏洞是否在您的情境中實際可利用的機器可讀聲明

not_affected affected fixed under_investigation unknown

多個發行商可以針對同一元件進行通話。當雙方意見不合時,K4(Belnap)衝突解決系統會將分歧記錄為衝突——沒有人會被平均,且沒有發行人默默獲勝。

SBOM與VEX證據如何融合 →

KEV 和 EPSS 參與——他們不做決定

CISA KEV 清單與 EPSS 分數屬於諮詢層級的漏洞利用訊號。它們提升了工作組內發現的等級與緊急性。 KEV已知被利用漏洞 - CISA的活躍利用漏洞目錄 EPSS漏洞利用預測評分系統 - 預測漏洞被利用可能性的機率評分(0-100%)

Exploit signals attach at the advisory level, not at the finding level. Open a CVE公共漏洞和暴露 - 公開已知安全漏洞的唯一識別碼 to read its advisory-level exploit data: the KEV已知被利用漏洞 - CISA的活躍利用漏洞目錄 listing and the EPSS漏洞利用預測評分系統 - 預測漏洞被利用可能性的機率評分(0-100%) score belong to the advisory, and they read the same for every service that carries the affected component.

它們不是可達性的證據。你服務從未載入的程式碼中的 KEV 條目會改變重點,而非判決——除非你的政策明確表示已知被利用的發現仍會封鎖。 有兩類規則可以攔截,且彼此獨立:CVE 攔截清單完全不考慮可達性;而可達性規則只在已證實路徑上攔截——reachable:likely 與 unknown 永不透過它攔截,無論政策列出哪些狀態。

A policy gate can combine both kinds of answer in one rule: reachability state together with EPSS漏洞利用預測評分系統 - 預測漏洞被利用可能性的機率評分(0-100%), KEV已知被利用漏洞 - CISA的活躍利用漏洞目錄, and CVSS通用漏洞評分系統 - 0到10的嚴重性評級,指示漏洞的關鍵程度 thresholds. "Known-exploited and reachable" and "known-exploited regardless of reachability" are both expressible; which one you enforce is your policy, not a default we pick for you.

與CI中的掃描器相比

掃描器會回答「這張影像現在是什麼?」這是必要的——但對於發行決定來說,卻不夠。

掃描任務帶來的體驗

  • • 每張圖片都有一份發現項目清單,每次跑都從頭重新產生
  • • 嚴重度是根據建議取的,不是你的通話圖表
  • • 檔案中的壓制則忽略,沒有簽署誰接受了什麼的紀錄

Stella Ops新增的

  • • 調查結果跨38活躍的諮詢來源,並依可達性進行排名
  • • 每個判決——包括被刪除的判決——都附有DSSE簽名、可重播的證據
  • • 結果會傳到發行閘門,Watch 在部署後持續比較正在執行的摘要和核准的摘要

Stella Ops不做的事

Trivy 涵蓋 Git 儲存庫、虛擬機和 Kubernetes 目標,以及錯誤設定和秘密掃描。Stella Ops沒有。其範圍為容器映像檔與檔案系統快照,並附有簽署且可重播的證據。

完整比較: Stella Ops vs Trivy | Stella Ops 對 Grype

實作方式:節點雜湊連接

Reachability分析證明易受攻擊的程式碼是否確實被您的應用程式呼叫——過濾掃描器雜訊中的誤報 證據會依內容處理,進行重複刪除與驗證。節點雜湊能有效地在不同版本間進行差異化。 節點雜湊 SHA256(normalize(purl) + ":" + normalize(symbol)) 路徑雜湊 SHA256(entryNodeHash + ":" + joinedIntermediateHashes + ":" + sinkNodeHash) Top-K 重要路徑保留在證據束中。路徑按執行頻率(來自執行階段)或呼叫深度(來自靜態)進行排名。
Read more

Reachability分析證明易受攻擊的程式碼是否確實被您的應用程式呼叫——過濾掃描器雜訊中的誤報 證據會依內容處理,進行重複刪除與驗證。節點雜湊能有效地在不同版本間進行差異化。

節點雜湊

SHA256(normalize(purl) + ":" + normalize(symbol))

路徑雜湊

SHA256(entryNodeHash + ":" + joinedIntermediateHashes + ":" + sinkNodeHash)

Top-K 重要路徑保留在證據束中。路徑按執行頻率(來自執行階段)或呼叫深度(來自靜態)進行排名。

實作:簽名證明

每個可達性分析都會產生儲存在內容尋址儲存中的加密簽名證明。 DSSE?Dead Simple Signing Envelope - 用於以加密簽章簽署任意資料的簡單靈活標準 DSSE 信封 in-toto SLSA 謂詞格式 無需網路存取即可由稽核人員驗證 確定性重播產生位相同的結果 離線存檔的圖表和追蹤驗證 內容尋址儲存路徑 cas://reachability_graphs/<hh>/<sha>.tar.zst cas://runtime_traces/<hh>/<sha>.tar.zst
Read more

每個可達性分析都會產生儲存在內容尋址儲存中的加密簽名證明。 DSSEDead Simple Signing Envelope - 用於以加密簽章簽署任意資料的簡單靈活標準

  • DSSE 信封 in-toto SLSA 謂詞格式
  • 無需網路存取即可由稽核人員驗證
  • 確定性重播產生位相同的結果
  • 離線存檔的圖表和追蹤驗證

內容尋址儲存路徑

cas://reachability_graphs/<hh>/<sha>.tar.zst

cas://runtime_traces/<hh>/<sha>.tar.zst

以公開的基準真值為準繩

可達性分類器以隨公開原始碼樹發布的帶標註語料庫為準繩:八個涵蓋 Java、Node.js、Python、Go、.NET、Ruby、Rust 與 PHP 的最小服務,每個都帶有標籤檔,按 CVE 聲明期望層級——從 R0(在該服務中不可達)到 R4(自進入點可達)——以及理由。

同一原始碼樹中還有按層級為分類評分的評測工具——精確率與召回率,而非一個混合數字。語料庫、標籤與層級契約都是公開的,你不必接受我們的解讀:用你自己的安裝掃描同一基準真值,將其報告與公開的期望答案對照。

如何做這項對照,見評估試點第 2.1 步 →

實作:eBPF探針

Stella Ops 透過串流接收端點接受執行階段事實,並視其為最強的可達性證據。RC1 不提供採集器:基於 Tetragon 的探針是由您執行的檢測工具,而可達性分析在沒有它們時仍可依靠靜態層與二進位層運作。 捕獲的探測資料 symbol_id: 規範符號識別碼 code_id: 程式段識別碼 hit_count: 執行頻率 loader_base: 記憶體基底位址 cas_uri: 內容定址參考 探測器會以串流 NDJSON 的形式向 POST /signals/runtime-facts/ndjson 提交執行時事實。每個觀測值都攜帶底層產出物的 CAS URI。
Read more

Stella Ops 透過串流接收端點接受執行階段事實,並視其為最強的可達性證據。RC1 不提供採集器:基於 Tetragon 的探針是由您執行的檢測工具,而可達性分析在沒有它們時仍可依靠靜態層與二進位層運作。

捕獲的探測資料

symbol_id: 規範符號識別碼

code_id: 程式段識別碼

hit_count: 執行頻率

loader_base: 記憶體基底位址

cas_uri: 內容定址參考

探測器會以串流 NDJSON 的形式向 POST /signals/runtime-facts/ndjson 提交執行時事實。每個觀測值都攜帶底層產出物的 CAS URI。

從你自己的工作組開始

指著你今天Stella Ops的一張照片,讀讀它所簽署的判決。如果可達性移除的數字比它聲稱的少,你也會看到——每次移除都有其證據。

免費方案:3 個環境,且每滾動 24 小時最多 100 次新摘要掃描,自架式。v1.0-RC1,候選發布版。