
2026/06/05 5:11
Anthropic の AI 駆動型脆弱性情報発見のためのオープンソースフレームワーク
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
サマリーは全体的には良好ですが、キーポイント(コマンド、特定のスキル、パイプラインの段階)に見られる具体的な実行可能な詳細が不足しています。構造とコマンドを取り入れたやや詳細なバージョンであれば、推論を加えずに完全性を向上させることができます。
サマリー(改善版)
Anthropic は、「Claude Security」というソフトウェアの脆弱性発見および修正のためのマネージドサービスを紹介しており、オープンソースのリファレンスハルネス
github.com/anthropics/defending-code-reference-harness が提供されています。このリポジトリは、セキュリティチームとのパートナーシップから得られた知見を活用し、自律的な C/C++ 脆弱性発見および修正のためのガイド役を担っていますが、外部からのコントリビューションを受け入れるメンテナンスされた製品ではありません。アクセスには Bedrock や Vertex、Azure などの特定の API が要求されます。
コア技術は、脅威モデリング、静的スキャン、実行検証、パッチ適用を含む厳格な多段階パイプラインを使用しています。主要なスキルには
/threat-model、/vuln-scan、/triage、/patch、および /customize があります。特に重要なのは、自律エージェントがシステムへの損傷を防ぐために gVisor サンドボックス内で対象コードを実行すること(Claude API へのエGRESSは制限されている)であり、パイプラインを bin/vp-sandboxed を通じて呼び出す前にユーザーが ./scripts/setup_sandbox.sh を実行する必要があります。/quickstart スキルはサンドボックスなしで Claude Code で安全に確認できるのに対し、自律ループにはそれを必要とします。
ユーザーは段階的なアプローチに従うよう推奨されます:ステップ 1(Day 1)では、対象コードに対して静的スキャンと脅威モデリングを行い、
/patch を通じてパッチを生成し、カスタマイズをスモークランで検証してからステップ 2(Day 2)へ進む。ステップ 2 では C/C++ ライブラリ向けの完全な自律ループを展開します。生产用途では、組織は複数の並列パイプラインウェーブ(ステップ 4)を実行し、結果に対して自動タリアジを行うべきです(/triage で投票を使用)。本システムは SDLC に連続的検証を統合しており、毎日スキャンや CI パイプラインを通じて運用され、ゼロから構築される完璧なプラットフォームを要求せずに多様な依存関係の露出に対処するのを支援します。サンドボックス化、カスタマイズ、およびパッチに関するドキュメントは docs/security.md、docs/agent-sandbox.md および関連ガイドで利用可能です。本文
Claude Security: 自律型脆弱性発見・是正のための参照実装
本ドキュメントは、複数のセキュリティチームと連携して得た知見に基づき、Claude Codeを活用した自律型脆弱性発見および是正のためのオープンソース参照実装です。詳細なベストプラクティスは以下のブログ記事をご参照ください。
📚 関連情報: blog-post.md、クックブック
⚠️ 重要な注意事項
- 本リポジトリはメンテナンス中ではありません。 コントリビューションの受け付けは行っておりません。
- 🔒 マネージドオプションをご希望ですか?
- Anthropic 公式には「Claude Security」というホスティングされた製品があります。
- レポジトリ全体のソースコードスキャン、誤検知削減のための多段階検証パイプライン、ライフサイクル全体(分類・修復検証・パッチ生成)の管理が可能です。
本リポジトリは、ご自身の脆弱性発見パイプラインを構築・カスタマイズするための参照実装です。Bedrock、Vertex、Azure など、あらゆる Claude API 環境と併せてご利用ください。
📑 目次(機能一覧)
: インタラクティブな範囲指定(スコーピング)/quickstart
: 脅威モデリング/threat-model
: 脆弱性スキャン/vuln-scan
: 分類・優先付け/triage
: 是正パッチ作成/patch
: パイプラインのカスタマイズ/customize
🚀 最初のステップ: Claude Code で本リポジトリを開き、
/quickstart を実行して概要を理解することをお勧めします。
🔧 harness/(自律型参照パイプライン)
harness/ ディレクトリには、recon → find → verify → report → patch のループを自動化した参照実装が含まれています。
構造と利用方法
- 用途: C/C++ メモリー関連の脆弱性を Docker と ASAN(メモリエラー検出器)を用いて発見・是正する設定済みパイプライン。
- 注意:
- 製品ではなく参照実装です。
- 構造やプロンプト、サンドボクシング環境の設定は再利用可能ですが、そのままではすべてのコードベースで動作しない可能性があります。
を実行し、ご自身の言語や検出器に合わせてポートアウトしてください。/customize
🔒 セキュリティに関する注意事項
自律型パイプライン(および
/patch の実行)はターゲットコードを実行するため、以下の制限があります。
| 機能 | 動作内容 | サンドボクシング necessity |
|---|---|---|
read/write (, , etc.) | ファイルの読み書きのみ | ❌ 不要 (承認のみで安全) |
static analysis () | 静的な見出しファイルへの処理のみ | ❌ 不要 (承認のみで安全) |
full harness () | コードの実行(脆弱性検証) | ✅ 必須 (gVisor サンドボックス使用推奨) |
💡 セキュリティ: 各ツールの使用を
で承認し、サンドボクシングなしで安全に実行可能です(ファイル操作のみの場合)。コードを実行する場合はclaudeを実行し、scripts/setup_sandbox.shを介して起動してください。bin/vp-sandboxed
🏁 Getting Started(まずは始める)
基本的な動作を確認するためのコマンド例です。
git clone https://github.com/anthropics/defending-code-reference-harness cd defending-code-reference-harness claude # ガイド付き初回実行(テスト用ターゲット「canary」で 30 秒程度) > /quickstart # Java へのポートアウト方法の問い合わせ > /quickstart Java にパイプラインをポートアウトする方法は? # バグの分類 (triage) に関する問い合わせ > /quickstart これだけのバグをどう分類 (triage) すればよいですか?
📖 Further Reading(さらなる学習資料)
- ブログ記事: 知見とベストプラクティスを含む詳細情報。
- パイプライン: 動作原理、ステージ構成、CLI フラグの説明。
- セキュリティ: サンドボクシング要件、マウントすべきでないボリューム。
- エージェントサンドボックス: gVisor アイソレーションおよび外部通信(エグレッグ)許可リストの設定。
- カスタマイズ: スタックへのポートアウト方法、変更されるファイルとその理由。
- パッチング: 確認されたクラッシュに対する修復コードの生成と検証ロジック。
- トラブルシューティング: 重複処理回避、レート制限対応、サブエージェントのモデル固定など。
- サフガード: 危険なサイバー攻撃行動へのブロック機能。
🚀 Ramp Up(実践的なペースアップ)
セキュリティチームの成功は、素早く実践的な経験を積むことから始まります。完璧なパイプラインを設計するために数ヶ月費やす必要はありません。小さく始めて、知見を得ながら段階的に構築してください。
💡 パターン: 1 日目から小さな目標を設定し、毎日進捗を見ながら拡大する野心的だが合理的なペース設定をお勧めします。
ステップ 1: 脅威モデリング、初回スキャンと分類(1 日目)
エンドツーエンドの全体像を確認するため、インタラクティブなスキルのみを使用します。サンドボックスは不要です。
目標:
- 脅威モデルを構築し、静的スキャンを実行。
- 結果を分類して優先順位を付け、候補修復案を作成する。
# すべてのサブエージェントを希望モデルに固定(任意) export CLAUDE_CODE_SUBAGENT_MODEL=<model-id> claude # 0. イントロダクションとガイド付き実行 > /quickstart # 1. 脅威モデルの構築(ターゲット:canary) > /threat-model bootstrap targets/canary # 2. テーマスモデルに基づいた範囲指定での静的スキャン実行 > /vuln-scan targets/canary # 3. 結果の確認、重複除外、優先順位付け (TRIAGE.json などへの出力) > /triage targets/canary/VULN-FINDINGS.json # 4. 確認された見出しに対する候補修復案の生成 > /patch ./TRIAGE.json --repo targets/canary
📝 生成されるアソフィアト:
THREAT_MODEL.md, VULN-FINDINGS.{json,md}, TRIAGE.{json,md}, PATCHES/
⚠️ 注意: テスト用ターゲット(canary)における
は、意図的な脆弱性を含むデモコード(entry.c)についても誤検知として却下する場合があります。完全なフローを確認するには、別途カーテッドフィクスチャを指定するか、ご自身のコードに対して実行してください。/triage
ステップ 2: C/C++ ライブラリへの適用と参照パイプライン実行(2 日目)
インタラクティブなスキルから自律型パイプラインへの移行です。既知の脆弱性を有するオープンソースライブラリ (
drlibs) を対象に、完全なループを実行します。
構成:
recon (再認識) → find (発見) → verify (検証) → report (報告) + パッチ生成。
セットアップコマンド:
# 環境構築(1 回限り) python3 -m venv .venv && .venv/bin/pip install -e . ./scripts/setup_sandbox.sh # gVisor とエージェントイメージのインストール export ANTHROPIC_API_KEY=sk-ant-... # または CLAUDE_CODE_OAUTH_TOKEN(必須)
パッチング実行コマンド:
# recon → find → verify → report ループの実行 bin/vp-sandboxed run drlibs --model <model-id> --runs 3 --parallel --stream --auto-focus # 発見された問題への修復案の生成 bin/vp-sandboxed patch results/drlibs/<timestamp>/ --model <model-id> # ※または、Claude Code で監視しながら実行 claude > drlibs でパイプラインを実行し、見出されるにつれて説明してもらってください
📂 出力先:
results/drlibs/<timestamp>/
⚠️ 警告:
は自律型エージェントを起動し、run コマンド内でコードを実行します。明示的に許可されていない外部環境での開始は拒否されます(サンドボクシングは必須)。gVisor コンテナ
🔄 パイプライン内部の 7 つのステージ
- Build: ターゲットを ASAN付きDocker イメージにコンパイル。
- Recon: ライトエージェントがネットワーク隔離下でソースを読み、攻撃可能なパーティション(サブシステム)を提案。並列探索エージェントの収束を防ぐ。
- Find: N エージェントが並列実行。ASAN バイナリを実行し、クラッシュを引き起こす入力パターンの探索を行う。
- Verify: 別の判定者エージェント(グレーダー)が新コンテナ内でクラッシュを再現確認する(プロトタイプコードのみ受け渡す)。
- Dedupe: 判事エージェントが新バグか既知のバグかの判定、重複抽出を行う。
- Report: レポートエージェントが攻撃可能性分析(プリミティブ、到達可能性、エスカレーション経路、深刻度)を記述。
- Patch: パッチエージェントが修復案を記述。ビルド可否・クラッシュ回避・テストパスなどの検証を行う。
詳細は
をご参照ください。docs/pipeline.md
ステップ 3: パイプラインのターゲット向けカスタマイズ(3 日目〜5 日目)
ハワネスを自分のコードベースに合わせて調整します。ステップ 1 で構築したスキルを自身のコードに適用し、
/customize で最適化を行います。
参照パイプラインの特徴:
- C/C++ メモリー関連の脆弱性発見を想定しているが、汎用的な形状をしている。
- 新しい言語や脆弱性クラスへのポートアウトも容易。
カスタマイズ手順:
-
ステップ 1 のスキルで自身のコードを分析(サンドボックス不要):
claude > /quickstart これを ~/code/my-service にどうカスタマイズすればよいですか? > /threat-model bootstrap-then-interview ~/code/my-service > /vuln-scan ~/code/my-service > /triage ~/code/my-service/VULN-FINDINGS.json --repo ~/code/my-service -
アーティファクトを基に
を実行:/customize> /customize use ~/code/my-service/{THREAT_MODEL.md,VULN-FINDINGS.json} and ./TRIAGE.mdこれにより
が設定されます。targets/my-service/ -
スモーークテスト(単一実行検証):
bin/vp-sandboxed run my-service --model <model-id> --runs 1詳細は
をご参照ください。docs/customizing.md
カスタマイズ時の考慮点(C/C++ 参考 vs ご自身のターゲット):
| 項目 | C/C++ 参照実装 | ご自身のターゲット (例: Java, Go) |
|---|---|---|
| 見出しのシグナル | ASAN クラッシュサインチャート | エクセプション / カヌアリファイル / DNS コールバック |
| プロトタイプコード | クラッシュする入力ファイル | HTTP リクエストシーケンス / トランザクションリスト / テストハワネス |
| ビルド方法 | Dockerfile (clang + ASAN) | コンテナ内での自言語のビルド |
ステップ 4: 自律型スキャン・分類・パッチングの実施(2 週間目以降)
カスタマイズ済みのパイプラインを本格的に運用開始。複数のスキャン実行(ウェーブ)を行い、その結果を統合して管理します。
コマンド例:
# スキャン:並列実行のウェーブ bin/vp-sandboxed run my-service --model <model-id> --runs 5 --parallel --stream --auto-focus # 分類:すべての見出しの重複排除と優先順位付け(脅威モデル活用) > /triage results/my-service/ --repo ~/code/my-service --auto --votes 5 # パッチ:上位優先順位の修復案を生成・検証 > /patch results/my-service/<timestamp>/ --model <model-id>
⚠️ 運用上の注意点:
- サンドボクシングは必須: ステップ 2 のガイドラインに従ってください。
- パッチングの重要性: 発見されたバグを速やかに修復(パッチ)すると、モデルがその問題に再注目せず、より深い新しい問題へ探索が進みます。
- 未解決の問題: 自律型分類と完全な自動パッチングは現在も研究途上です。検証戦略や優先順位付け的判断は人的介入が必要になる場合があります。
詳細は
と docs/triage.md
をご参照ください。docs/patching.md
🔮 Looking Forward(将来展望)
ペースアップ後に注力すべき方向性:
- 優先順位付け: 全レポジトリおよび依存関係をレビューし、CVE 歴、ビジネス重要性に基づいて優先順位を付与。
- インフラの構築: ラップトップやワンオフ VM からスキャンを移行する専用プラットフォームの構築(完璧主義ではなく機能優先)。
- SDLCへの統合: CI パイプラインや定期タスク(毎日/週次)にスキャンを組み込む。
- モデル最適化: 組織にとって最も効果的なモデルを選択・実験し続ける。