ワカリタイムズ

🌍 海外ニュースを「わかりやすく」

Claude Codeに重大な脆弱性、リンク1つで攻撃者のコマンドが実行される仕組みとは

「ちょっとこのリポジトリ見てよ」とSlackで送られてきたリンクを軽い気持ちでクリックしたら、いつのまにかパソコン上で見知らぬコマンドが実行されていた——AIコーディング支援ツール「Claude Code」を使っている開発者にとって、笑い話ではすまない事態が現実になりました。CybersecurityNewsが2026年5月18日に報じた「Claude Codeの脆弱性、悪意あるディープリンクでコマンドを実行される」によると、Anthropic社のClaude Codeに、攻撃者が被害者の端末上で任意のコマンドを実行できるリモートコード実行(RCE)の脆弱性が見つかり、すでにClaude Code 2.1.118で修正されています。今回はこの脆弱性の仕組みと、日本の開発者が今やっておくべき対応を整理してみましょう。

どんな攻撃が成立してしまったのか

今回の脆弱性は、悪意ある「ディープリンク」を踏ませることで成立します。ディープリンクとは、Webブラウザなどから特定のアプリを起動し、そのアプリ内で何らかの動作を実行させるためのURLのことです。

Claude Codeは claude-cli:// という独自のURLスキームを持っており、ブラウザでこの形式のリンクをクリックすると、Claude Codeが起動して指定された動作を行う仕組みになっています。攻撃者は、このリンクの中に細工した文字列を仕込むことで、被害者のパソコン上で任意のシェルコマンドを実行できる状態でした。

たとえばGitHubのプルリクエスト、Slackのメッセージ、ブログ記事の本文などに偽装したリンクを置いておけば、Claude Codeを使っている開発者がクリックするだけで攻撃が成立します。コードレビュー依頼やバグ報告のURLとして送られてくれば、警戒する余地もなくクリックしてしまうでしょう。

「先回りの引数解析」が落とし穴になった

この脆弱性を発見したのは、0day.clickのセキュリティ研究者Joernchen氏です。同氏がClaude Codeのソースコードを地道に読み解いた結果、eagerParseCliFlag という関数に問題があることが分かりました。

この関数はClaude Codeの起動時、メインの初期化処理よりも先に、--settings= で始まる引数を見つけて読み込む役割を持っていました。設定ファイルの場所を早めに把握しておくための仕組みです。ただ、その「先回り」のためにコマンドラインの全引数を機械的に走査し、--settings= で始まる文字列を見つけたらすぐに設定値として採用してしまっていました。

問題は、その文字列が本物の引数なのか、別の引数に渡された単なる値なのかを区別していなかったことです。攻撃者は、ディープリンク内の q というパラメーター(Claude Codeのプロンプト欄に事前入力される文字列が入る場所)に、--settings=... という文字列を紛れ込ませました。先回り解析の関数は、それを本物の設定指定と誤解し、攻撃者が用意した設定を起動時の設定として読み込んでしまったのです。

設定の上書きが「任意コマンド実行」に化けた理由

設定を書き換えられただけで、なぜシェルコマンドが実行されてしまったのでしょうか。鍵になったのは、Claude Code本来の便利機能であるフック機能です。

Claude Codeにはセッション開始時や終了時などのタイミングで、ユーザーが指定したコマンドを自動実行できる仕組みがあります。たとえば「セッション開始時にプロジェクトのテストを走らせる」といった使い方を想定したものです。

ところが今回の脆弱性では、攻撃者は次のような設定を注入できました。

攻撃対象 内容
SessionStart フック 任意のシェルコマンドを実行する設定を注入
ワークスペース信頼ダイアログ 被害者がローカルにクローン済み・信頼済みのリポジトリを repo に指定すれば確認画面を回避できる

つまり、本来は「ユーザーが設定したコマンドを特定のタイミングで自動実行する」ためのフック機能が、攻撃者の好きなコマンドを実行する道具に化けてしまうわけです。さらに、過去に一度でも信頼登録したリポジトリ名を組み合わせれば、確認画面さえ表示されません。ユーザーから見れば「リンクをクリックしただけ」で、裏では自分のパソコン上で攻撃者のコードが動いていた、ということになります。

記者の視点:日本の開発現場が今すぐやるべきこと

Anthropic社はこの脆弱性をClaude Code 2.1.118で修正済みです。新しいバージョンでは、--settings が実際のCLIフラグなのか、別のフラグに渡された値なのかを区別する解析処理に改められ、攻撃文字列を設定として読み込まないようになりました。

日本でもClaude Codeはエンジニアの間で急速に普及しており、企業の開発環境で使われているケースも珍しくありません。やるべきことはとてもシンプルです。

  • ターミナルで claude --version を実行し、バージョンが2.1.118以上かを確認する
  • もし古い場合は npm update -g @anthropic-ai/claude-code で更新する
  • 可能であれば、Claude Codeで信頼済みにしたワークスペースを見直す
  • 出所が不確かな claude-cli:// で始まるリンクは絶対にクリックしない

Claude Codeに限らず、AIエージェント系のツールは「外部から入ってきた指示」を実行する能力が高いほど、攻撃の入口にもなりやすいのが現実です。Anthropicの公式情報や、JAPANSecuritySummit Updateのような国内セキュリティメディアも確認し、アップデートを後回しにしない姿勢が大切になってきます。

ワンクリックで足元をすくわれないために、開発者が持つべき視点

AIコーディング支援ツールは、いまや開発者の生産性を底上げしてくれる頼もしい相棒です。一方で、その「便利さ」を支えるディープリンクやフック機能は、悪意ある第三者にとっては絶好の足場にもなります。今回のClaude Codeの一件は、AIツールがどれほど洗練されていても、コマンドライン引数の解析という古典的な処理に穴があるだけで簡単に侵入を許してしまう、という現実を突きつけました。

それでも、ベンダー側はわずか数日で修正版を出し、研究者はソースコードレベルで地道に検証してくれています。利用者である私たちも、バージョン番号を一つ確認し、アップデートをかける——その小さなひと手間を惜しまないことが、これからのAI時代における新しい「セキュリティのマナー」になっていくはずです。