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

エージェントが捏造したパッケージ

テルアビブ大学、テクニオン、Intuit の研究者が HalluSquatting を公開した。攻撃者はコーディングエージェントを繰り返し探り、どのパッケージ名・リポジトリ名・スキル名を安定して捏造するかを突き止め、その捏造名を登録して待つ。あなたが本物を求めると、エージェントは代わりに攻撃者版を取得し、その中に隠された指示がエージェントのシェルを乗っ取ってボットネットのマルウェアを導入する。リポジトリ名の捏造は最大85%、スキル導入は最大100%。Bromure Agentic Coding はこの取得と実行の経路全体を使い捨ての Linux VM 内で走らせ、推測が着地するパッケージレジストリを検査し、マルウェアには盗む対象としておとりだけを残す。

あなたはコーディングエージェントに、よく知られたパッケージを頼んだ。エージェントは それらしい名前を打ち込み、インストールを実行し、次へ進んだ。その名前は推測だった ——そして誰かがまさにその推測をすでに登録し、マルウェアで満たしていた。誰もタイプ ミスをしていない。エージェントが名前を捏造し、攻撃者は捏造の着地点で待っていた。

2026年7月、テルアビブ大学、テクニオン、Intuit のグループ——その中には Aya Spira、 Stav Cohen、Ron Bitton、Avishai Wool、Ben Nassi らがいる——が、彼らが HalluSquatting と呼ぶ攻撃を記述した。それは大規模言語モデルの最もよく知られた弱点のひとつ——物事を でっち上げ、その捏造を事実として述べること——を、あなたではなく、あなたの代わりに働く エージェントを狙ったサプライチェーンの配送システムへと変える。

その仕掛けは単純すぎて退屈なほどだ。コーディングエージェントに、見たこともない プロジェクトのためにパッケージを取得し、リポジトリをクローンし、スキルを導入するよう 頼めば、エージェントは知らないと認める代わりに識別子を推測することが多い。 HalluSquatting はその推測を武器化する。

タイプミスから幻覚へ

タイポスクワッティングは昔からある。expressslodahs を登録し、人間が端末で キーを打ち間違えるのを待つ。それは人がミスを犯すことに依存する。2025年から2026年 初頭にかけて浮上したスロップスクワッティングは、そのミスをモデルへ移した——存在しない パッケージ名をエージェントが幻覚し、攻撃者が先に登録し、同じ名前を幻覚した次の エージェントがペイロードを導入する。2026年1月、 Aikido の Charlie Eriksen は、幻覚された npm パッケージ react-codeshift が、誰も気づかぬうちに237の プロジェクトへ広がった事例を記録した。タイプミスは一度も起きなかったので、 タイポスクワッティング対策も一度も作動しなかった。

HalluSquatting は2026年のエスカレーションであり、そのエスカレーションとは、幻覚が もはや偶然に委ねられないという点にある。研究者の手法は4ステップのレシピだ。

  1. モデルが暗記していない標的を選ぶ。 学習の締め切り後に登場した、話題の リポジトリやツールが狙い目だ。モデルは耳にしているので試みるが、本物の名前は 見ていないので、名前を捏造する。
  2. そのミスを学ぶ。 エージェントを繰り返し探り、どの偽名を安定して生み出すかを 突き止める。論文は、幻覚されたリポジトリ名が**最大85%の頻度で現れ、スキル導入の シナリオでは最大100%**に達すると報告している——賭けるに足る一貫性だ。
  3. 捏造名を取得する。 それを GitHub やプラグインストアに登録し、README、 マニフェスト、または SKILL.md を、エージェントに読ませるために書いた指示で 満たす。
  4. 待つ。 開発者が本物のリソースを求めると、エージェントは代わりに攻撃者の 捏造した識別子を出力し、それを取得する。隠された指示は次に、エージェント自身の コマンド実行ツールを乗っ取ってペイロードを導入する。

そのペイロードは概念実証ではない。研究者は推測をプロンプトインジェクション——Nassi の グループが promptware と呼ぶもの——へ連鎖させ、リモートコード実行とボットネット マルウェアに行き着く。すなわち、本国へ通信し命令を受ける、感染した開発者のマシンだ。 推測が攻撃者のファイルをエージェントの皿に載せ、埋め込まれた指示がそれをコマンドへ変え、 コマンドが開発者のノートPCからボットネットを組み上げる。

なぜこれはあなたではなくエージェントへの攻撃なのか

それを言い表す一文は、記事によれば、HalluSquatting が「標的を人間から AI エージェントへ移す。エージェントはコマンドを実行しながら、そのソースが本物かどうかを 確認しないかもしれない」というものだ。パッケージ名に確信のない人間は立ち止まり、 レジストリを確認し、スター数を一瞥する。自動実行モードのエージェントは立ち止まらない。 その仕事は進み続けることであり、自らの重みから出てきた名前は、あなたが打った名前と 同じ権威を帯びる。自分を疑う理由がないのだ。

