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

彼らはあなたのエージェントをリストに加えた

Gen Digital が 9 月 8 日に公開した調査によれば、市販のインフォスティーラー八ファミリーが AI コーディングエージェントのローカルデータを集めるようになりました。アクセストークンとリフレッシュトークン、MCP の設定、会話データベース、プロンプト履歴、プロジェクトの痕跡です。Claude、Cursor、Codex のどれにも欠陥は関わっていません。スティーラーは遠隔管理された収集ルールを持ち歩くので、エージェントのフォルダを追加するのは、すでに感染済みのマシンへ設定を配信するだけの作業でした。Bromure Agentic Coding はそのフォルダを VM の中へ移し、brm- の偽物で満たし、リフレッシュトークンはゲストが決して持てないホスト側に置いたままにします。

あなたのコーディングエージェントには、誰かが見つけるべきバグなど一つもありません。 誰かがファイルの置き場所に気づき、すでに侵害済みの数十万台のマシンに向けて、 設定を一行だけ配信したのです。

9 月 8 日、Gen Digital の脅威リサーチチームを率いる Jan Rubín が、 短い記事 で華のない発見を公開しました。市販の情報窃取マルウェア八ファミリーが、いまや AI コーディングエージェントのローカルデータを収集しています。ファイルをコピーする。 技術としてはそれだけです。

名指しされた標的は、今年の開発者が何を入れたかのアンケートのように読めます。 Claude、Cline、Codex、Continue、Cursor、OpenCode、Kilo。Amatera は Cline と Continue を狙いました。Remus は Claude、Cursor、OpenCode を狙いました。 CallbackBeaver は Cursor と Claude を加え、Gen は三十日間の窓で 5,000 を超える 検体を数えています。BeeStealerSTG StealerHydraStealerAPEX StealerOtter Stealer も、みな同じことの別版をやっています。macOS 上の 変種は Djinn Stealer で、そのリストが一番長い。Claude、Codex、Gemini、Cline、 OpenCode、Kilo です。

Rubín は自分が何を記述しているかに慎重です。「この活動は、Claude や Cursor や Codex に新しく見つかった欠陥を指しているのではありません」と彼は書きます。 「そうではなく、犯罪者が既存のスティーラーを適応させ、予測できるローカルフォルダに 置かれた価値あるファイルを集めていることを示しています。」

リストが一行だけ長くなった

この変更は、作った側にほとんど何のコストもかけませんでした。

現代のスティーラーは、何を持ち去るかをハードコードしません。遠隔管理された収集 ルール、つまりフォルダ、ファイル名、データベースファイル、拡張子、検索上限を並べた 設定ブロブを持ち、それをオペレーターのインフラから取ってきます。新しい標的を加える というのは、Cyber Press がまとめた とおり、オペレーターが「パスやファイル名やデータベースのルールを更新するだけで、 必ずしもマルウェアを作り直さずに、新しく人気の出た AI ツールをマルウェアの収集 リストに追加する」ということです。

これはプロダクトの判断でした。誰かが、いまどのフォルダに売り物になるものが入って いるかを眺め、いくつかのパスを設定に書き、そしてこれらのファミリーのどれかをすでに 走らせていたマシンが、次の通信でエージェントのデータを送り始めた。オペレーターは 何も再感染させていません。ディスク上のバイナリはそのままなので、検出シグネチャも そのままです。

Gen は 2026 年上半期に 330 万人のユニークな保護対象ユーザーでインフォスティーラーの 検出を記録し、月次の合計は 50 万件を超えています。Amatera と Remus だけでも、三か月で 数万人のユーザーに現れました。オペレーターが新しいルールを配信した先は、その母集団です。

設定の配信であって、キャンペーンではないオペレーター — 収集ルールブラウザ、Cookie、ウォレットSlack、Discord、VPN プロファイルssh 鍵、クラウド保存先のパス+ AI エージェントのディレクトリ9 月、書き足された一行次の通信すでに感染済みのマシン330 万ユーザー、2026 上半期月 50 万件超の検出ディスク上のバイナリは不変再感染は不要新しいシグネチャも出ないノート PC から出ていくものアクセス + リフレッシュトークンMCP サーバーの認証情報会話データベースプロンプト履歴プロジェクト名、ソースの残りアカウントと契約の詳細八ファミリー、一四半期Amatera · Remus · CallbackBeaver · BeeStealer · STG · Hydra · APEX · Otter — macOS では Djinn
AI コーディングエージェントを戦利品リストに加えるのに、オペレーターは新しいビルドを一つも必要としませんでした。市販のスティーラーは、遠隔管理された収集ルール(フォルダ、ファイル名、データベースファイル、拡張子)をオペレーターから取得します。オペレーターがエージェントのディレクトリを書き足せば、すでに感染しているマシンはどれも、次の通信からそれを集め始めます。ディスク上のバイナリは変わらないので、マシンの様子は何も違って見えません。

