ニュースマクロAnthropicがClaude Code向けClaude Securityプラグインをベータ版でリリース:ターミナルで実行するマルチエージェント脆弱性スキャナー

AnthropicがClaude Code向けClaude Securityプラグインをベータ版でリリース:ターミナルで実行するマルチエージェント脆弱性スキャナー

著者: MarkTechPost·

重要ポイント

  • Claude Securityプラグインは、Claude Codeセッション内でinjection-and-input、auth-and-access、memory-and-unsafe、crypto-and-secretsの4つのセキュリティカテゴリーにわたるマルチエージェント脆弱性スキャンを実行します。
  • 各候補発見事項は、到達可能性、影響、防御を評価する3人の検証者によるパネル審査を生き抜く必要があり、最終レポートへの記載には3人中2人以上のクォラムが最低限必要です。
  • パッチファイルは、独立した検証者がその修正が発見事項に対処していること、新たな脆弱性を導入しないこと、既存のプログラム動作を維持していることを確認した場合にのみ生成されます。
  • このプラグインには有料のClaudeプランおよびClaude Code v2.1.154以降、Python 3.9.6以降、Gitが必要であり、すべてのスキャンはプランのトークン制限にカウントされます。
  • Anthropicは本プラグインを従来のSASTツールを補完するものとして位置づけており、スキャンは非決定論的であり、静的解析、依存関係スキャン、コードレビューを代替するものではないとしています。
AnthropicがClaude Code向けClaude Securityプラグインをベータ版でリリース:ターミナルで実行するマルチエージェント脆弱性スキャナー

Anthropicは、Claude Code向けのClaude Securityプラグインをベータ版としてリリースしました。Claude CodeはAnthropicのターミナルベースのエージェント型コーディングアシスタントであり、本プラグインは従来専用の静的アプリケーションセキュリティテスト(SAST)ツールが占めていたセキュリティ分析領域へと機能を拡張するものです。このプラグインは、既存のClaude Codeセッション内で直接リポジトリのマルチエージェント脆弱性スキャンを実行し、選択された発見事項をユーザーが確認して手動で適用するパッチファイルに変換します。Anthropicはリリース時に本ツールの柔軟性を強調し、コードベース全体の包括的なスキャンと、コミット直前にターミナルから変更内容を検査する機能のいずれかを実行できるとしています。

プラグインが追加する機能

このプラグインは、公式ドキュメントに基づき、/claude-securityという単一コマンドを追加し、3つのジョブのメニューを表示します:

  • コードベースのスキャン — リポジトリ全体またはスコープ指定されたサブセット
  • 変更のスキャン — ブランチのdiff、プルリクエストのdiff、または個別のコミット
  • パッチの提案 — レポートの発見事項を.patchファイルに変換

インストールには、公式Anthropicマーケットプレースから2つのコマンドを実行します。マーケットプレースが見つからない場合は、まず/plugin marketplace add anthropics/claude-plugins-officialを実行してください。プラグインのソースはclaude-plugins-officialリポジトリで公開されており、現在のバージョンは0.10.0です。

スキャンパイプラインの構造

スキャンは動的ワークフローとして実装されており、サブエージェント間で作業を分散するJavaScriptオーケストレーションスクリプトが実行されます。このスクリプトは6つのフェーズを定義しています:

  1. インベントリ:リポジトリをコンポーネントに分割する。すべてのトップレベルディレクトリはスキャンされるか、理由とともに明示的にスキップされなければなりません。
  2. 脅威モデル:コンポーネントごとに1人のモデラーが配置され、エントリーポイント、シンク、信頼境界、およびリサーチャーが完全に読む必要があるファイルを生成します。
  3. リサーチ:コンポーネント×カテゴリーのセルごとに1人のリサーチャーが配置されます。
  4. スイープ:マトリックスがカバーしなかった領域のギャップ埋めを行います。
  5. パネル:3つのレンズによる敵対的検証、各レンズにつき1人の投票者を配置します。
  6. アドバーサリアル(最大労力時のみ):境界判定の再パネル審査を行い、その後すべての残存事項にレッドチームテストを実施します。

リサーチは4つの固定カテゴリーに対して実行されます:injection-and-input、auth-and-access、memory-and-unsafe、crypto-and-secrets。完全にメモリセーフな言語で記述されたコンポーネントについてはmemory-and-unsafeレンズが省略され、純粋なPythonまたはTypeScriptのコンポーネントは4つではなく3つのレンズを受け取ります。

実行の運用規模は、low、medium、high、maxの4つの作業負荷ティアによって決定されます。選択されたティアに応じて、特定の閾値が適用されます:コンポーネントの最大数はlowおよびmediumティアで12に制限され、highおよびmaxティアでは24に拡大します。マトリックスセルには低ティアで1人のリサーチャーが割り当てられ、highおよびmaxレベルでは2人に増加します。ギャップ埋めスイープの回数は、lowで0、mediumで1、highおよびmaxで2へとスケールします。限定的なスコープや小さなdiffを扱う場合、プロセスは完全なマトリックスを展開するのではなく、単一リサーチャー構成に凝縮されます。これにより、同一の検証基準を維持しながら、評価が対象に対して厳密に比例して行われることが保証されます。

システムはモデル階層型エージェントを採用しています:オーケストレーターはOpusで実行され、リポジトリカートグラファーと読み取り専用コードエクスプローラーはSonnetで実行されます。セッションモデルはリサーチャーと検証者に継承され、スキャンエージェントは読み取り専用ツールにのみ制限されています。

発見事項がレポートに記載される仕組み