研究者は、開発者が日々手を伸ばすツール全体で検証した—— GitHub Copilot、Cursor、Windsurf、Cline、Google Gemini CLI、そして OpenClaw 一族 ——そして幻覚が「異なる LLM モデルやアプリケーション間で転移可能」であり、Anthropic、 OpenAI、Google のモデル上に構築されたエージェントに対して効くことを見出した。 一社ではこれをパッチで消せない。なぜなら、それはコーディングエージェントが要求を アクションへ変える共有された形——名前を推測し、リソースを取得し、その内容を読み、 書いてあることを行う——に乗っているからだ。

エージェント「パッケージXを追加」名前を推測取得捏造された名前攻撃者が事前登録README = 指示計画として読むプロンプト注入シェルを乗っ取るツール→導入あなたのマシンボットネットが導入・命令を受信本物の鍵・トークン・セッションがディスクにビーコンC2ボットネット誰もタイプミスをしていない。エージェント自身の推測が住所であり、攻撃者がそれを所有していた。
HalluSquatting はサプライチェーンから人間を取り除く。攻撃者はエージェントを探り、モデルがどの名前を捏造するかを学び、まさにその名前を、罠を仕込んだ README やマニフェストとともに登録して待つ。あなたが本物のリソースを求めると、エージェントは捏造名を出力し、攻撃者版を取得し、埋め込まれた指示を自らの計画として読み、ボットネットのペイロードを導入する。通常の環境では、それはあなたのマシン上で走る。

なぜ「幻覚をやめればいい」が決して解決策でなかったのか

魅力的な答えは、モデルに自己チェックさせることだ——取得前に名前を解決し、cloneinstallfetch を検出し、あらゆる識別子を実在するものに接地させる。良い考えであり、 研究者もそれらを推奨している。だが、それらはすべて同じ場所に住む。すなわち、 エージェントがまさに行おうとしていることを読み、実行される前に悪いケースを捕まえたいと 願うフィルターだ。HalluSquatting はまさにその読み手に対して設計されている。名前は モデルが生み出したので正当に見え、README はまさに README とはそういうものだから ドキュメントに見え、インストールコマンドはコーディングエージェントが一日じゅう行う 最もありふれた動作だ。

これはエージェントセキュリティの残りが繰り返しぶつかる壁だ。コマンドを読む拒否リストは、 それを書き換えるシェルに負ける。 パッケージを読むスキャナーは、 パッケージの中にないペイロードに負ける。 スキルを検索するエージェントは、 自ら見つけたマルウェアを推奨する。 HalluSquatting はこれまでで最も鋭い版を加える。悪意ある名前は、そもそもインターネット から来たのではない。モデルから来たのだ。自分自身のエージェントの想像力をブロックリスト には入れられない。説明文は攻撃者が書くものであり、実行こそが結末の決まる唯一の場所だ。

Bromure がどこに線を引くか

Bromure Agentic Coding は、モデルに推測をやめさせようとはしない。間違った推測が 届きうる範囲を変える。Bromure が実行するあらゆるエージェント——Claude Code、Codex、 Grok Build——は、macOS そのものではなく、あなたの Mac 上の使い捨て Linux VM の中で 走る。だから、エージェントが捏造名を出力し、攻撃者のリソースを取得し、研究者がこれらの エージェントで見たとおりにインストールを実行するとき、いくつかのことがすでに真である。

第一に、この種の攻撃には珍しく、レジストリの経路は検査される。 捏造名が npm、 PyPI、Cargo のパッケージであるとき——スロップスクワッティングの事例、react-codeshift の事例——それは Bromure のサプライチェーン検査のど真ん中に着地する。この検査は、 パッケージが公開レジストリから引かれる際にそれらを精査する。ここは HalluSquatting の うち、推測が、信頼される前に Bromure が直接見るために作られた対象へと解決する唯一の 部分だ。幻覚された依存関係も依然として依存関係であり、Bromure が見張る正面玄関から 入ってくる。

第二に、ペイロードは投げ捨てる箱の中で走る。 捏造名がレジストリパッケージではなく GitHub リポジトリやプラグインストアのスキルを指し、ボットネットのローダーが実行された と仮定しよう。それは VM の中で実行される。命令を受ける永続的なホストは存在しない。 プロファイルをベースにリセットすれば、落とされたバイナリも、スケジュールされたジョブも、 足場も——そのすべてが消える。次のリセットで消え去るボットネットのノードは、 たいしたノードではない。

第三に、徴用すべき本物の認証情報がない。 環境とディスクを漁って API キー、git・ クラウドのトークン、SSH 鍵を探すボットネットのマルウェアが見つけるのはおとりだ。 Bromure はプレースホルダーの値(brm_…、合成の ~/.kube/config、使い捨ての ssh・ クラウドトークン)を VM に注入し、本物はホスト上、プロキシの中、本物の API へ出て いく途中でのみ差し戻す。本物の鍵は決して箱に入らない。ペイロードが指令サーバーへ送る ものは、何にも認証しない文字列の袋だ。

