Anthropic Defending Code Reference Harness
Anthropicは、Claudeを使用してソフトウェアの脆弱性を自動的に発見・修正するためのオープンソースのリファレンス実装であるdefending-code-reference-harnessをリリースしました。このフレームワークは、偵察、脆弱性発見、検証、報告、およびパッチ適用に構造化されたパイプラインを提供し、特にC/C++のメモリ脆弱性に最適化されていますが、他の言語や脆弱性の種類にも移植可能です。
The Autonomous Vulnerability Discovery Pipeline
このリファレンス・ハーネスは、初期のコードベース分析から検証済みのパッチ適用に至るまでの7段階の自律的なループを実装しています。このプロセスは、すべての発見事項に対して実行ベースの検証を要求することで、誤検知を減らすように設計されています。
- Build: ターゲットとなるコードは、メモリ・エラーを検出するために、通常C/C++ではAddressSanitizer (ASAN)を使用してDockerイメージにコンパイルされます。
- Recon: 軽量なエージェントがソースコードを分析し、入力解析サブシステムの分割を提案することで、複数のエージェントが重複することなく異なる攻撃対象領域を探索できるようにします。
- Find: 複数のエージェントが並列に動作し、それぞれが不正な入力を生成して、クラッシュが継続的に再現される(例:3回中3回)までバイナリを実行します。
- Verify: 別のグレーダー・エージェントが、Findエージェントが提供したPoC(概念実証)のみを使用して、新しく隔離されたコンテナ内でクラッシュを再現します。
- Dedupe: ジャッジ・エージェントが、検証済みのクラッシュを以前に報告されたバグと比較し、発見事項がユニークなものか重複しているかを判断します。
- Report: レポート・エージェントが、プリミティブ・クラス、到達可能性、および深刻度を詳細に記した構造化されたエクスプロイト可能性分析を生成します。
- Patch: パッチ・エージェントが修正案を提案し、その後グレーダー・エージェントによって、コードがビルド可能であること、元のPoCがクラッシュしなくなること、および既存のテストスイートが引き続きパスすることを確認します。
Implementation and Security Sandboxing
自律的なパイプラインは脆弱性を検証するためにターゲット・コードを実行するため、Anthropicは厳格な隔離を強調しています。このハーネスは、明示的にオーバーライドされない限り、gVisor sandboxの外部で実行されることを拒否します。このサンドボックスは、コンテナレベルの隔離と、エージェントがClaude APIとの通信のみを許可するエグレス・ホワイトリストを提供します。
対話的な使用のために、フレームワークはファイルのみを読み書きする「Claude Code skills」(例:/threat-model、/vuln-scan、/triage)を提供しています。これらの対話的なスキルは、ユーザーが各ツールの使用をレビューして承認する場合に限り、サンドボックスなしで実行可能です。
Customizing the Harness for Different Stacks
デフォルトの実装はC/C++のメモリ脆弱性を対象としていますが、フレームワークは汎用的な形状として設計されています。ハーネスを他の言語や脆弱性の種類に移植するには、主に3つのコンポーネントを定義する必要があります。
- Finding Signals: 何がバグを構成するかを定義します(例:ASANのクラッシュ・シグネチャを例外ログやDNSコールバックに置き換える)。
- Proof of Concept: エビデンスの形式を定義します(例:クラッシュする入力ファイルをHTTPリクエスト・シーケンスに置き換える)。
- Build/Run Environment: ターゲットをコンテナ内でコンパイルおよび実行するための
Dockerfileを提供します。
Deployment Strategy: The "Ramp Up" Model
Anthropicは、AIを活用した脆弱性発見をセキュリティ・ワークフローに統合するための段階的なアプローチを「Ramp Up」モデルとして推奨しています。
- Day 1: 対話的なスキルを使用して、脅威モデルを構築し、静的スキャンとトリアージを行ってください。
- Day 2: 自律的なループを理解するために、既知の脆弱性があるライブラリに対してリファレンス・パイプラインを実行してください。
- Days 3-5: 特定の内部ターゲットに対してパイプラインをカスタマイズしてください。
- Week 2: 複数の実行にわたって、自律的なスキャン、トリアージ、およびパッチ適用をスケールアップしてください。
Community Insights and Technical Considerations
業界の実務家やコミュニティ・メンバーは、このようなフレームワークのユーティリティとコストに関するいくつかの重要な点について提起しています。
The "Shop Jig" Philosophy
一部の開発者は、リファレンス実装は、すぐに使える製品ではなく、設計図(ブループリント)として使用するのが最善であると主張しています。あるコミュニティ・メンバーは、最も効果的なアプローチは、リファレンスをアイデアの源として使い、その後、特定のワークスタイルやアラート・システムに合わせたカスタム・ハーネスを構築することであると述べています。
Cost and Resource Intensity
自律的なエージェントを大規模に実行することは、高額になる可能性があります。見積もりによれば、各エージェントは1分間に約10Kの未キャッシュ・インプット・トークンと2Kの出力トークンを消費します。OpusやMythosなどのモデルを使用する場合、これには1回あたりの実行で数百から数千ドルに及ぶコストがかかる可能性があります。
The Limits of AI Auditing
セキュリティ・オーディターは、「バイブ・オーディティング(感覚的な監査)」への警告を発しています。これは、ツールが大量の誤検知を可能な限り開発者へ押し付けることで、開発者を圧倒してしまう現象をです。効果的なAI脆弱性発見には、高品質なハーネス・パイプライン、および、暗号学的脆弱性のように、汎用的なエージェントでは見えない可能性がある複雑なバグを特定するための技術の継続的な洗練が必要となります。