そのフォルダに何が入っているか

ルールが何を集めるかについての Gen の目録は具体的です。「アクセストークンと リフレッシュトークン、MCP の設定に保存された認証情報、プロンプト履歴、会話 データベース、アカウントの詳細、そして開発者が取り組んできたプロジェクトの痕跡。」

このリストは、性質の違う二種類の損失を一つの名前でまとめています。

一つ目はアクセスです。アクセストークンはセッションを一つ買います。リフレッシュ トークンはセッションを複数買います。有効であり続けるかぎりずっとです。誰かが、 それを生んだセッションより長生きするように設計したからです。その性質こそが盗む価値を 生み、だからこそ一つのセッションを失効させても泥棒は元の位置に居座ります。同じ フォルダのすぐ隣には、あなたの MCP 設定の認証情報があり、それはまた別のものを開けます。 社内サービス、チケットシステム、HTTP の MCP サーバーの背後にあるデータベースです。

二つ目の損失はインテリジェンスで、こちらは新しい。あなたのプロンプト履歴は、勤務先の インフラを案内するガイドツアーです。Cyber Press は率直に書いています。盗まれた プロンプト履歴は「リポジトリ名、社内ホスト名、インフラの詳細、セキュリティ統制、 API シークレット、事業計画」を明かす、と。ある火曜日、あなたはサービスの名前、 クラスタの名前、移行が止まっている理由を打ち込み、それから接続文字列の入った断片を 貼り付けて、なぜこれが失敗し続けるのかを尋ねます。自分のチャットログのために脅威 モデルを書いたことなど、一度もないでしょう。

それは検索結果からやってくる

スティーラーを送り込むのにもゼロデイは要りません。5 月、EclecticIQ は 偽のインストールページを本物より上位に押し上げた キャンペーンを記録しました。claudecode.co.comgeminicli.co.com は、一瞥では 通ってしまう程度にベンダーのドキュメントを似せています。ページはコピー用の PowerShell 一行を差し出します。実行すれば欲しかったツールが表向ききちんと入り、その裏で 隠された二つ目のコマンドがファイルレスのスティーラーをメモリへ直接引き込みます。 入り際に ETW と AMSI を切り、それからブラウザ、Slack、Teams、Discord、VPN クライアント、 SSH 鍵、クラウド保存先のパスを刈り取ります。同じアクターは同じ手を Node.js、 Chocolatey、KeePassXC、Monero にも使いました。

つまり被害者は、コーディングエージェントを検索して一番上の結果をクリックした開発者 です。四か月後、その開発者はエージェントのトークンと会話履歴まで渡している。収集 ルールが一行伸びたからです。

同じ掃討を、Bromure のワークスペースの中で

Bromure Agentic Coding は、コーディングエージェントをそれぞれあなたの Mac 上の ハードウェア仮想化された Linux VM で走らせ、本物の秘密はすべてその境界のホスト側に 置きます。Gen の収集リストを一項目ずつ取り、ワークスペースに対して走らせてみましょう。 スティーラーがホストで勝ち、ルールを読み、一つずつ取りに行くと仮定します。

アクセストークンとリフレッシュトークン。 API キーではなく Claude や ChatGPT の サブスクリプションを使う場合、ログインは作業用 VM の中では決して起きません。Bromure は ワークスペースのフォルダをマウントせず、認証情報の差し替えマップも持たない使い捨ての 登録用 VM を起動し、その中で本物の claude login を実行し、得られた OAuth トークンを ホスト側で捕まえ、暗号化し、VM を破棄します。以後、ゲストは決定的な偽の認証情報を 持つ API キーモードで走ります。Claude には偽の ANTHROPIC_API_KEY、Codex には ~/.codex/auth.json に有効期限がはるか先の偽 JWT を入れておき、クライアントが自分で 更新しようとしないようにします。更新するのはホストで、期限のおよそ五分前に、走って いる VM ごとに一度ずつ行います。マニュアルはその帰結をはっきり書いています。 ゲストはリフレッシュトークンを決して持たない。

MCP の設定に保存された認証情報。 MCP の bearer も同じ扱いを受け、設定ペインが そう言っています。HTTP トランスポートの MCP サーバーの本物のトークンはホストに残り、 エージェントが読む設定には brm-mcp_… のプレースホルダが入り、プロキシが線上で本物の 値に差し替えます。スコープはそのサーバーのホストに完全一致またはサブドメイン一致で 限られ、ほかのどこにも及びません。MCP ペインのこの欄には VM には決して送られません — プロキシが差し替えます という注記が付いています。

