Crucible · Model Vetting Firewall

クリーンなスキャンであっても、ロード時の疑念は残る

合成モデルがPickleScanのベースラインを通過した後、ロード中にデータベースを開こうと試みます。Crucibleはその設定された影響を記録してブロックし、証拠を添付してQUARANTINEを返します。

23/23 vs 19/23

ブロックされたイベントの検出 vs PickleScanフラグ

同一の23件の悪意あるモデルおよび回避工作合成フィクスチャ

4/4 vs 0/4

構築された4件の回避工作モデル

振る舞い検出 vs PickleScan 1.0.4

2/2

REVIEWにルーティングされた判定保留フィクスチャ

さらなる証拠が必要;署名は発行されません

カードは2026年10月6日に決定論的アドバイザリを用いて実施された、33個の成果物による固定された合成直接パイプライン参照実行1回分を報告しています。未知のモデルに対する検出を推定するものではありません。動画はローカルアプリで新たに設定されたチェックを個別にキャプチャしています。メインコンソールはキャッシュされたCodexアドバイザリを使用し、ベンチマークは決定論的アドバイザリを使用します。新たなモデル推論はキャプチャされていません。

判定にはロードに関する証拠が必要です

セキュリティチームがシリアライズされたモデルを承認する際、問うべきことは宣言された同一性にとどまりません。ロード時にどのような操作が試みられ、どの証拠が未解決のまま残されているかです。

Pythonは、細工されたpickleデータがアンピクル処理中にコードを実行する可能性があると警告しています。Hugging Faceのpickleスキャンに関するドキュメントでも、インポートおよびオペコード検査の限界が説明されています。 Python pickleドキュメント; Hugging Face pickleスキャンドキュメント。

私たちの合成SQLiteフィクスチャは、その違いを検査可能にします。感染フラグのないベースラインの横に、ブロックされたデータベースオープン試行が並びます。受け入れ記録は、クリーンなスキャナー結果を許可として扱うのではなく、両方の検証結果を保持します。

設定された判定がどのように下されるか

  1. サポートされているpickleコンテンツを検査します。 静的オペコード逆アセンブリは、グローバルを記録し、呼び出される呼び出し可能オブジェクトを概算します。インストールされたPickleScanベースラインは個別の比較フィールドを提供しますが、そのフラグが直接評決を決定することはありません。
  2. 試みられたロードを観察します。 新規のPythonサブプロセスがCPython監査フック(audit hook)を使用して選択されたイベントを記録し、SQLite接続やソケット接続などの設定されたブロック対象の影響が発生する前に例外を発生させます。これはコンテナやOSによる隔離を伴わない、プロセス分離によるPythonの計装です。
  3. ゲートを適用し、不確実性を保持します。 ブロックされた振る舞いイベントはQUARANTINEを返します。ランナーのクラッシュやタイムアウト、pickle逆アセンブリエラー、または未実行の危険な静的グローバルはREVIEWを返します。それ以外の場合、ベースゲートはALLOWを返します。チャレンジャーの疑義によってALLOWをREVIEWに変更することはできますが、QUARANTINEは有効なまま維持されます。
  4. 限定された記録を添付します。 すべての結果には、最小限のCycloneDX形式のモデルインベントリとローカルハッシュチェーンフィールドが付与されます。モデル名、成果物ハッシュ、およびインベントリに対する開発用鍵の署名を受け取るのはALLOWのみです。未知のアップストリーム履歴はUNKNOWNのままとなります。

アドバイザリは、1つの統合リクエスト内でアナリストとチャレンジャーのロールを使用します。記録されたメインコンソールはキャッシュされたアドバイスを使用し、ベンチマークは決定論的アドバイザリを使用します。これらの設定されたチェックは、すべての不正な形式のファイル、サポートされていない形式、または解析エラーが確実にREVIEWにルーティングされることを保証するものではありません。

クリーンなスキャンから受け入れ判定まで、1つの成果物を追跡する

以下のすべての成果物、モデル名、および hf:// ソースラベルは合成ローカルフィクスチャであり、顧客モデルや検証済みレジストリレコードではありません。最初の3つのスクリーンショットは、キャッシュされたCodexアドバイザリによる新たに設定されたチェックをキャプチャしています。個別のベンチマークキャプチャは決定論的アドバイザリを使用しています。新たなモデル推論は表示されていません。

具体例:クリーンなベースラインと、ブロックされたデータベース試行

生成された trusted-looking/finetune-safe pickleは、デシリアライズ中にSQLiteデータベースを開こうと試みます。その名前は作成されたフィクスチャのラベルであり、信頼の証拠ではありません。有用な問いは、スキャナーの検証結果と観察されたロード時の振る舞いが同じ受け入れ判定を支持するかどうかです。

設定された結果

PickleScan: CLEAN。観察された操作: sqlite3.connect、試行されブロックされました。最終評決:QUARANTINE。署名:なし。

