Crucible · 模型審查防火牆

乾淨的掃描無法釐清載入時的疑慮

合成模型通過了 PickleScan 基準測試,隨後在載入期間嘗試開啟資料庫。Crucible 記錄並阻斷該項已設定之影響,返回附帶證據的 QUARANTINE。

23/23 vs 19/23

阻斷事件偵測 vs PickleScan 標記

相同 23 個惡意加規避合成測試構件

4/4 vs 0/4

四個構建的規避樣本

行為偵測 vs PickleScan 1.0.4

2/2

棄權測試構件轉向 REVIEW

需要進一步證據;未核發簽章

卡片回報於 2026 年 10 月 6 日進行的一項固定 33 構件合成直接管線參考運行,採用確定性諮詢。其並不評估對未知模型的偵測率。影片分別擷取了本地應用程式中全新的已設定檢查:主主控台使用快取的 Codex 諮詢,基準測試則使用確定性諮詢。未擷取全新的模型推論。

決策需要載入相關證據

當安全團隊核准序列化模型時,相關問題延伸至其宣告的身分之外:載入嘗試執行什麼操作,以及哪些證據仍未解決?

Python 警告經精心構造的 pickle 資料可能在反序列化期間執行程式碼。Hugging Face 的 pickle 掃描文件亦說明了匯入與操作碼檢查的限制。 Python pickle 文件; Hugging Face pickle 掃描文件。

我們的合成 SQLite 測試構件使該區別可被檢查:無感染標記的基準測試與受阻斷的資料庫開啟嘗試並存。准入記錄保留這兩項發現,而非將乾淨的掃描器欄位視為許可放行。

已設定的決策如何制定

  1. 檢查支援的 pickle 內容。 靜態操作碼反組譯記錄全域變數並推估調用的可呼叫物件。已安裝的 PickleScan 基準提供獨立的比較欄位;其標記並不直接決定裁決結果。
  2. 觀察嘗試載入過程。 全新的 Python 子程序使用 CPython 審計鉤子記錄選定事件,並在已設定的阻斷影響前引發例外,包括 SQLite 連線與通訊端連線。這是具備程序隔離的 Python 檢測機制,無容器或作業系統隔離保護。
  3. 套用關卡並保留不確定性。 阻斷的行為事件返回 QUARANTINE。執行器當機或逾時、pickle 反組譯錯誤,或未執行的危險靜態全域變數則返回 REVIEW。否則基礎關卡返回 ALLOW;挑戰者存疑可將 ALLOW 改為 REVIEW,而 QUARANTINE 依然維持生效。
  4. 附加具界限的記錄。 每項結果都會收到最小 CycloneDX 形式的模型清單與本地雜湊鏈欄位。僅 ALLOW 會收到針對模型名稱、構件雜湊與清單的開發金鑰簽章。未知的上游歷史維持 UNKNOWN。

諮詢在單一合併請求中使用分析師與挑戰者角色。記錄的主主控台使用快取的建議;基準測試使用確定性諮詢。這些已設定的檢查並不保證每個格式錯誤的檔案、不支援的格式或分析錯誤都會轉向 REVIEW。

追蹤單一構件從乾淨掃描到准入決策的過程

以下所有構件、模型名稱與 hf:// 來源標籤皆為合成的本地測試構件,而非客戶模型或經驗證的登錄庫記錄。前三張螢幕截圖擷取了採用快取 Codex 諮詢的全新已設定檢查;獨立的基準測試擷取則採用確定性諮詢。未展示全新的模型推論。

實例說明:乾淨基準,阻斷的資料庫嘗試

所生成的 trusted-looking/finetune-safe pickle 嘗試在反序列化期間開啟 SQLite 資料庫。其名稱為編寫的測試構件標籤,並非信任證據。有價值的問題在於掃描器發現與觀察到的載入行為是否支持相同的准入決策。

已設定的結果

PickleScan: CLEAN。觀察到的操作: sqlite3.connect,嘗試並阻斷。最終裁決:QUARANTINE。簽章:無。

Crucible 合成 SQLite 規避樣本顯示 PickleScan CLEAN、阻斷的 sqlite3.connect 與 QUARANTINE
合成 SQLite 規避樣本:PickleScan 未標記該構件;已設定的審計鉤子記錄並阻斷其嘗試的資料庫操作。QUARANTINE 未核發簽章。NO CODE SURFACE 表示未命中已設定的危險全域變數;_sqlite3.connect 依然存在。UI 的沙盒用詞指子程序審計檢測,無作業系統或容器隔離保護。開啟圖片以檢視完整尺寸。

1. 分別解讀掃描器與靜態分析發現

PickleScan 1.0.4 記錄 _sqlite3.connect 為可疑但未設定其感染標記。Crucible 的靜態反組譯亦保留了該匯入的可呼叫物件,但其並不在已設定的危險全域變數集中。因此可見的 NO CODE SURFACE 標章表示未命中已設定的危險全域變數;這並不意味檔案不包含可執行之可呼叫物件。