鍵に見えるそれ以外のすべて。 あなたが設定する認証情報はどれも、VM の中では構造を 保つ偽物に置き換わります。本物の値とインストールごとのソルトから導かれるので、 バリデーターが期待する形を保ち、セッションをまたいでも安定します。 sk-ant-api03-brm-…sk-brm-…xai-brm-…brm-k8s-…brm-docker-…brm-db-…。差し替えのチャネルは一方向にしか流れません。ホストはゲストへ偽物を書き 込めますが、ゲストが本物の値を要求して取り戻す呼び出しは存在せず、VM 内のエージェントは brm- の接頭辞を持たない認証情報の書き込みを拒みます。

会話データベース、プロンプト履歴、プロジェクトの参照、キャッシュされたソース。 これらは本物で永続的です。コードの仕事には永続的な状態が要るからです。それらは ワークスペース VM 自身の永続ホームフォルダに、ワークスペースごとに一つ、ハイパー バイザーの向こう側に置かれ、収集ルールが名指しする macOS のホームディレクトリには ありません。「ユーザープロファイルからエージェントの設定ディレクトリをコピーせよ」と 言うルールは、エージェントの入っていないユーザープロファイルを見つけます。

ホスト自身の保管庫。 ホストが保持するものは、インストールごとの 256 ビットの マスターキーのもとで AES-GCM により保存時暗号化されます。その鍵は macOS の Data Protection キーチェーンにあり、アプリの署名 ID に限定され、iCloud 同期は無効です。 アプリは何もアップロードも同期もしません。Application Support フォルダをコピーしても、 その Time Machine バックアップを復元しても、この Mac のキーチェーンのエントリがなければ 手に入るのは暗号文だけです。

ワークスペースの中で走らせた収集ルールルールが求めるもの見つかるものアクセス + リフレッシュトークン偽のキー。VM の中にリフレッシュトークンは存在しないホストが期限の約 5 分前に、すべての VM の分をまとめて更新MCP 設定brm-mcp_…本物の bearer は線上で差し替え、そのホストにだけAPI キー、クラウド認証情報sk-ant-api03-brm-… · brm-k8s-… · brm-db-…形は正しく値は違う。スコープの外では無力会話 DB、プロンプト履歴本物で永続 — ただし VM のホーム、あなたのではないルールの中のパスは、あなたの Mac にないフォルダを指す
Gen Digital の収集リストを一項目ずつ、Bromure Agentic Coding のワークスペースに対して走らせたところ。サブスクリプションのトークンはホスト側にあり、更新もホスト側で行われるので、ゲストはリフレッシュトークンを決して持ちません。エージェントの設定にある MCP の bearer は brm-mcp のプレースホルダです。API キーは構造を保つ偽物です。会話データベースとプロンプト履歴は本物で、ルールが指す macOS のホームディレクトリではなく VM の永続ホームに置かれています。

掃討が VM の中で起きるとき

スティーラーは逆から来ることもあります。依存関係や汚染された指示を通じてエージェント 自身に引き込まれ、ワークスペースの中で走る場合です。そのときは掃討が成功し、そして 偽物を集めます。転ぶのはアップロードのところです。

偽物にはそれぞれ正当な宛先のファミリーが一つだけ、鋳造されたときのホストスコープが あります。だからプロキシは、すべてに対して走らせても安いほどの Aho-Corasick オートマトンで、出ていくリクエストのヘッダーと本文を残らず走査し、行き場所でないところへ 向かう偽物を探します。当たれば一バイトも転送せずに HTTP 451 で拒み、その場で VM を 一時停止し、シャットダウン調査のために保存(先にディスク・ホーム・共有 フォルダをフォレンジック用にエクスポート)、あるいは自己責任での続行を提示する アラートを上げます。イベントは Security Timeline に赤い Credential brokering の行 として残り、アプリはそのワークスペースを侵害済みと記し、次回の起動には 消去して起動が必要になります。

プロキシは、差し替えられていない本物らしいシークレットが外向きの通信に出ることも 知らせます。sk-ant-ghp_AKIA のような既知の接頭辞を持つ Bearerx-api-key の値、そして二十文字以上の不透明なトークンです。これらは Trace Inspector と bromure-cli trace leaks に現れます。たいていは、誰かが本物のシークレットを手で VM に 貼り付けたという意味で、それが内側から境界を無効にできる唯一の方法です。