PickleScan CLEAN、ブロックされたsqlite3.connect、およびQUARANTINEを示すCrucible合成SQLite回避工作モデル
合成SQLite回避工作モデル:PickleScanはこの成果物にフラグを立てませんが、設定された監査フックが試みられたデータベース操作を記録してブロックします。QUARANTINEでは署名は発行されません。NO CODE SURFACEは設定された危険なグローバルのヒットがないことを意味します。_sqlite3.connectは依然として存在します。UIのサンドボックスという表記は、OSやコンテナの隔離を伴わないサブプロセス監査計装を指しています。フルサイズで検査するには画像を開いてください。

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に送られます。このルートはさらなる証拠の必要性を保持するものであり、完了した人間による調査を示すものではありません。

builtins.eval、ブロックされたランタイムイベントなし、およびREVIEWを示すCrucible合成条件付きフィクスチャ
合成条件付きフィクスチャ:静的検査でbuiltins.evalが見つかる一方、観察されたロードではブロックされた危険なイベントは記録されません。REVIEWは署名を発行せず、完了した人間によるレビューではなく、さらなる証拠のために成果物をルーティングします。フルサイズで検査するには画像を開いてください。

プロベナンスが不明のままである一方、ALLOWはローカルインベントリに署名する

生成された acme/sentiment-mlp 重み辞書はクリーンなパスをたどります。ブロックされた危険なイベントは記録されず、設定されたチェックはALLOWを返し、Ed25519署名が発行されます。そのインベントリには、成果物名とハッシュ、シリアライズ形式、推論されたフレームワーク、および宣言されたソースが記載されます。学習データのプロベナンスおよびファインチューニング履歴はUNKNOWNのまま残ります。

UNKNOWNプロベナンスとローカルEd25519署名を示すCrucible合成クリーン重みインベントリ
合成クリーン重み辞書:ALLOWは、モデル名、ハッシュ、およびインベントリに対してローカル開発用鍵の署名を受け取ります。学習のプロベナンスおよびファインチューニング履歴はUNKNOWNのままです。表示されているフレームワーク参照テキストは設定されたラベルであり、法的な検証やコンプライアンスの認定を伴うものではありません。フルサイズで検査するには画像を開いてください。

署名は、ローカル開発用鍵に照らして正規のモデル名、成果物ハッシュ、および最小限のCycloneDX形式インベントリペイロードを認証します。すべての評決や記録全体に署名するものではなく、アップストリーム履歴を補完したり、トレーニング権を確立したり、任意のモデルの安全性を証明したりするものではありません。表示されている規制参照テキストは設定されたフィクスチャのメタデータであり、検証されたコンプライアンスではありません。

母集団とともに固定セットの比較を読み解く

2026年10月6日の固定された直接パイプライン参照実行1回分では、決定論的アドバイザリ、PickleScan 1.0.4、一時的な開発用鍵、および一時的な台帳を使用しています。生成された33個の成果物は、良性8件、悪意あるモデル19件、構築された回避工作モデル4件、および判定保留フィクスチャ2件で構成されています。悪意あるモデル+回避工作モデルの比較では、両方の列で同一の23件の成果物をカウントしています。

固定された33成果物の合成直接パイプライン参照実行
測定項目観察された結果対象範囲
悪意あるモデル+回避工作モデルの検出振る舞い 23/23;PickleScan 19/23同一の23件のフィクスチャにおけるベースライン感染フラグと比較した、ブロックされたイベントの検出。
構築された回避工作モデル振る舞い 4/4;PickleScan 0/4これらのチェック間の違いを説明するために設計された4件のフィクスチャ。
良性判定ALLOW以外の評決が出された件数 0/88件の良性フィクスチャであり、未知のモデルにおける偽陽性の推定ではありません。
ALLOW署名8/8 発行および検証完了検証には含まれている関数とローカル開発用鍵を使用します。
判定保留ルート2/2 REVIEW未解決のフィクスチャは署名されないまま残ります。調査は完了していません。
期待される評決とローカルチェーン33/33 一致;ハッシュリンク正常外部アンカーを伴わない、作成されたフィクスチャの期待値およびローカル整合性チェック。

下のスクリーンショットは、ローカルアプリで決定論的アドバイザリを用いて完了した個別のHTTP/SSEベンチマーク実行です。同一の固定セット比較と33/33の期待される評決の一致を示しています。これは上記の固定された直接パイプライン参照測定のソースではありません。表示されているタイミングはそのキャプチャされた実行のものです。

33件中33件の期待される評決、23件中23件の振る舞い検出、および19件中23件のPickleScanフラグを示す完了したCrucible合成ベンチマーク
完了したローカルHTTP/SSEベンチマーク:33件すべての合成フィクスチャが期待される評決と一致しています。同一の悪意あるモデル+回避工作モデルのセットにおいて、振る舞いによるブロックイベント検出は23/23、PickleScanフラグは19/23です。アドバイザリは決定論的です。インベントリペイロードに署名するのはALLOWのみであり、REVIEWとQUARANTINEは署名されません。ローカルハッシュチェーンには外部アンカーがなく、表示されているタイミングは本番環境のレイテンシではありません。フルサイズで検査するには画像を開いてください。

