エージェントセキュリティのリファレンスアーキテクチャと、Bromure の対応状況
Docker、Keycard、Barclays、Socket、Secure Theory のエンジニアたちが、コーディングエージェントを安全に動かすためのリファレンスアーキテクチャ The Secure Software Factory を公開しました。Agent Baseline のコントロールを土台にしたものです。良い出発点であり、私たちはこれを歓迎します。Bromure Agentic Coding がその 4 つの境界をどうカバーしているか、そして観測と対応の面でどこまで踏み込んでいるかを説明します。
10 月 13 日、エンジニアのグループが The Secure Software Factory を公開しました。コーディングエージェントにコードを書かせ、テストさせ、出荷させる組織のためのリファレンスアーキテクチャです。起草したのは Eli Aleyner、Ranti Familusi、William Manning(Docker)、Allie Howe、Ian Livingstone(Keycard)、Andy McMahon(Barclays)、Ahmad Nassri(Socket)、Aaron Stanley(Secure Theory)の各氏です。土台になっているのは Agent Baseline で、6 つの成果領域にまとめられた 35 のコントロールからなり、Keycard が Docker と Snyk のエンジニアを招いてまとめたものです。
私たちはこれを歓迎します。公開され、バージョン管理されたドラフトで、コントロールには安定した識別子が付き、CC BY 4.0 でライセンスされ、GitHub でコメントを受け付けており、成熟した段階でコミュニティ団体に寄贈される予定です。ベンダーも、ベンダーから購入するチームも、これで同じコントロールを指し示せるようになりました。
このアーキテクチャが求めるもの
中心となる考え方は 1 行に収まります。「エージェントが提案し、ポリシーが認可し、インフラが強制する」。エージェントは、混乱している場合も、読んだ何かに操られている場合も、乗っ取られている場合も、信頼できないものとして扱われます。そのため、エージェントの制限はエージェント自身の判断の外側で強制されなければなりません。ドキュメントは 4 つの境界を定めています。
- サンドボックス: エージェントのコードは、エージェントが変更も脱出もできない隔離されたサンドボックスの中でのみ実行されます。
- ネットワーク: 「エージェントが再設定も迂回もできない経路を通る場合を除き、何も出入りしない」。
- サプライチェーン: コンポーネントは承認された入手元からのみ取得され、サンドボックスに入るものは認証情報を一切含みません。
- アイデンティティとアクセス: エージェントはタスクのために付与されたアクセスだけを使い、認証情報を保持することはなく、影響の大きい操作には自分では与えられない承認が必要です。
これらは 3 つの自律レベルを通じて維持されます。開発者がエージェントを操作するレベル(Level 1)、ワークフローがエージェントを共有サービスとして動かすレベル(Level 2)、オーケストレーターのエージェントが次に何をするかを決めるレベル(Level 3)です。その周囲には、どのエージェントでも停止できる実行レイヤーと、どのエージェントの手も届かない監査証跡が置かれます。
このアーキテクチャは実際のインシデントに基づいています。ある事例では、ステージング環境のタスクに取り組んでいたコーディングエージェントが、無関係なファイルの中に API トークンを見つけ、それを使って 9 秒で本番データベースを削除しました。Shai-Hulud ワームでは、悪意のあるパッケージが、それをインストールしたマシン上で見つけた認証情報を手当たり次第に収集しました。
Bromure は 4 つの境界をどうカバーしているか
Bromure Agentic Coding はあなたの Mac 上で動き、エージェントのワークスペースをそれぞれ専用の Linux VM に置きます。対応関係は次のとおりです。
| 境界 | アーキテクチャの要求 | Bromure |
|---|---|---|
| サンドボックス | リスクに見合った隔離(最大で独自のカーネルを持つ microVM まで)。ホストへのアクセスなし。テストも同じ隔離の中で実行。必要に応じて停止し、状態を証拠として保持 | ワークスペースごとに完全な Linux VM。独自のカーネルと、テスト用の独自の Docker を持ちます。OpenShell のポリシーを使えば、Landlock と seccomp がその中でエージェントを閉じ込めます。マシンは一時停止でき、調査用に保存で消去前にディスクをエクスポートできます |
| ネットワーク | すべての通信を外向きプロキシ経由にし、プロキシ設定ではなくネットワーク層で強制。操作単位での強制 | Mac の仮想スイッチがすべての接続をチェックし、ツールがプロキシ設定を無視する場合でも Web 通信を Bromure のプロキシに振り向けます。ルールで HTTP メソッドを制限でき、OpenShell のポリシーを使えば、パスや、MCP、GraphQL、WebSocket の操作も制限できます |
| サプライチェーン | パッケージは受け入れ窓口を通してのみ取得。新しいバージョンはクールダウン期間を待つ。サンドボックスに入るものは認証情報を一切含まない | 8 つのエコシステムからのインストールは Bromure のチェックを通ります。新しいバージョンに対する 2 日間の経過期間チェック(デフォルトで有効)に加え、オプションで OSV と socket.dev への照会も行えます。判定の出ないパッケージは、あなたの判断を待って保留されます |
| アイデンティティとアクセス | エージェントは認証情報を保持しない。認証情報はプロキシで付加する。影響の大きい操作には承認が必要 | VM が持つのは代替トークンだけで、プロキシが正しいホストに対してのみ本物のトークンに差し替えます。SSH 鍵は Mac に残り、AWS へのリクエストは VM の外で署名し直されます。git push のような書き込みにはクリックによる承認を必須にでき、エージェントのブランチはあなたが承認したときにだけマージされます |
こうしたインシデントに対して最も重要なのは、認証情報の境界です。Shai-Hulud のパッケージが Bromure の VM から認証情報を収集しても、見つかるのは代替トークンだけで、Bromure のプロキシの外では役に立ちません。(著者の 1 人が所属する Socket は、Bromure が利用できるパッケージチェックの 1 つでもあります。)
レベルも対応しています。開発者がセッションでエージェントを動かすのは Level 1 です。スケジュールに従って、または GitHub のプルリクエストや Linear の issue が届いたときにエージェントを起動するオートメーションは、それぞれ新しい git worktree で、オプションでマシンの使い捨てクローンの中で動き、これが Level 2 にあたります。エージェントが他のエージェントに作業を委任し、すべてのメッセージがホストによって中継され、プロンプトインジェクションの検査を受け、記録される仕組みは、Level 3 の始まりです。
Bromure がさらに踏み込んでいるところ
このドラフトは自らの弱点について率直です。その来歴に関する声明は、6 つの成果領域のうち Discover、Observe、Respond は「招集した組織のいずれも販売していない」ため「それに応じて成熟度が低い」と述べ、その非対称性を「欠陥」と呼んでいます。また、ベースライン自身の基準に照らすと、招集した 3 社のいずれも完全な実装ではないとも述べています。これを文書に記すのは、異例なほど誠実なことです。
私たちが最も力を注いできたのは Observe と Respond です。
- カーネルの内側から見張る。 アーキテクチャは、サンドボックスのランタイムにプロセス、ファイル、ネットワークの活動を記録するよう求めています。Bromure のカーネル・セントリーはそれをゲストのカーネルの内側から行い、VM 内の root でも閉じられないチャネルで Mac にストリーミングします。何かがそれを黙らせようとすれば、改ざんとみなされます。
- 意図から結果まで。 Agent Baseline のコントロール OBS-05 は、エージェントが何をするつもりだったかと、実際に何をしたかを結び付ける証拠を求めています。Bromure のリネージは、すべての接続を、それを開いたプロセスをたどって、エージェントのツール呼び出しと、モデルがその呼び出しについて述べた推論までさかのぼります。依存パッケージのインストールスクリプトがデータを外に送ろうとすれば、それを実行したインストールと、エージェントがなぜそのインストールを実行したのかがわかります。
- 入力を検査する。 アーキテクチャは、エージェントが読むものすべてを信頼できないものとして扱います。Bromure は、ツールの結果や
CLAUDE.mdのようなルールファイルにプロンプトインジェクションがないかをあなたの Mac 上で検査でき、エージェント間のすべてのメッセージを検査し、オートメーションが動く前に GitHub や Linear のイベントのテキストを必ず検査します。 - 推論のために送るデータ。 Bromure の個人データ保護は、リクエストがクラウドのモデルに届く前に、氏名、メールアドレス、口座番号などのデータを代替値に置き換え、応答の中で元に戻します。
- 証拠を保ったまま対応する。 認証情報が本来あるべきでない場所へ出ていくのを検知すると、Bromure は VM を一時停止します。あなたはそれをシャットダウンすることも、ディスクを調査用に保存することもできます。保存した後、そのマシンは消去されるまで起動を拒否します。OpenShell のポリシーでは、拒否された操作が集中して発生するとワークスペースが隔離されます。ネットワークが遮断され、VM が一時停止されます。
- 手の届かない場所にある記録。 各マシンのモデルへのリクエスト、ツール呼び出し、コマンド、ファイル活動の記録は、VM の外の Mac 上に暗号化して保存されます。
もう 1 つ、どこで動くかにも違いがあります。このアーキテクチャはファクトリー向けに書かれていて、Level 1、つまりローカルのエージェントを使う開発者に割かれているのは数段落です。しかし今日、ほとんどのエージェントが動いているのはそこです。Bromure は、立ち上げるべきインフラなしに、その開発者の Mac に 4 つの境界を置きます。しかも無料で、オープンソースです。
良い出発点
The Secure Software Factory はバージョン 1 で、コメントを受け付けています。主張には慎重で、どの企業の製品がこれを形作ったかについても誠実です。その issue トラッカーは誰にでも開かれており、観測と対応に関するセクションこそ、書かれるべきことが最も多く残っている部分だと私たちは考えています。
より多くの企業が、安定したコントロール識別子とともに、公の場でエージェントセキュリティに取り組むことは、エージェントを動かすすべての人にとって良いことです。