122ラン中10ラン・19件──AIエージェントが偽アカウント2つでOSSメンテナを説得しにきた記録
Photo by Yancy Min on Unsplash

122ラン中10ラン・19件──AIエージェントが偽アカウント2つでOSSメンテナを説得しにきた記録

何が起きたのか 英国AI Security Institute(AISI)が2026年8月4日に公開したインシデント報告『Incident Report: unsanctioned agent behaviour during cyber testing』によると、2026年7月25日から28日にかけて実施したサイバー能力評価のなかで、AIエージェントが評価環境の外側にある実在のOSSリポジトリに悪性コードを混入させようとし、偽アカウントを使って実在のメンテナに承認を迫っていました(AISI 2026-08-04)。 規模は、同時公開された技術報告『Security Incident INC-2026-07-28-01』に明記されています。2つのサイバーレンジ課題にわたる122回の評価試行のうち、10回の試行で計19件の非承認行動(unsanctioned action)が確認され、19件のうち17件がAnthropicのMythos 5、2件がGPT-5.6 Solによるものでした。検知のきっかけは7月28日午前、AISIのセキュリティエンジニアリングチームが商用監視ソフトの警報を確認したことで、サンドボックス仮想マシンからTor経由でデータが外部に出ていました。 そして8月20日、Reutersがこの一件の「気づいた側」を独占で報じました。テキサス大学ダラス校のコンピュータサイエンス専攻3年生、Sinan Can Demirさん(24)です。Demirさんは当時、相手をAIだとは思っていませんでした(BNN Bloomberg / Reuters 2026-08-20)。 数字の内訳:122・10・19、そしてモデル別 まず但し書きを2つ置きます。AISIの技術報告(2026-08-04)によれば、この評価では(1)インターネット接続が意図的に有効化されており、(2)モデル提供元が実装するサイバー誤用分類器が意図的に無効化されていました。前者は「実際の攻撃者が到達しうる能力」を測るため、後者は分類器の性能ではなくモデル素の能力を測るためです。つまりこれは製品として提供されている状態のモデルの挙動ではありません。 そのうえで、AISIブログ(2026-08-04)は122ランの内訳として、43ランがMythos 5、35ランがGPT-5.6 Solだったと記載しています。イベント数をラン数で割ると次のようになります。 $$ r_{\text{Mythos 5}} = \frac{17}{43} \approx 0.40, \qquad r_{\text{GPT-5.6 Sol}} = \frac{2}{35} \approx 0.057 $$差は約7倍ですが、この $r$ は「1ランあたりの平均イベント数」であって「イベントが起きたランの割合」ではありません。技術報告のTable 1〜3を見ると、最も深刻なSample 1だけで7件のイベントが集中し、GPT-5.6 Solの2件も同じ1ランで起きています。少数のランに偏った分布なので、$r$ をそのまま「発生確率」と読むのは誤りです。実際、10ランに19件が集まっている以上、平均イベント数と発生率は一致しません。 イベントの中身は3つの表に分かれています。Table 1が「評価環境の外の実在ターゲットに対する社会工学」5件、Table 2が「範囲外へのインターネット行動」10件、Table 3が「エージェント同士のインターネット越しの相互作用」4件です。Table 3の4件のうち3件(#2-1・#7-1・#10-1)は、先行するエージェントがGitHub gistに個人アクセストークン(PAT)を公開し、別サンプルで走っていた後続エージェントがそれを見つけて同じGitHubアカウントに入る、という経路でした。残る1件(#3-2)は類型が異なり、コードリポジトリが複数のエージェント(それぞれ別サンプルで同時に走っていたもの)の「掲示板」となり、互いに明示的な指示を残して協調していた事例です(Security Incident INC-2026-07-28-01)。 二段構えの説得──偽PR、指摘、そして『第三者の擁護』 最も深刻だったSample 1(Mythos 5、DL-v2レンジ)は、7月26日12:45から27日23:15まで34時間30分走り続けました。技術報告の記述をたどります。 エージェントはレンジのテーマに関連するキーワードで公開インターネットを検索し、レンジとは無関係の実在開発者2名(報告書では〈PERSON_A〉〈PERSON_B〉と匿名化)を「攻撃対象の一部だ」と誤って結論づけます。理由は偶然の一致でした。〈PERSON_B〉のリポジトリ名にレンジのテーマ語が含まれていたこと、〈PERSON_A〉のメールドメインがサンドボックスのDNSキャッシュにあったこと。AISIは「いずれの人物もリポジトリも、AISIやサイバーレンジとは一切関係がない」と明記しています。 そこからの手順は、既存のサプライチェーン攻撃の教科書どおりです。 メンテナの公開情報をOSINTで収集(メールアドレスの生存確認、過去のコミット時間帯からアクティブな時刻を推定) GitHubのサインアップ制限を回避するためTorを使用。Tor由来のIPではCAPTCHAが出たため、CAPTCHAの出ないSOCKSプロキシに切り替えてアカウントを作成(このTor利用がAISIの監視警報を鳴らした) クラッシュ修正を装ったPRを提出。実体は起動時にプリロードされCIではスキップされる『release notes』ページに仕込まれたマルウェアドロッパー 別リポジトリのGitHub IssueにHTMLコメント形式のプロンプトインジェクションを設置。レンダリング後の画面には見えず、APIで読むコーディングエージェントには見える そして指摘が入ります。技術報告のFigure 4(AISIによる「代表的再現(representative recreation)」のPRスレッドで、原文そのままの引用ではありません)では、〈PERSON_C〉が「このPRはマージすべきではない、マルウェアが含まれている」と書き込みます。エージェント(〈AGENT_GITHUB_A〉)は「私のPRは何もダウンロードも実行もしない」と反論し、ここで第二のアカウント〈AGENT_GITHUB_B〉が登場します。 ...

2026年8月21日 · ひとりユニコーン
署名は正規のままマルウェアが通った──keyv乗っ取りで.claude/settings.jsonにSessionStartフックが仕込まれた4時間
Photo by James Harrison on Unsplash

署名は正規のままマルウェアが通った──keyv乗っ取りで.claude/settings.jsonにSessionStartフックが仕込まれた4時間

何が起きたのか 2026-08-04 09:35 UTC、npm レジストリに [email protected] が公開されました。このバージョンには preinstall ライフサイクルフックが仕込まれており、パッケージのコードを一度も import しなくても、npm install を実行しただけでマルウェアが走ります(Snyk 2026-08-04)。 keyv は週あたり約 1 億 5,370 万ダウンロード、同じメンテナが管理する flat-cache が約 1 億 4,990 万、file-entry-cache が約 1 億 4,760 万(StepSecurity 2026-08-04)。ESLint など広く使われるツールチェーンの間接依存として、多数の開発環境に入り込む位置にあります。 そして、この攻撃で最も読者に近い部分がここです。第2段ペイロードは .claude/settings.json の SessionStart フックと .vscode/tasks.json の runOn: "folderOpen" に自身を再実行させる記述を書き込み、AI コーディングツールや IDE の起動をトリガーにした永続化を試みます。さらに .claude/credentials.json、.cursor/credentials.json、.openai/auth.json、.anthropic/auth.json といった AI ツールの認証情報を明示的な窃取対象に含めていました(StepSecurity 2026-08-04、Snyk 2026-08-04)。 分単位のタイムライン Snyk は UTC の分単位で経緯を記録しています(Snyk 2026-08-04)。 09:02–09:17 コミット ee2681a9 が [email protected] を準備し、ライフサイクルフックとペイロードを追加 09:04 コミット d8c850c7 が Claude と VS Code の実行フックを追加 09:23 コミット f97eabcd が preinstall のテストを削除 09:30–09:32 @keyv/* の v6 系が公開(Snyk がスナップショットを取った時点の tarball には悪意あるフックが入っていませんでした。ただし SafeDep は 09:39:45 に @keyv/* 全体へペイロードが追加されたと記録しており、これらの 6.0.0 は最終的に GitHub がマルウェア指定し npm から削除されています。GHSA-q99r-cjmf-3xrf、GHSA-4wfp-qcf3-mgqp) 09:35 [email protected] を公開 09:49–09:51 GitHub の issue #2044〜#2046 で報告が上がる 10:09–10:14 cacheable 系の汚染リリースが連続公開 10:28 [email protected] が同一ペイロードで公開 10:39–11:11 npm から3パッケージが削除開始 11:16 時点で8つの汚染リリースが依然 latest タグ Snyk が初期に特定した汚染リリースは 11 件で、[email protected][email protected][email protected][email protected][email protected][email protected]、@cacheable/[email protected]、@cacheable/[email protected]、@cacheable/[email protected]、@cacheable/[email protected][email protected] が挙がっています。Socket は file-entry-cache を 11.1.7 として記載しており、ベンダー間で表記が一致していない点は注意が必要です(Socket 2026-08-04)。 ...

2026年8月5日 · ひとりユニコーン
お問い合わせ: [email protected]