これらの構築されたフィクスチャの観察結果は、未知のモデルにおける検出、本番環境のレイテンシ、または侵害の削減を推定するものではありません。ALLOWは観察されたロードに対する設定されたチェックの結果を記述するものであり、網羅的なモデルセキュリティを確立するものではありません。

各レイヤーが確立できること

レイヤー本デモにおける証拠留意すべき境界
静的検査とPickleScanグローバル、概算された呼び出し可能オブジェクト、およびベースラインフラグクリーンなフラグ単体ではロード時の振る舞いを解明できない
振る舞いの観察1回の観察されたロードにおいて試みられた、選択された影響静かなロードでは条件付きの振る舞いが未解決のまま残る可能性がある
署名付きインベントリALLOWに対するローカルのモデル名、ハッシュ、およびインベントリペイロード署名は未知のアップストリーム履歴を証明するものではない
ローカルハッシュチェーン台帳ローカルの整合性チェックをサポートするハッシュリンク独立したカストディや外部アンカーは存在しない

本デモが「行わない」こと

Crucibleは合成成果物によるローカルデモンストレーションです。公開レジストリコネクタ、エンタープライズ受け入れ強制、OSサンドボックス、本番用鍵インフラ、完全な依存関係再構築は備えていません。モデルの品質、推論の安全性、トレーニングデータのポイズニングを評価するものではなく、そのフレームワーク参照ラベルはコンプライアンスを確立するものではありません。

Pythonは、監査フックがサンドボックスの実装には適していないと警告しています。 Python監査フックドキュメント。本番環境の実装では、このローカルデモンストレーションを超えた封じ込め、信頼境界、および管理されたカストディを確立する必要があります。

セキュリティチームおよびプラットフォームチームからの質問

クリーンなpickleスキャンは何を確立できますか?

クリーンなPickleScan結果は、このベースラインが検査された成果物にフラグを立てなかったことを意味します。Crucibleの合成SQLiteの例では、ベースラインがクリーンのままである一方、設定された監査フックがロード中に試みられたデータベース操作を記録してブロックします。スキャナー結果単体では、副作用のないロードを確立することはできません。

不審な静的証拠がロード中に実行されない場合はどうなりますか?

Crucibleは、観察されたロードがブロックされた危険なイベントを実行しない場合、設定された危険な静的グローバルをREVIEWにルーティングします。合成条件付きフィクスチャにはbuiltins.evalが含まれており、署名なしでこのルートを進みます。REVIEWはさらなる証拠を要求するものであり、人間による調査が完了したことを意味するものではありません。

署名は何をカバーしていますか?

正規のモデル名、成果物ハッシュ、およびインベントリペイロードに対して、ローカル開発用鍵を用いたEd25519署名を受け取るのはALLOWのみです。この鍵に照らしてそのペイロードを認証します。アップストリームのカストディ、ソースの真正性、または完全なプロベナンスを確立するものではありません。

どのようなアップストリームプロベナンスが不明のまま残りますか?

最小限のCycloneDX形式のモデルインベントリは、学習データのプロベナンスおよびファインチューニング履歴をUNKNOWNとして記録します。これには、成果物ハッシュ、シリアライズ形式、推論されたフレームワーク、および宣言されたソースが含まれます。ALLOW評決と有効なローカル署名は、欠落している履歴を補完するものではありません。

ワーカーはどのように隔離されていますか?

ワーカーは、一時的な作業ディレクトリと、選択されたイベントを記録して設定された影響をブロックするCPython監査フックを備えた新規のPythonサブプロセスです。コンテナやオペレーティングシステムのサンドボックスはなく、ネットワークから隔離された環境でもありません。このデモンストレーションは、本番環境の封じ込めや網羅的なセキュリティを確立するものではありません。

これは自社のレジストリおよび受け入れパイプラインと統合できますか?

このデモンストレーションは、生成された成果物をローカルの合成レジストリから読み込みます。そのhf://ソース文字列はフィクスチャのラベルであり、公開レジストリコネクタやエンタープライズ受け入れ強制は備えていません。本番環境への統合には、レジストリの信頼境界、封じ込め、鍵管理、および独立して管理された監査ストレージが必要になります。

技術研究

本デモに関するより広範なコンテキストについては、関連研究をご覧ください。

受け入れゲートに必要な証拠を定義する

貴社のモデル受け入れワークフローについて、私たちのチームにご相談ください。

私たちは、示されたこれらの違いを活用し、貴社のレジストリ、ロード境界、および証拠要件に関するアセスメントや実装の検討を具体化します。

受け入れ設計アセスメント

  • ✓ 成果物形式と取り込みパス
  • ✓ チェックと未解決の評決
  • ✓ ロードおよび隔離の境界
  • ✓ インベントリと監査要件

本番実装計画

  • ✓ レジストリおよびパイプラインの統合
  • ✓ 封じ込めとデプロイの設計
  • ✓ 署名鍵と証拠のカストディ
  • ✓ 代表的な評価計画