セキュリティ

Agent NAS は、プロンプトインジェクションを防ぎません。注入されたあとに起きることを限定します。範囲の狭いリースで実行が触れられるものを区切り、ブランチで間違いを元に戻せるようにし、Rule of Two で、信頼できない内容を読んだセッションが機微なデータと外向きの経路を同時に持てないようにし、追跡できる記録を残します。

v0.2 仕様ドラフト 更新日

範囲と信頼の前提

  • 守るもの: NAS の中のデータと履歴、認可の境界、記録の完全性、記憶の追跡可能性。
  • 守らないもの: NAS の外でエージェントが行うこと、計算そのものの隔離(それはサンドボックスの仕事です)、モデル提供者の側で起きること。
  • 信頼の前提: 信頼できる計算基盤(TCB)は、NAS のゲートウェイ、ポリシーエンジン、記録サービスです。ホストは侵害されておらず、サンドボックスが計算を隔離しています。TCB が侵害されれば、このページの保証は成り立ちません。

Rule of Two:セッションの不変条件

3 つの性質:[A] セッションが信頼できない内容を読んだ、[B] リースが機微なデータの読み取りを許す、[C] リースが保護された状態の変更や外向きの通信を許す。1 つのセッションでこの 3 つがそろったとき、C を起動する呼び出しは、自動では通りません。

シナリオABC結果
ウェブページを要約して、ブランチ上のノートにするはいはいいいえ(ブランチのみ)自動:ブランチの中への書き込みは C に数えません。
ウェブページを読んだあと、main へのマージを提案するはいはいはいHuman Gate。
公開データだけを読み、作業用の領域に書くはいいいえいいえ自動。
外部のメールを読んだあと、メールを送る(外向きの送出)はいはいはいゲート。secret が関わるなら拒否。

これは Meta の Agents Rule of Two を ストレージの境界 に実装したものです。Meta 自身も、これはリスクを減らすための経験則であって終着点ではなく、最小権限の代わりにもならないと強調していて、私たちも同じように使います。仕組みは Trust Labels にあります。

脅威モデル

脅威NAS が強制できることNAS にできないこと残るリスク
T1 間接プロンプトインジェクション(ファイル、ウェブページ、メール経由)Rule of Two、リースによる限定、ブランチ、ゲート。インジェクションが起きること自体の阻止、起きたあとにリースの範囲内で行われる悪意ある動作の阻止。リースの範囲内での悪用。
T2 認証情報の漏えい(エージェントが長期の鍵を読む)長期の認証情報は実行の手元に置かない。シークレットスキャナーが secret をマークする。短い TTL。エージェントが、リースの範囲内のデータを、承認された外向きの経路へ送ることの阻止。リースの範囲内のデータの流出。
T3 広すぎる権限と操作ミス範囲の狭いリース、ブランチ、ソフト削除、どのリースの外にもあるスナップショット。NAS の外の副作用を元に戻すこと。NAS の外への影響。
T4 記憶への毒入れ(ロールをまたぐ拡散を含む)出どころと汚染、隔離、レビュー済みのものだけ自動読み込み、ロールバック。もっともらしく見える誤った事実の見分け。レビュアーが通してしまった毒。
T5 リースの盗難や再利用短い TTL、失効できる、任意の保持者バインド(DPoP、mTLS)。TTL の間の悪用の阻止。TTL の窓。
T6 承認疲れと、ろくに見ない承認まれなゲート、NAS が差分を描画、承認をダイジェストに束縛、承認率の監視。人間に注意深く見させること。人為的なミス。
T7 ログの改ざんハッシュチェーン、任意の外部アンカー。アンカーがないとき、root がログを壊すのを防ぐこと。悪意のある管理者。
T8 データの持ち出し(外向きの送出、共有、検索結果)外向きの送出にはリースの操作とゲートが必要。secret は外へ出せない。導出物はラベルを引き継ぐ。人間が承認したあとの漏えいの防止、隠れチャネル。承認後の漏えい。
T9 サプライチェーン(スキル、MCP サーバー、プラグイン、モデル)スキルや外部 MCP サーバーの内容は external として扱う。スキルのディレクトリは特定のコミットに固定できる。ランタイムのマニフェストは記録に書く。サードパーティのコードが無害だと保証すること。固定してしまった悪意あるバージョン。
T10 リソースの枯渇(ブランチ爆弾、予算の枯渇、読み取りのループ)クォータ、TTL、予算、ブレーカー。正当な大きなタスクと暴走の区別。局所的なサービス拒否。

対策

  • ポリシーエンジン: 決定的(Cedar や Rego 形式)、既定は拒否、拒否するときは読める理由と該当したルールを返す。LLM は呼び出さない。
  • 認証情報ブローカー: 長期の鍵はブローカーが持つ。承認された外向きの操作の中でだけ、実行のために短命の下流トークンを発行する。
  • 隔離と鍵: ロールごとに 1 つの Home とパス空間を持つ。sensitive の保持クラスは別の鍵ドメインを使う。
  • サプライチェーン: スキル、MCP サーバー、プラグインの内容は external として扱う。実行の開始時に、使うスキルとバージョンを記録に書く。

正直な限界

  1. これはプロンプトインジェクションへの防御では ありません。被害を限定し、見えるようにします。
  2. リースの範囲内の正当な権限は、依然として悪用されうる。
  3. NAS の外の副作用には何もできない。すでに送ったメール、すでに呼び出した API など。
  4. 隠れチャネルとサイドチャネルは対象外。
  5. TCB が侵害されれば、保証は成り立たない。
  6. 人間は間違える。ゲートはそのリスクを下げるが、なくすことはできない。
  7. 汚染は保守的で、摩擦と誤検知を生む。調整が必要で、拒否の理由が見えることも必要。
  8. 暗号粉砕が守るのは、私たちが管理できるコピーだけ。

インシデント対応

  • ブレーカー: revoke_run と revoke_role が、リースをただちに失効させ、ブランチを凍結する。
  • ロールバック: 影響を受けたツリーを、以前のコミットに戻す。
  • 追跡: 読み取りマニフェストと記録チェーンで、実行が何を読み、何を書き、どのノートに触れたかを調べる。
  • 後始末: Cascade Forget で、影響を受けた導出物を削除し、報告を出す。

可観測性と監査

  • 3 種類のデータ: 記録(イベント)、読み取りマニフェスト(入力の集合)、メトリクスとトレース。
  • **explain(commit):** そのコミットを生んだ実行とリース、通過したゲート、読んだもの、依存する入力を返す。
  • 既存の可観測性基盤との統合: 1 回の実行は 1 つの OpenTelemetry GenAI スパンに対応し、リースとゲートはイベントとして付く。記録は JSON Lines としてエクスポートするか、SIEM に流せる。
  • メトリクス: リースの発行率と拒否率、ゲートのキューの長さ、承認率、承認にかかる時間、ブランチの数と年齢、索引の鮮度、予算の消費、記録チェーンの検証結果。
  • プライバシーと保持: 既定ではメタデータだけを記録し、内容は記録しない。記録の保持と内容の削除は独立している。記録そのものを読むにもリースが必要。

このページを引用する

読者・検索エンジン・エージェントのための恒久的な URL と、推奨する引用形式です。

推奨する引用形式
Agent NAS project. “セキュリティ.” agentnas.com, 2026-11-11. https://agentnas.com/ja/security/