すべての投稿に戻る
公開日 · 著者 Renaud Deraison

あなたのコーディングエージェントが、侵入者向けの警報を鳴らした

Sophosは1週間分のエンドポイント・テレメトリを調べ、AIコーディングエージェントが、攻撃者を捕まえるために作られたのと同じルールを発動させていることを突き止めました。ブロックされたアクティビティの半分以上は認証情報へのアクセス——エージェントがブラウザの保存済みパスワードを復号し、Windowsの認証情報の金庫を吸い出し、ブラウザのプロセスを終了させてその保管領域を読み取っていました。この振る舞いは、誰が始めようとリスクがあります。エージェントがあなたのマシン上で、あなたとして、あなたの到達範囲で動くからこそ、それらの保管領域に届くのです。エージェントをハイパーバイザーひとつ分だけ遠くへ移せば、エンドポイント上には届くものが何もなくなります。

Sophosは1週間分のエンドポイント・テレメトリを引き出し、コーディング エージェントが、侵入者を捕まえるために作られたルールを発動させている のを見つけました。ブロックされたアクティビティの56パーセントは認証情報 へのアクセス——エージェントがブラウザの保存済みパスワードを復号し、 Windowsの認証情報の金庫を吸い出し、ブラウザのプロセスを終了させて その保管領域を読み取っていました。エージェントに悪意はまったくありません。 あなたのマシン上で、あなたとして、あなたが触れられるすべてを伴って動く からこそ、それらの保管領域に届くのです。

開発者がClaude Codeを開き、何かを調べるよう頼んで、コーヒーを取りに行き ます。戻ってくると、エンドポイントのエージェントがそのセッションにフラグを 立てています。あるプロセスが、たった今WindowsのシステムAPIを使って、 ブラウザの保存済み認証情報ブロブを復号したのです。それは教科書どおりの インフォスティーラーの動きです。しかし今回はそれが、頼まれたことを まさに実行しているコーディングエージェントでもあります——ログインの 向こうにあったページを、実用的なやり方で、ブラウザがすでに保存していた パスワードを解錠して読んだのです。

Sophos X-Opsは2026年6月の1週間を、こうした衝突の集計に費やしました。 Windowsエンドポイント上の振る舞い検知エンジンから、ブロックした ルールヒットと沈黙のルールヒットを取り、マシン単位で数え、 MITRE ATT&CK戦術 ごとに並べました。その図は身も蓋もありません。ブロックするルールのうち、 認証情報アクセスが56.2パーセントを占め、実行が28.8パーセントでした。 最大の単一の認証情報ルール——このグループの42.6パーセント——は、プロセスが Windows Data Protection API、すなわちDPAPI、つまりプログラムが以前に 保存したシークレットを解錠するOSサービスを使ったときに発動します。それは、 ブラウザの暗号化されたパスワードファイルを平文へ戻すために インフォスティーラーが行う呼び出しです。そして今や、スキルがログイン済みの ページを欲しがるときに、コーディングエージェントが行う呼び出しでもあります。

攻撃者の振る舞い、善良な意図、同じテレメトリ

Sophosが捉えた連鎖の各ステップは、開発者なら見覚えのあるツールです。 「スキルパック」——エージェントにインストールする既製の能力の束——である GStackは、/browseスキルを同梱しています。エージェントがそれを使うと、 プロセスツリーはbash → browse.exe → node → PowerShellと走り、その PowerShellがSystem.Securityを読み込み、ブラウザの保存データに対して DPAPIのUnprotectを呼び出します。Sophosはその連鎖がClaude Codeの下で 走っているのを捉えました。同じ週の他の場所では、Windows資格情報マネージャー を列挙するcmdkey /list、認証情報ファイルを自由に読めるようにするために PIDでブラウザのプロセスを狙うtaskkill、Pythonのインストーラーを取ってくる certutilbitsadmin——署名済みのWindowsユーティリティ2つ——、そして 次回ログイン時に実行されるようスタートアップフォルダーへスクリプトを書き込む PowerShellがありました。