合成 SQLite 構件之證據
檢查項目記錄的發現所證實的結論
PickleScan 基準flagged: false; _sqlite3.connect [suspicious]此基準未標記該構件。其並不能證明載入過程無害。
靜態反組譯_sqlite3.connect 於匯入與推估之可呼叫物件中;未命中已設定之危險全域變數該可呼叫物件清晰可見,即使已設定的黑名單並無命中項目。
觀察到的載入sqlite3.connect 伴隨 blocked: true; loaded: false審計鉤子在已設定的開啟資料庫影響前引發例外。
最終關卡QUARANTINE; signature: null阻斷的嘗試決定此裁決。未核發簽章。

2. 依據嘗試執行的影響決定路徑

全新的 Python 工作程序觸及 sqlite3.connect 以存取 /tmp/vp_demo_persist/.store.db。其 CPython 審計鉤子記錄該操作並在已設定的影響前引發例外。關卡返回 QUARANTINE,因為觀察到被阻斷的危險事件,無論乾淨的基準標記為何。此證據並未顯示已建立資料庫或成功持久化。

UI 將此工作程序稱為沙盒。其實作邊界為帶有選定 Python 審計鉤子的子程序,無作業系統沙盒、容器隔離保護或網路隔離。正式環境准入系統需要獨立建立的隔離邊界。

3. 保持決策與構件及記錄綁定

可下載的 JSON 記錄將構件 SHA-256 與其靜態發現、基準結果、嘗試調用、關卡原因、最小模型清單及本地雜湊鏈欄位相關聯。對於此 QUARANTINE 結果,簽章欄位為 null。審查者可檢視決策證據,而無需將諮詢建議視為核准或已完成的登錄庫操作。

雜湊值用以識別受檢查構件的位元組。本地雜湊鏈支援記錄之間的一致性檢查,但其缺乏獨立保管或外部錨點,且非不可竄改之封存檔。下方展示的已簽署 ALLOW 裝載所涵蓋的欄位集小於完整的證據記錄。

無聲載入留下懸而未決的條件發現

獨立的合成 acme/experimental-rl 測試構件在靜態檢查中包含 builtins.eval 。其條件分支在此環境中未被執行,且觀察到的載入未記錄到受阻斷的危險事件。未解決的靜態發現將其轉向 REVIEW 且無簽章。此路徑保留了需要更多證據的需求;未展示已完成的人工調查。

Crucible 合成條件測試構件顯示 builtins.eval、無受阻斷的執行階段事件與 REVIEW
合成條件測試構件:靜態檢查發現 builtins.eval,而觀察到的載入未記錄到受阻斷的危險事件。REVIEW 未核發簽章,並將構件轉向尋求進一步證據,而非已完成的人工審查。開啟圖片以檢視完整尺寸。

ALLOW 簽署本地清單,而溯源資訊維持未知

所生成的 acme/sentiment-mlp 權重字典依循乾淨路徑:未記錄到受阻斷的危險事件,已設定的檢查返回 ALLOW 並核發 Ed25519 簽章。其清單列出構件名稱與雜湊值、序列化格式、推斷之框架及宣告之來源。訓練資料溯源與微調歷史維持 UNKNOWN。

Crucible 合成乾淨權重清單顯示 UNKNOWN 溯源資訊與本地 Ed25519 簽章
合成乾淨權重字典:ALLOW 收到針對模型名稱、雜湊值與清單的本地開發金鑰簽章。訓練溯源與微調歷史維持 UNKNOWN。可見的框架參考文字為已設定的標籤,不具備法律驗證或合規性認定。開啟圖片以檢視完整尺寸。

簽章針對本地開發金鑰驗證規範的模型名稱、構件雜湊與最小 CycloneDX 形式清單裝載。其並不簽署每個裁決或整份記錄、填補上游歷史、確立訓練權利或證明任意模型安全。可見的法規參考文字為已設定的測試構件詮釋資料,非經驗證的合規性。

解讀固定集合比較及其分母

於 2026 年 10 月 6 日進行的一項凍結直接管線參考運行採用確定性諮詢、PickleScan 1.0.4、臨時開發金鑰與臨時帳本。其生成的 33 個構件包含 8 個良性、19 個惡意、4 個構建的規避樣本與 2 個棄權測試構件。惡意加規避比較在兩欄中皆計算相同的 23 個構件。

固定 33 構件合成直接管線參考運行
測量項目觀察結果範圍
惡意加規避偵測行為 23/23;PickleScan 19/23在相同 23 個測試構件上,阻斷事件偵測與基準感染標記進行比較。
構建的規避樣本行為 4/4;PickleScan 0/4旨在說明這些檢查之間差異的四個測試構件。
良性決策0/8 獲得 ALLOW 以外的裁決八個良性測試構件,並非對未知模型誤報率的估計。
ALLOW 簽章8/8 已核發並驗證驗證使用隨附函式與本地開發金鑰。
棄權路徑2/2 REVIEW未解決的測試構件維持未簽署;調查尚未完成。
預期裁決與本地鏈33/33 相符;雜湊連結完好編寫的測試構件預期與本地一致性檢查,無外部錨點。

