AIによるコード脆弱性解析の実績が出始めた
同じ週に、AIをコード解析エージェントとして使ったセキュリティ研究の成果が2件公開された。AnthropicがClaudeでMozilla FirefoxのJSエンジンを解析して22件のCVEを発見したケースと、GitHub Security LabがOSSのAI駆動フレームワーク「Taskflow Agent」でWebアプリの脆弱性を80件以上発見したケースだ。ターゲットもアプローチも異なるが、どちらも「AIがコードを読んでセキュリティ研究者より先にバグを見つける」という方向性を実証している。
Claude × Firefox SpiderMonkey: 22件のCVE
AnthropicのFrontier Red TeamがClaude Opus 4.6をエージェントとして動かし、FirefoxのJavaScriptエンジン(SpiderMonkey)を2週間解析した。サンドボックス化されたVMに標準ユーティリティと脆弱性解析ツールを配置し、特別なプロンプト設計やカスタムハーネスは用意していない。モデルとコードだけだ。約6,000個のC++ファイルをスキャンし、合計112件のバグレポートを提出した。
| 種別 | 件数 |
|---|---|
| CVE 発行件数 | 22件 |
| うち high-severity | 14件 |
| うち moderate-severity | 7件 |
| その他のバグ(CVEなし) | 約90件 |
| レポート総数 | 112件 |
14件のhigh-severity脆弱性は、2025年に修正されたFirefox全体のhigh-severity脆弱性の約5分の1に相当する。全修正はFirefox 148で出荷済み(一部は次回リリースで修正予定)。
解析手法と発見された脆弱性
Claudeの解析手法はパターンマッチングではなく「仮説生成」型だ。Gitコミット履歴を参照し、あるファイルで修正されたパッチ(たとえばスタック境界チェックの追加)を見つけると、同じ関数を呼んでいる別のファイルに同じチェックがないことを推論して脆弱性を発見する。探索開始からわずか20分で最初のUse After Free(メモリ解放後のポインタ参照)脆弱性を報告している。
発見された脆弱性には以下のような種類がある。
- Use After Free(メモリ解放後のポインタ参照)
- JIT miscompilation(JITコンパイラの最適化ミス)
- ファジングでは見つからない論理エラーの新クラス
特に注目すべきはCVE-2026-2796(CVSS 9.8)だ。WebAssemblyモジュール間のインポート/エクスポートで型チェックがバイパスされ、型が一致しないwasm関数が最適化によりインポートレコードに配置される問題で、JIT miscompilationに分類される。
ファジング(ランダム入力を大量実行して異常終了を探す手法)はクラッシュやアサーション失敗を見つけるのに向いているが、論理エラーは実行が続くためクラッシュとして顕在化しない。AI静的解析とファジングの得意・不得意はこう整理できる。
| 手法 | 得意な脆弱性 | 苦手な脆弱性 |
|---|---|---|
| ファジング | クラッシュ・アサーション失敗 | 論理エラー・情報漏洩 |
| AI静的解析 | 論理エラー・コードパターン | 実行時依存のタイミング問題 |
| 人間のコードレビュー | 設計上の欠陥・複雑な文脈 | 大規模コードベース全体 |
「AIがファジングの代替になる」ではなく「ファジングで見落とす層をAIが補う」という補完関係だ。
エクスプロイト作成の試行
Anthropicは発見した脆弱性をエクスプロイト(実際に攻撃に使えるコード)に変換できるかも検証している。APIクレジット約$4,000を投じて数百回のテストを実施した結果、エクスプロイトに変換できたのは2件のみだった。CVE-2026-2796はそのうちの1件だが、サンドボックスを意図的に無効化したテスト環境でのみ動作した。複数の脆弱性を組み合わせてブラウザのサンドボックスを脱出するfull-chain exploitは達成できていない。
graph LR
A[6,000個のC++ファイル] --> B[112件のバグレポート]
B --> C[22件のCVE]
C --> D[エクスプロイト試行<br/>数百回・$4,000]
D --> E[成功 2件<br/>サンドボックス無効環境のみ]
D --> F[full-chain exploit<br/>未達成]
Anthropicは「Claudeはバグを見つけるのは得意だが、エクスプロイトに仕立てるのはまだ苦手」と評価している。バグ発見とエクスプロイト作成は別のスキルで、現時点ではAIの脅威は「既知の脆弱性の悪用を自動化する」よりも「防御側がバグを先に見つける」方向で大きい。
レポート品質とMozillaの対応
Claudeが生成したレポートは「バグが存在する可能性がある」という示唆だけでなく、最小限の再現テストケースを含む形式で提出された。Mozillaのセキュリティチームが迅速に検証・修正できた要因だ。バグの優先度判断や再現環境の準備はセキュリティエンジニアの時間を大きく食う工程で、ここをClaudeが省力化している。
Mozillaは今回の成果を受けて、AI支援解析を内部セキュリティワークフローへ統合し始めている。従来は「外部研究者からのバグバウンティ報告」と「内部ファジング」の組み合わせが主体だったが、AIエージェントによるコードベース静的解析を継続的に走らせることで、攻撃者より先に脆弱性を見つける体制を構築しようとしている。
GitHub Taskflow Agent: WebアプリのAI監査フレームワーク
GitHub Security Labが「Taskflow Agent」と呼ぶOSSのAI駆動脆弱性スキャンフレームワークを公開した。Claudeによる単発の解析と異なり、こちらは誰でも自分のリポジトリに対して実行できる汎用ツールとして設計されている。公開時点で80件以上の脆弱性を発見、うち約20件が開示済みだ。
Taskflowの仕組み
Taskflow Agentの中核は「タスクフロー」と呼ぶYAMLファイルで定義された逐次タスクの連鎖だ。モノリシックなプロンプトを1回投げるのではなく、解析を細かいステップに分解してそれぞれ実行する。各タスクは新しいコンテキストで開始され、タスク間のデータ受け渡しにはmemcache toolbox(Key-Valueストア)を使う。SQLiteデータベース(repo_context.db)に中間結果を蓄積しながら進むため、後続のタスクが前タスクの知見を利用できる。LLMのコンテキストウィンドウの制約を分割統治で回避する設計だ。
graph TD
A[リポジトリを機能コンポーネントに分解] --> B[各コンポーネントのコンテキスト収集<br/>エントリポイント・権限レベル・機能目的]
B --> C[コンポーネントごとに脆弱性候補を提案]
C --> D[候補を詳細に監査]
D --> E[context DB に蓄積]
E --> F[レポート生成]
「コンテキスト収集」フェーズでコードのどこが認証境界かを把握させてから監査に入る。この前処理が「このエンドポイントは認証なしでアクセスできるか?」という具体的な問いへの答えを出しやすくしている。
検出できる脆弱性カテゴリ
現在のタスクフローが特に得意とするのは以下のカテゴリだ。
認証バイパス(Auth Bypass) 認証チェックが迂回できる設計ミスや実装バグ。「パスワードを任意の値で送信してもログインできる」チャットプラットフォームの事例が実際に発見されている。
IDOR(Insecure Direct Object Reference、アクセス制御不備) 他のユーザーのリソースに直接IDを指定してアクセスできる問題。IDORは手動コードレビューでは見落としやすく、フローを追って境界チェックの有無を検証するのにAIが向いている。
Token Leak / 認証情報漏洩 ログ・エラーレスポンス・APIレスポンスに認証トークンや秘密情報が含まれるケース。
情報開示(Information Disclosure) プライベートなユーザーデータが権限チェックなしに取得できる問題。
実際に見つかったCVE
公開済みの事例をいくつか挙げる。
| プロジェクト | 脆弱性 | CVE |
|---|---|---|
| WooCommerce(PHP) | ログイン済みユーザーがゲスト注文を全件閲覧可能。氏名・住所・電話番号等の個人情報漏洩 | CVE-2025-15033 |
| Spree(Ruby、ECフレームワーク) | 未認証ユーザーがパラメータをインクリメントするだけでゲスト注文の住所・電話番号を列挙可能 | CVE-2026-25758 |
| Spree(同上) | 類似のIDOR脆弱性 | CVE-2026-25757 |
ECサイトのカートロジックや注文処理における体系的な問題の発見に特に効果的だった。CodeQLアラートのトリアージ用タスクフローでは約30件の実際の脆弱性を発見している。
使い方
リポジトリは GitHubSecurityLab/seclab-taskflows で公開されており、GitHub Codespaces上ですぐに動かせる。
./scripts/audit/run_audit.sh myorg/myrepo
中規模リポジトリで1〜2時間が目安の実行時間。実行にはGitHub Copilotのライセンスが必要で、プレミアムモデルを使うリクエストは別途コストが発生する。カスタムタスクフローもYAMLで定義できるため、特定の脆弱性クラスに特化した監査にも対応できる。
既存のSAST/DASTとの違い
従来の静的解析ツール(SAST)はルールベースのパターンマッチングで動くため、既知パターン外の問題には弱い。Taskflow AgentはコードのセマンティクスをAIが理解してから問いを立てるため、「このコードはビジネスロジックとして正しいか」という層の問題を検出できる。CodeQL MCP Serverと連携し、テンプレート化されたCodeQLクエリをMCPツールとして提供することで、既存のCodeQLインフラの上にLLMの推論を載せるアプローチを取っている。
GitHub Security Labが特に強調しているのがfalse positive(誤検知)の少なさだ。AIベースのツールは「何でも脆弱性と言いがち」という批判があるが、タスクフロー設計でコンテキストを先に積み上げることで実際に悪用可能な問題に絞り込んでいる。false positiveの主因はリポジトリメンテナーのみがトリガーできるアクセス制御や、既に無効化されたワークフローなど、コードパターンだけでは判別しにくいがコードの意味を理解すれば識別できるケースだという。
2つのアプローチの比較
| 項目 | Claude × Firefox | Taskflow Agent |
|---|---|---|
| モデル | Claude Opus 4.6 | GitHub Copilot(プレミアムモデル) |
| ターゲット | C++/Rust(低レイヤー) | Python/JS/Ruby(Webアプリ) |
| 公開形態 | 研究プロジェクト | OSSフレームワーク |
| 発見件数 | 22件CVE + 約90件 | 80件以上(うち約20件開示済み) |
| 得意な脆弱性 | 論理エラー・メモリ安全性 | Auth Bypass・IDOR・Token Leak |
| 解析手法 | 仮説生成型(Git履歴参照) | タスクフロー分割統治 |