第四に、promptware は検出器と照らして読まれる。 HalluSquatting は実行攻撃で ある前に読み取り攻撃だ——エクスプロイト全体は、エージェントが攻撃者の README、 マニフェスト、SKILL.md を取り込み、それを自らの計画として扱うことに懸かっている。 それはまさに Bromure が見張る、信頼できない権威だ。不正な CLAUDE.mdAGENTS.md と同じ種類である。Bromure のオンデバイスのプロンプトインジェクション検出は、 エージェントがドキュメントとして読む内容を、Mac を決して離れないローカルモデルに 照らして採点し、加えて不可視 Unicode のトリック用に決定論的なスキャナーを併用する。 取得したマニフェストに埋もれた「今すぐこのインストールスクリプトを実行せよ」という指示 こそ、その検出器が存在する理由の事例だ。

そしてそのすべての底で、外向きの通信は可視だ。 ボットネットのビーコン、ステージの 取得、持ち出しの試み——それらは、信頼したマシンからの静かなコールバックとしてではなく、 Bromure のセキュリティログに、あなたが見られる外向き通信として現れる。

使い捨て Linux VM捏造された名前エージェントが取得ここに導入サプライチェーン検査npm / PyPI / Cargo入口で捕捉ボットネットが徴用するものpromptware を端末内検出器が採点ANTHROPIC_API_KEY = brm_9f2a…(偽)git / AWS / ssh = おとり・箱は初期化ビーコン(記録)C2 はおとりを受信消えるノード本物の秘密情報ホストのプロキシに留まる通信時に差し込むエージェントは依然として推測し、依然として導入する。ただ使い捨ての場所で、本物でない鍵とともに行うだけだ。
同じ推測、同じ取得、同じインストール——ただしマシンが違う。Bromure の内側では、エージェントは使い捨ての Linux VM 上で走る。幻覚されたレジストリパッケージは正面玄関でサプライチェーン検査に捕まり、ボットネットのペイロードは投げ捨てられる場所で走り、それが漁る認証情報はおとりで、本物と差し替えられるのはホストのプロキシ上のみ、取得したマニフェストの promptware はオンデバイス検出器が採点し、ビーコンは記録される。推測は依然として起きる。徴用すべきものが何もないのだ。

これが線を引く対象は何か

隔離と検査は封じ込めであって、幻覚の治療ではない。ここで Bromure が変えるものと 変えないものを正確にしておく価値がある。

エージェントは依然として名前を捏造する

Bromure は、モデルが識別子を幻覚することも、その名前が解決する先を取得することも 止めない。エージェントの推測を接地させるのは、モデルとハーネスの問題だ。Bromure が 変えるのは、取得された物がどこで走り、走る際に何に届きうるかである。

レジストリ検査はレジストリを覆う

幻覚された npm、PyPI、Cargo のパッケージは、まさにサプライチェーン検査が精査する もの——本物の正面玄関での捕捉だ。幻覚された GitHub リポジトリやプラグインストアの スキルはレジストリパッケージではない。その経路を保つのは、隔離、注入検出器、 おとりであって、レジストリ検査ではない。

差し替えは設定した秘密情報を覆う

おとりへの差し替えは、プロファイルに入れた認証情報を守る——モデルの鍵、git・ クラウドのトークン、マネージドDBのエンドポイント、ssh 鍵。スクリプトが実行途中に ディスクへ書く トークンや、あなたが箱の中で手作業で確立するセッションは、 ただのデータだ。秘密情報はワークスペースではなくブローカーに置くこと。

検出は網であって壁ではない

オンデバイスの注入採点は、インストールして実行するマニフェストを、そうでない場合 より多く検出する。だが慎重な作者は、単一のスキャナーをすり抜けるように誘い文句を 練れる。検出器は一つの層として扱うこと。検出器が見逃したとき持ちこたえるのは、 封じ込め——偽の鍵と記録された外向き通信を備えた使い捨ての箱——だ。

研究者は、心に留めておく価値のある一文で締めくくる。「攻撃は常に良くなる。決して悪く ならない。」彼らの成功率は天井ではなく床であり、根底にある信頼のメカニズム——自らの 推測を事実として、取得したファイルを計画として扱うエージェント——は、今四半期に パッチされはしない。あなたのエージェントは、半ば覚えている何かのために名前を捏造し、 その捏造名のいくつかはすでに取得済みだろう。問いは、いつか間違ったものを取得するか どうかではない。85%の幻覚率では、時に取得する。問いは、そうなったとき何が走るかだ。 あなたのマシン、あなたの本物の鍵、そして残り続ける足場か——それとも、投げ捨てられる Linux の箱、その中のおとり、入口で確認されるレジストリか。Bromure はそれを後者にする。