偽陽性は長らく自動化された脆弱性検出における恒常的な課題であり、セキュリティチームがノイズの多いレポートをトリアージすることを余儀なくされることがよくあります。このプラグインのアーキテクチャは、リサーチャーが特定したという理由だけで候補発見事項がレポートに記載されないという要件を設けることで、この課題に対処しています。発見事項はパネル審査を生き抜いた場合にのみ記載されます。

各候補は、レンズごとに1人ずつ、3人の独立した検証者によって評価されます:REACHABILITYIMPACTDEFENSES。各検証者は、TRUE_POSITIVEまたはFALSE_POSITIVEの構造化された評決と、決定的なファイル:行を示す1〜2行のテキストを返します。維持クォラムは3人中2人です。3人未満の投票者しか戻らない場合、その候補は一切維持できません。

パネルの結果は発見事項の記載信頼度の上限も決定します。満場一致の3/3パネルは信頼度上限「high」を許可し、2/3のクォラムは「medium」に制限します。発見事項は、その検証が獲得した以上の信頼度を主張することはできません。

極めて重要な点として、集計は発見事項を生成したモデルではなく、レポートレンダラーによってPythonで計算されます。リビジョンスタンプのverification.statusは、投票記録がレポート内のすべての発見事項についてパネルが実行されたことを証明した場合にのみverifiedに設定され、それ以外の場合は理由が記載されたうえでunverifiedとマークされます。これにより、レポート自身の厳密さに関する記述は、信頼して受け入れるものではなく、確認可能なものとなります。

スキャンがディスクに書き込む内容

各スキャンは、リポジトリ内にタイムスタンプ付きのCLAUDE-SECURITY-<timestamp>/ディレクトリを作成し、3つの成果物を格納します:

  • CLAUDE-SECURITY-RESULTS.md — 人間が読めるレポート。各発見事項にはF1などのIDに加え、重大度(HIGH/MEDIUM/LOW)、信頼度、CWE ID、正確なシンク行、影響、エクスプロイトシナリオ、前提条件、および推奨事項が含まれます。CWE(Common Weakness Enumeration)識別子の使用により、発見事項は広く採用されているMITRE分類標準と整合し、既存の脆弱性追跡および修復ワークフローとの相互運用性が確保されます。
  • CLAUDE-SECURITY-RESULTS.jsonl — 同じ発見事項を1行につき1つのJSONオブジェクトとして格納します。
  • CLAUDE-SECURITY-REVISION-.json — リビジョンスタンプ:スキャンされたコミット、作業負荷、重大度カウント、および実行の検証の徹底度を記録します。コミットされていない変更がスキャンツリーの一部であった場合、ファイル名に-dirtyが付加されます。

このディレクトリはスキャンがチェックアウトに加える唯一の変更であり、独自の.gitignoreを同梱しているため、誤ったgit addがレポートをコミットに巻き込むことはありません。この.gitignoreを削除することで、監査証跡としてレポートをコミットできるようになります。

パッチと各パッチが満たすべき3つの要件

修正ジョブは、リポジトリのスクラッチクローン内で各パッチを開発するため、作業ツリーとインデックスには一切影響を与えません。パッチを作成したエージェントとは独立したエージェントが、ステージされたdiffをレビューし、プロジェクト自身のテストスイートをその変更に対して実行します。

パッチファイルは、検証者が以下の3点すべてを確信を持って主張できる場合にのみ書き込まれます:その変更が特定の発見事項に対処していること、新たな脆弱性を導入しないこと、およびその他の動作は変更されないこと — コードが受け入れる入力の変更は動作変更とみなされます。セキュリティの修正を主張しながら実際にはセキュリティを弱める変更(認証チェックの緩和やテストの無効化など)は、自動的に却下されます。検証者が3つの基準すべてを保証できない場合、パッチの代わりに理由を説明する短いノートが提供されます。

パッチはレポートのpatches/フォルダにF<n>.patchとして配置されます。自動的に適用されるものはありません。パッチノートには、変更されたコードをカバーするリポジトリテストが存在しない場合、検証がテスト実行ではなくコードレビューに依存していることが明示的に記載されます。Anthropicは各パッチを個別のプルリクエストで適用することを推奨しています。

要件、コスト、および信頼モデル

このプラグインには、Claude Code v2.1.154以降を搭載した有料プランが必要で、/configで動的ワークフローを有効にする必要があります。また、システムPATH上にpython3としてPython 3.9.6以降(標準ライブラリのみ使用)と、変更スキャンおよびパッチ適用のためのGitが必要です。Linux、macOS、Windowsがサポートされており、スキャンはプランのトークン制限にカウントされます。

ユーザーのセッション内でユーザーの権限の下で実行されるため、スキャン自体は独立した隔離を追加せず、コミットされた.claude/設定、フック、およびCLAUDE.mdは引き続き適用されます。リポジトリコンテンツを命令ではなくデータとして扱いますが、これは悪意のあるリポジトリに対する防御ではありません。Anthropicは、不慣れなコードベースをサンドボックス化するためにsandbox-runtimeを使用することを推奨しています。

さらに、スキャンは非決定論的であり、従来の静的解析、依存関係スキャン、またはコードレビューを代替するものではありません。このプラグインは、Semgrep、Snyk、SonarQubeなどの確立されたツールが存在する市場に参入するものですが、主にパターンマッチングルールに依存するのではなく、コードパスの意味分析を実行するマルチエージェントパイプラインによって差別化を図っています。バージョン0.10.0のベータ製品として、そのスコープ、精度、機能セットは進化する可能性があります。

出典:Claude Security プラグインドキュメント、Claude Security 製品ページ、プラグインソース、claude-plugins-official@claudeai発表、Claude Security パブリックベータブログ