AI News HubLIVE
サイト内リライト4 分で読了

Anthropic、Claude Code向けセキュリティプラグインのベータ版を公開:ターミナルで動作するマルチエージェント脆弱性スキャナー

Anthropic は Claude Code 向けのセキュリティプラグインのベータ版をリリースしました。このプラグインは Claude Code セッション内でマルチエージェントの脆弱性スキャンを実行し、選択した結果をパッチファイルに変換してユーザーがレビュー・適用します。発見事項は3投票者による敵対的検証を通過したもののみ報告されます。

ソースMarkTechPost著者: Michal Sutter

Anthropic は、Claude Code 向けのセキュリティプラグインのベータ版を公開しました。このプラグインはターミナル内で動作し、既存の Claude Code セッション内でリポジトリのマルチエージェント脆弱性スキャンを実行します。検出された問題はパッチファイルに変換され、ユーザーが確認して手動で適用します。Anthropic は発表の中で、コードベース全体の包括的なスキャンからコミット直前の変更チェックまで、幅広いユースケースに対応する柔軟性を強調しています。

プラグインは /claude-security という単一のコマンドを追加します。このコマンドを実行すると、3つのジョブを含むメニューが開きます:コードベースのスキャン(リポジトリ全体または指定サブセット)、変更のスキャン(ブランチの差分、プルリクエストの差分、または単一コミット)、そしてパッチの提案(レポートの結果を .patch ファイルに変換)。インストールは Anthropic 公式マーケットプレイスからの2つのコマンドで完了します:/plugin install claude-security@claude-plugins-official および /reload-plugins。マーケットプレイスが見つからない場合は、事前に /plugin marketplace add anthropics/claude-plugins-official を実行します。プラグインのソースコードは公開されており、現在のバージョンは 0.10.0 です。

スキャンパイプラインは動的ワークフローとして実装されており、JavaScript のオーケストレーションスクリプトがサブエージェントにタスクを分散します。スクリプトは6つのフェーズを定義します:インベントリ(リポジトリをコンポーネントに分割。トップレベルディレクトリはスキャンされるか、理由を明示してスキップされる)、脅威モデル(コンポーネントごとに1つのモデラーがエントリポイント、シンク、信頼境界、研究者が全文読むべきファイルを生成)、研究(コンポーネント×カテゴリセルごとに1人の研究者)、スイープ(マトリックスがカバーしなかった部分のギャップフィル)、パネル(3つのレンズによる敵対的検証。レンズごとに1人の投票者)、および敵対的フェーズ(最高努力のみ:マージナルな結果を再パネルし、生存者すべてをレッドチームテスト)。研究は4つの固定カテゴリに対して実行されます:インジェクションと入力、認証とアクセス、メモリとアンセーフ、暗号とシークレット。メモリセーフ言語のみで書かれたコンポーネントではメモリとアンセーフのレンズが省略されるため、純粋な Python や TypeScript のコンポーネントは4つではなく3つのレンズで検査されます。

実行規模は4つの努力レベル(低、中、高、最大)によって決まります。選択されたレベルに応じて、コンポーネント数の上限(低/中で12、高/最大で24)、マトリックスセルあたりの研究者数(低/中で1、高/最大で2)、スイープ回数(低で0、中で1、高/最大で2)が設定されます。対象が限定的な場合や差分が小さい場合、プロセスはフルマトリックスではなく単一研究者構成に凝縮され、評価が対象に比例することを保証します。

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

発見事項がレポートに掲載されるためには、パネル検証を通過する必要があります。各候補は3つの独立した検証者に渡されます。各検証者は到達可能性、影響、防御のいずれかのレンズを担当し、TRUE_POSITIVE または FALSE_POSITIVE の構造化された判定を、該当するファイル:行を1~2行で示して返します。保持クォーラムは 2/3 です。投票者が3人未満の場合、候補は保持できません。パネル結果は発見事項の信頼度上限も決定します。全会一致の 3/3 パネルでは信頼度が高に、2/3 のクォーラムでは中に制限されます。発見事項は検証で得られた以上の信頼度を主張できません。重要なのは、このカウントは発見事項を生成したモデルではなく、レポートレンダラーの Python コードで計算される点です。レポート内のすべての発見事項に対してパネルが実行された場合のみ、リビジョンスタンプの verification.status が verified に設定され、そうでなければ unverified と理由が記載されます。これにより、レポートの厳密性を信頼するのではなく、確認可能になります。

スキャンはリポジトリ内にタイムスタンプ付きの CLAUDE-SECURITY-<TIMESTAMP>/ ディレクトリを作成し、3つの成果物を保存します:CLAUDE-SECURITY-RESULTS.md(人間可読レポート。各発見事項には ID、重大度、信頼度、CWE ID、シンクライン、影響、エクスプロイトシナリオ、前提条件、推奨事項が含まれる)、CLAUDE-SECURITY-RESULTS.jsonl(同一の発見事項を JSON オブジェクトとして1行に1つ)、CLAUDE-SECURITY-REVISION-<REVISION>.json(リビジョンスタンプ:スキャンされたコミット、努力レベル、重大度カウント、検証の完全性)。このディレクトリには .gitignore が同梱されており、誤って git add でレポートがコミットに含まれるのを防ぎます。監査証跡としてレポートをコミットしたい場合は、その .gitignore を削除します。

パッチ機能は、リポジトリのスクラッチクローンで各パッチを開発するため、作業ツリーやインデックスは変更されません。パッチを作成したエージェントとは独立したエージェントが、ステージングされた差分をレビューし、プロジェクトのテストスイートを実行します。パッチファイルは、検証者が次の3点すべてを確信できる場合にのみ書き込まれます:その変更が当該発見事項に対処していること、新しい脆弱性を導入していないこと、動作が変更されていないこと(コードが受け入れる入力の変更は動作変更とみなされる)。認証チェックの緩和やテストの無効化など、セキュリティを弱める変更は自動的に拒否されます。検証者が3点すべてを保証できない場合、パッチの代わりに理由を説明する短いメモが提供されます。パッチはレポートの patches/ フォルダーに F<番号>.patch として保存され、自動適用はされません。ユーザーは git apply コマンドで手動適用します。

プラグインの使用には、有料 Claude Code プラン(v2.1.154 以降)と動的ワークフローが有効であることが必要です。また、Python 3.9.6 以降(標準ライブラリのみ使用)が python3 として PATH に存在し、Git が利用可能である必要があります。Linux、macOS、Windows をサポートします。スキャンはプランのトークン制限にカウントされます。プラグインはユーザーの権限でセッション内で実行されるため、独自の分離機構は提供しません。そのため、信頼できないリポジトリをスキャンする前にサンドボックスランタイムを使用する必要があります。さらに、スキャンは非決定的であり、従来の静的解析、依存関係スキャン、コードレビューの代わりにはなりません。