到達可能性が三つ目の検査です。どのワークスペースも、アクション、プロトコル、ホスト または CIDR、ポート、そしてウェブトラフィックについては個々の HTTP 動詞までを覆う 順序付きの出口ファイアウォールを持ち、どの規則にも当たらないトラフィック用の セグメントコントロールが付いています。新しいワークスペースは、どの規則にも当たらない ものを許可します。これを拒否にし、仕事に必要なものを並べれば、スティーラーの C2 ホストはそのリストに載っていません。ゲストの外側にある二つの部品がそれを強制します。 仮想ネットワークスイッチが宛先 IP と DNS から拾ったホスト名ですべてのフローを照合し、 プロキシが TLS のサーバー名でもう一度照合します。規則の編集は、再起動なしで実行中の セッションに届きます。

状態はあなたのホームにある予測できるパス、あなたとして走るものなら何でも読めるエージェントのディレクトリアクセストークン · リフレッシュトークンMCP の bearer トークン会話データベースプロンプト履歴 · プロジェクト名常駐スティーラーがルールを読み、フォルダをコピーするバイナリは変わっていない。変わったのはパスの一覧だけアップロード更新できるアクセスと、資産の地図状態は VM の中にあり、しかも囮あなたの macOS ホームには名指しできるエージェントがないワークスペース VM — 永続ホーム偽のキー · リフレッシュトークンなしbrm-mcp_… · brm-k8s-… · brm-db-…会話データベースと履歴、ハイパーバイザーの向こう本物はホスト上で AES-GCM 暗号化、鍵はキーチェーンvsock 8443 — 唯一の出口ホストのプロキシ — リクエストごとに参照出口ファイアウォール · ホスト、ポート、HTTP 動詞差し替え · 本物の値は一つのホストにだけリクエストごとに一行のトレース、あなたのマシンにスコープ外へ向かう偽物 → HTTP 451、VM 一時停止、タイムラインの行
エージェントの状態を置く場所は二つあります。ふつうの Mac では、トークン、MCP の認証情報、会話履歴がユーザープロファイルの予測できるフォルダに置かれ、それこそが収集ルールの名指しする場所であり、あなたとして走るものなら何でも読めます。Bromure Agentic Coding のワークスペースでは、同じ状態が VM の永続ホームに置かれ、その中の認証情報は brm- の偽物で、外への唯一の経路はホストのプロキシへ向かう vsock ポート 8443 だけです。そのプロキシはファイアウォールを確認し、認証情報を差し替え、スコープの外へ向かう偽物はすべて拒みます。

エージェントをコピペで入れているなら

どこから入れたかを確かめてください。EclecticIQ のキャンペーンは claudecode.co.comgeminicli.co.com を本物のページより上に押し上げ、 訪問者に、本物のツールを入れつつスティーラーをメモリへ引き込む PowerShell 一行を手渡しました。それが自分のやったインストールに当てはまるなら、マシン 全体が露出したものとして扱ってください。鍵を一本ローテーションするのではなく サブスクリプションのセッションを失効させ、MCP 設定のトークンをすべて入れ替え、 自分のプロンプト履歴を攻撃者の目で読み直すことです。そこにあるホスト名と リポジトリ名だけは、ローテーションできません。

標的を小さくする二つの設定

Claude や ChatGPT のサブスクリプションはワークスペースエディタから登録し、 OAuth トークンがホストで捕まえられ、ゲストが偽のキーで走るようにします。 そのうえで Guardrails を開き、未一致のトラフィック拒否にし、 仕事に必要なものを並べます。allow web api.github.comallow web registry.npmjs.orgdefault deny。セッションのあとに bromure-cli trace hostnames my-workspace を実行すれば、エージェントが 到達したホストが件数付きで全部見えます。

戦利品は普及を追う

スティーラーがフォルダを覚える順番は予測できます。ブラウザのプロファイル、次に 暗号通貨のウォレット、次に Discord と Slack のトークン、次に VPN のプロファイル。 どれも、それが属していたものが当たり前になってから一年か二年あとに収集ルールへ 入りました。この遅れは、設定を一行書く価値が出るだけの台数がそのフォルダを持つまでに かかる時間です。

コーディングエージェントは今年その閾値を越えました。参入価格は設定更新一回、八つの ファミリーにまたがり、一つの四半期のうちに。これを閉じるパッチはありません。何も 壊れていないからです。フォルダはあるべき場所にあり、あるべきものを収めていて、しかも そのマシンではあなたのブラウザとメールも動いています。

結末を変えるのは、そのフォルダをコピーする手間よりも価値の低いものにすることです。 エージェントの状態をハイパーバイザーの向こう側に置き、認証情報のファイルを正しい形と 違う数字の値で満たし、本物は更新の起きるホストに置いておくことです。

あなたのコーディングエージェントは、ふつうのファイルをふつうの場所に置くふつうの アプリケーションであり、だからこそリストに載りました。次のファミリーが設定を更新する 前に、それらのファイルにどれだけの価値を持たせてよいかを決めてください。 Bromure Agentic Coding をインストールして、囮をコピーさせましょう。