下方螢幕截圖是在本地應用程式中另一次完成的 HTTP/SSE 基準測試運行,採用確定性諮詢。其顯示相同的固定集合比較以及 33/33 預期裁決相符。其並非上述凍結直接管線參考測量的來源;其顯示的耗時屬於該次擷取的運行。

已完成的 Crucible 合成基準測試顯示 33 個預期裁決全部相符、行為偵測 23/23 與 PickleScan 標記 19/23
已完成的本地 HTTP/SSE 基準測試:所有 33 個合成測試構件皆與其預期裁決相符。在相同的惡意加規避集合上,行為阻斷事件偵測為 23/23,PickleScan 標記為 19/23。諮詢為確定性。僅 ALLOW 簽署清單裝載;REVIEW 與 QUARANTINE 未簽署。本地雜湊鏈無外部錨點,且顯示的耗時並非正式環境延遲。開啟圖片以檢視完整尺寸。

這些針對構建測試構件的觀察,並不代表對未見模型之偵測率、正式環境延遲或資安入侵減少幅度的估計。ALLOW 描述已設定檢查對觀察到的載入之結果;其並不能確立徹底的模型安全性。

各防護層所能證實的範疇

防護層此展示中的證據應保留的邊界
靜態檢查與 PickleScan全域變數、推估之可呼叫物件與基準標記僅憑乾淨標記無法判定載入行為
行為觀察單次觀察載入中所選定的嘗試影響無聲載入可能留下未解決的條件行為
已簽署清單適用於 ALLOW 的本地模型名稱、雜湊與清單裝載簽章無法證明未知的上游歷史
本地雜湊鏈帳本支援本地一致性檢查的雜湊連結無獨立保管或外部錨點

此展示不包含的功能

Crucible 是針對合成構件的本地展示。其不具備公開登錄庫連接器、企業級准入強制執行、作業系統沙盒、正式環境金鑰基礎架構或完整的相依性重建。其不評估模型品質、推論安全性或訓練資料投毒,且其框架參考標籤亦不構成合規性證明。

Python 告誡審計鉤子不適用於實作沙盒。 Python 審計鉤子文件。正式環境作業必須在本次本地展示之外建立隔離保護、信任邊界與受控保管機制。

安全與平台團隊常提出的問題

乾淨的 pickle 掃描能證明什麼?

乾淨的 PickleScan 結果意味著此基準未標記受檢查的構件。在 Crucible 的合成 SQLite 範例中,已設定的審計鉤子在載入期間記錄並阻斷嘗試的資料庫操作,而基準測試仍保持乾淨。單憑掃描器結果並不能證明載入過程毫無副作用。

若可疑的靜態證據在載入期間未被執行該怎麼辦?

當觀察到的載入未執行受阻斷的危險事件時,Crucible 會將已設定的危險靜態全域變數轉向 REVIEW。合成條件測試構件包含 builtins.eval 並走這條無簽章的路徑。REVIEW 請求進一步證據;這並不意味人工調查已經完成。

簽章涵蓋了哪些內容?

僅 ALLOW 會使用本地開發金鑰收到針對規範模型名稱、構件雜湊與清單裝載的 Ed25519 簽章。其相對於該金鑰驗證該裝載。其並不能確立上游保管鏈、來源真實性或完整溯源資訊。

哪些上游溯源資訊仍屬未知?

最小 CycloneDX 形式的模型清單將訓練資料溯源與微調歷史記錄為 UNKNOWN。其包含構件雜湊、序列化格式、推斷之框架及宣告之來源。ALLOW 裁決與有效的本地簽章無法填補缺失的歷史資訊。

工作程序如何進行隔離?

工作程序為全新的 Python 子程序,具備臨時工作目錄與 CPython 審計鉤子,可記錄選定事件並阻斷已設定的影響。其無容器或作業系統沙盒,且非網路隔離環境。本次展示並未確立正式環境隔離保護或徹底的安全性。

這是否能與我們的登錄庫及准入管線整合?

本展示從本地合成登錄庫讀取生成的構件。其 hf:// 來源字串為測試構件標籤,且其不具備公開登錄庫連接器或企業級准入強制執行。正式環境整合需要登錄庫信任邊界、隔離保護、金鑰管理以及獨立受控的審計儲存區。

技術研究

探索相關研究以獲取本次展示的更廣泛背景資訊。

定義您的准入關卡所需的證據

與我們的團隊討論您的模型接收工作流程。

我們利用這些展示出的區別,圍繞您的登錄庫、載入邊界與證據需求,架構評估或實作討論。

准入設計評估

  • ✓ 構件格式與接收路徑
  • ✓ 檢查項目與未解決裁決
  • ✓ 載入與隔離邊界
  • ✓ 清單與審計要求

正式環境實作規劃

  • ✓ 登錄庫與管線整合
  • ✓ 隔離保護與部署設計
  • ✓ 簽署金鑰與證據保管
  • ✓ 具代表性的評估計劃