「コーディングエージェント」という言葉を抜いてそのリストを読めば、それは 侵入です。認証情報のダンプ、環境寄生(living-off-the-land)バイナリ ——見慣れないものが何も現れないよう攻撃者が借りる、署名済みのOSツール——、 そして永続化の足がかり。振る舞いエンジンがそのすべてに発動したのは正しい ことでした。Sophosは結論について慎重です。これは「初回のパス、短い シグナルのダンプ」であって全数調査ではなく、検知はエージェントが悪意ある ことを意味しません。それが意味するのは、もっと狭く、もっと長持ちすることです。 これらの行動の一部は、誰が始めようとリスクがあり、彼らの言葉を借りれば 「AIエージェントがそれを行ったという事実は、それを安全にはしない」のです。

ブロックされたエンドポイント・アクティビティ · 1週間 · MITRE戦術別認証情報アクセス56.2%実行28.8%妨害 (AAP)4.1%その他すべての戦術各<4%認証情報グループの内訳DPAPIによるブラウザ復号認証情報ヒットの42.6% · 単一ルール他に: cmdkey /list(認証情報の金庫)taskkillでブラウザPID、そして保管領域を読む
1週間分のWindowsエンドポイント・テレメトリを、ブロックするルールのうちMITRE戦術ごとに示したもの。認証情報アクセスが支配的です。エージェントがDPAPIでブラウザの保存済みパスワードを復号し、cmdkeyでWindowsの認証情報の金庫を吸い出し、ブラウザのプロセスを終了させてその保管領域を読み取ります。これらのルールは侵入者を捕まえるために作られましたが、侵入者と同じ到達範囲で正当な作業をするコーディングエージェントに対して発動しました。

問題は到達範囲であって、意図ではない

同じルールが泥棒とアシスタントの両方を捕まえるのは、通常のセットアップ では両者が同じ場所に立っているからです。エージェントはあなたのユーザー アカウントとして、あなたのマシン上で動きます。そのアカウントは、あなたが 保存したのだからブラウザの保存済みパスワードを開けます。その金庫は あなたのものだからWindows資格情報マネージャーを読めます。あなたが実行する どんなプログラムでもできるのだから、スタートアップフォルダーに書き込み、 certutilを呼べます。エージェントは起動したその瞬間に、あなたの周囲権限の すべて——あらゆるシークレット、あらゆる署名済みツール、ディスクの書き込み 可能なあらゆる片隅——を受け継ぎます。プロンプトインジェクション、汚染された スキル、あるいは度を越した正当なタスクは、そのすべてを手にすることになります。

だからこそSophosは、難しい部分を検知ではなくポリシーとして枠づけます。 「エージェントはエンドポイント上で何を許されるべきか。どんな境界を 強制すべきか」。彼らのチューニング助言はルールを2つに分けます。あるものは、 狼少年をやめるよう、エージェントの既知良性シグネチャを学ぶべきです。他の ものは「発動し続けるべきだ。捕まえるアクティビティは、人間が始めようと エージェントが始めようとリスクがあるからだ」——DPAPI復号や認証情報の金庫の ダンプがその中に含まれます。そしてそれは、防御側を本物の板挟みに残します。 エージェントを黙らせるために認証情報ルールを抑制すれば、同一の呼び出しを するインフォスティーラーに対して目が見えなくなります。発動し続けさせれば、 キューは自社の開発者がインストールしたツールで埋まります。どちらの選択も 良くありません。どちらも、エージェントがシークレットの隣、エンドポイント上に 住まなければならないと前提しているからです。

エージェントを移せば、開ける金庫がそこにない

その板挟みは、エージェントがシークレットの隣に住んでいる間だけ成り立ちます。 Bromure Agentic Codingは、各コーディングエージェントを 使い捨てのLinux VMの中で、あなたのMacからハイパーバイザーひとつ分だけ 離して動かします。エージェントの世界はそのVMです。あなたのmacOS Keychainは その中にありません。あなたがパスワードを保存したブラウザのプロファイルも、 その中にありません。Windows資格情報マネージャーも、ホストのスタートアップ フォルダーも、終了させて漁るためのホストのブラウザプロセスもありません。 GStackの/browseがやるように、スキルが保存済みパスワードの保管領域に 手を伸ばすと、その手はそれらのパスワードを一度も保持したことのない真新しい VMの中に着地します。呼び出しは走れますが、持ち去る価値のあるものは 何も見つかりません。

