Claude Codeでコマンド実行時にdenyが事実上無効化される重大な脆弱性

セキュリティニュース

投稿日時: 更新日時:

Claude Codeでコマンド実行時にdenyが事実上無効化される重大な脆弱性

Adversaは2026年4月2日、Claude Codeの権限制御に関する調査レポートを公開し、複雑なシェルコマンドを処理する際に deny ルールが事実上無効化される問題があったと指摘しました。レポートによると、コマンドが 50 を超えるサブコマンドで構成される場合、Claude Codeは個々のサブコマンドに対する deny 判定をスキップし、一般的な ask プロンプトへフォールバックしていたとされています。Adversaはこれを、セキュリティ境界そのものが複雑さの閾値で崩れる問題だと評価しています。

背景

2026年3月31日、米国Anthropic社において、同社の主力AIコーディングエージェント「Claude Code」の完全なソースコードがnpmレジストリへの誤った公開を通じて漏洩するという重大なインシデントが発生しました。

本件は外部からのサイバー攻撃ではなく、CI/CDパイプラインにおける人為的なリリースミスに起因するものです。Adversaはこのコードを解析し脆弱性を発見しました。

関連:AnthropicのClaude Code ソースコードが漏洩-概要やセキュリティへの影響

概要

Adversaの説明では、問題は Claude Code の bashPermissions.ts にある複雑コマンド処理です。&&||; で連結されたサブコマンドが 51 個以上あると、各サブコマンドへのセキュリティ分析をやめ、deny ルールを確認しないまま ask に落としていたとされています。

たとえば、単体では deny される curlrm も、前に無害なコマンドを 50 個並べると、拒否ではなく 実行してよいか  という一般的な確認へ変わると指摘しています。

Adversaは、実際の PoC として curl 単体では deny された一方、true コマンドを 50 個前置きして 51 個目に同じ curl を置くと、Claude Codeが 個別に安全確認できないが進めるか と表示し、deny ルールを発火させなかったと説明しています。つまり、禁止ルールが 外れた のではなく、そもそもセキュリティルールが適用されいませんでした。

原因

Adversaによると、背景には性能問題がありました。内部チケット CC-643 では、複雑な複合コマンドをサブコマンド単位で解析すると UI が固まり、計算コストも増えるため、50 サブコマンドを上限として、それを超えた場合は ask へフォールバックする実装になっていたとされています。

Adversaはこれを、セキュリティ検査コストを削るために安全性が後回しになった例として批判しています。

どう悪用されるのか

Adversaが描く現実的な攻撃シナリオは、悪意あるリポジトリと CLAUDE.md を組み合わせるものです。Anthropicの公式ドキュメントでは、Claude Code は CLAUDE.md をプロジェクト固有の永続指示として読み込み、ビルド手順やワークフローの指示にも使うと説明しています。

つまり、開発者が見慣れたファイルを通じて、AIエージェントの行動に影響を与えられる設計です。

Adversaは、攻撃者が正規プロジェクトに見えるリポジトリを公開し、その CLAUDE.md に多数のもっともらしいビルド手順を書き込み、51 個目以降に認証情報送信用の curl などを紛れ込ませる攻撃を想定しています。

開発者がリポジトリを clone し、Claude Code に build を頼むと、AIが長い複合コマンドを生成し、deny ルールが効かないまま一般的な許可確認へ落ちるという流れです。これにより、SSH鍵、AWS認証情報、GitHubトークン、npmトークン、環境変数中のシークレットなどが持ち出され得る可能性があります。

Anthropicはどう対応したのか

Adversaは4月4日付の追記で、Anthropicが Claude Code v2.1.90 でこの問題を修正したようだと記しています。Adversaはこの問題を parse-fail fallback deny-rule degradation と呼ばれたとしており、AnthropicのGitHub Releasesでも v2.1.90 の変更点に Hardened PowerShell tool permission checks の一部として parse-fail fallback deny-rule degradation の修正が記載されています。少なくとも公開リリースノート上では、deny ルールのフォールバック劣化に関する修正が入ったことが確認できます。

出典

Critical Claude Code vulnerability: Deny rules silently bypassed because security checks cost too many tokens