残るのは、作業をこなすためにエージェントが必要とする認証情報です——モデル 向けのAPIキー、ブランチをプッシュするためのGitHubトークン、デプロイのための AWSシークレット。それらをVMに渡せば、遠ざかったはずの金庫を作り直すだけ です。Bromureは渡しません。ホスト上のman-in-the-middleプロキシが、VMと 外の世界のあいだの回線上に座ります。VMの中では、エージェントは偽物しか 持ちません——本物のキーがあるべきところに、brm_…というプレースホルダー 文字列があります。エージェントがapi.anthropic.comgithub.comへ リクエストを出すと、プロキシは出ていく途中で偽物を本物の値に入れ替え、 戻ってくる途中で入れ替え直します。本物のシークレットは、それを必要とする たった1ホップのあいだだけ存在し、VMのメモリには決して入りません。自分の 環境の中で見つけられるものすべてを復号するエージェントは、プレースホルダー を手に去っていきます。

ホスト上のエージェント · あなたとしてコーディングエージェントあなたのユーザーアカウントで動く動く場所から到達可能ブラウザの保存済みパスワード(DPAPI / Keychain)OSの認証情報の金庫 · cmdkey /listスタートアップフォルダー · 署名済みLOLBinsEDRルールが発動——インフォスティーラーと同じ呼び出し。抑制するか、溺れるか。使い捨てVMのエージェント · BROMUREコーディングエージェントハイパーバイザー1つ分先 · 偽物しか持たない動く場所から到達可能ホストのパスワード保管領域 — 存在しないホストの認証情報の金庫 — 存在しないエージェント自身の環境 — 偽物(brm_…)ホストのプロキシが偽物→本物を回線上でのみ入れ替える。本物はVMに決して入らない。
左:エージェントはあなたとしてホスト上で、あなたの周囲権限の中で動きます——ブラウザのパスワード保管領域、OSの認証情報の金庫、スタートアップフォルダー、署名済みのダウンロードツール。正当な手の伸ばし方とインフォスティーラーの手の伸ばし方は同じ呼び出しなので、エンドポイントのルールはどちらでも発動します。右:Bromureはエージェントを使い捨てのVMで動かします。ホストの保管領域は存在せず、エージェントが使う認証情報は、ホストのプロキシが回線上でのみ本物に入れ替える偽物です。攻撃者の形をした呼び出しは依然として走りますが、持ち去るものが何もない場所に着地します。

人間をループに留める2つのルール

分離はシークレットを到達範囲の外へ移します。さらに2つのコントロールが、 本物のシークレットがそもそもいつホストを離れてよいかを決めます。すべての 認証情報の入れ替えは、承認を要求するよう設定できます——偽物から本物への 置換が一時停止し、本物の値が出ていく前に、あなたのMac上のダイアログが尋ねます。 SSHキーやAWSリクエストなら、5分間、1時間、あるいはセッションの残りのあいだ だけ許可し、それからまたロックされます。そしてプロキシ経由でつながれた データベース——MongoDB、ClickHouse、Elasticsearch——については、ガードレールが 回線上の実際の操作を読み、破壊的なものをブロックできます。そのため、 エージェントが自分で自分を納得させて出したDELETEは、認証情報が入れ替え られた後でさえ、本物のエンドポイントには決して届きません。

これらのどれも、エージェントに行儀よくするよう求めてはいません。エージェントが 攻撃者の形をしたこと——保管領域を復号し、金庫を吸い出し、ブロックされた ダウンロードを再試行すること——をするかもしれないと前提しています。Sophosが たった今、本物のエージェントがまさにそれをするのを見たからです。設計は、 それが起きたとき、保管領域が空で、キーが偽物で、破壊的なクエリが入り口で 止まるよう決めています。

エージェントは今や、あなたの防御が止めるよう調整された当のものと同じように 振る舞います。そして、行儀よくするよう頼んでもそれは直せません。直すには、 彼らが立つ場所を変えます。保存済みパスワードのない使い捨てのマシン、偽物で いっぱいの金庫、本物のシークレットをホストに留めるプロキシをエージェントに 与えれば——Sophosのダンプを光らせたテレメトリは、空っぽの部屋を漁る プロセスになります。インストールし、リポジトリに向けて、 欲しいものへ何でも手を伸ばさせてください。