[開発者向け]コマンド1行でリポジトリの脆弱性をAIが診断—GitHub Security LabのTaskflow Agentとは

目次

はじめに

 GitHub Security Labは2026年3月6日、AIエージェントを活用してオープンソースソフトウェアの脆弱性を自動発見するフレームワーク「Taskflow Agent」の詳細と、実際に発見・開示済みの脆弱性事例を公開しました。本稿では、同フレームワークの仕組みと成果、具体的な発見事例について解説します。

参考記事

要点

  • GitHub Security Lab Taskflow AgentはYAMLファイルで定義したタスクをLLMが順次実行し、コードの脆弱性を段階的に発見するオープンソースフレームワークである
  • 40以上のリポジトリを対象に1,003件の問題を提案し、最終的に21%にあたる19件を高・致命的な深刻度の脆弱性として報告した
  • IDOR(Insecure Direct Object Reference)やビジネスロジック問題など、ロジック系の脆弱性発見に特に高い成果を示した
  • Outline、WooCommerce、Rocket.Chatなど実際のOSSプロジェクトで80件以上の脆弱性を発見・報告した
  • 実行にはGitHub Copilotライセンスが必要で、コードスペース上でコマンド1行から動作する

詳細解説

フレームワークの構造と設計思想

 Taskflow Agentは、YAMLファイルで一連のタスクを記述してLLMに順次実行させる仕組みです。単一の大きなプロンプトを使わずに複数のタスクへ分割する設計は、LLMのコンテキストウィンドウの制限に対応するためです。また複数タスクに分割することで処理の制御・デバッグが容易になり、同じプロンプトを多数のコンポーネントに対して非同期で繰り返し実行することも可能となっています。

 フレームワークの中心は3段階のパイプラインです。

 第1段階の「脅威モデリング」では、リポジトリを機能ごとにコンポーネントに分割し、各コンポーネントのエントリーポイント、信頼できない入力の受け取り方、想定ユーザーの権限と操作などの情報を収集してデータベースに保存します。

 第2段階の「問題提案」では、収集した情報をもとにLLMが各コンポーネントで発生しやすい脆弱性の種類を提案します。

 第3段階の「問題監査」では、提案された問題を新たなコンテキストで精査し、実際に悪用可能かどうかを具体的な攻撃シナリオとソースコードのファイルパス・行番号とともに検証します。

 従来の静的解析(SAST)ツールはコードの意図した用途やセキュリティ境界を考慮しないため、偽陽性が多くなりがちです。Taskflow Agentはこの課題に対し、脅威モデリングで取得した情報を監査プロンプトに組み込むことで、設計上意図された動作を脆弱性として誤判定するリスクを抑える構造となっています。

検出成果と精度データ

 GitHub Security Labの報告によれば、40以上のリポジトリに対してタスクフローを実行した結果、1,003件の問題が提案されました。監査段階を経て139件が「脆弱性あり」と判定され、重複排除後の91件を手動で検証したところ、22%(20件)は再現できない偽陽性、57%(52件)は実際の影響が限定的な低深刻度の問題と判断されました。最終的に高または致命的な深刻度の脆弱性として報告に値すると判断されたのは21%(19件)でした。このデータはgpt-5.xをコード解析・監査モデルとして使用した際の実績です。

 カテゴリ別の脆弱性検出率では、ビジネスロジック問題が25.0%と最も高く、認証問題16.5%、セキュリティ設定ミス17.3%、IDOR/アクセス制御問題15.8%と続きました。一方、SQLインジェクション、XXE、メモリ安全性に関する問題の検出率は0%でした。SQLインジェクションやメモリ安全性のバグは、従来の静的解析やファジングツールが得意とする領域であり、LLMとの適切な役割分担が考えられます。

具体的な発見事例

 コラボレーションツール「Outline」では、初回実行で認可ロジックのバグが発見されました(CVE-2025-64487)。ドキュメントの更新(ReadWrite)権限しか持たないユーザーが、グループのドキュメント権限をAdmin権限に昇格させられるというもので、本来「manageUsers」権限が必要なAPIエンドポイントに、より弱い「update」権限チェックしか実装されていませんでした。Outlineチームはこの問題を報告から3日以内に修正しました。

 ECサイト向けフレームワーク「WooCommerce」では、認証済みユーザーがゲスト注文の個人情報(氏名・住所・電話番号)を閲覧できる問題(CVE-2025-15033)が発見されました。同様の問題はRubyベースの「Spree」でも確認され(CVE-2026-25758)、連番の数字をインクリメントするだけでゲストユーザーの住所情報を誰でも参照できる状態でした。こうした認可ロジックのバグは静的解析ツールでは検出が難しく、AIがアプリケーションの文脈を理解した上で動作を追う手法の強みが発揮された事例と考えられます。

 チャットプラットフォーム「Rocket.Chat」では、TypeScriptの非同期処理に起因する認証バイパス(CVE-2026-28514)が発見されました。bcrypt.compare関数は非同期のPromiseを返す関数ですが、この関数の呼び出し結果をawaitせずに使用したため、Promiseオブジェクト自体が常にtruthyと評価され、どのパスワードでもログインできてしまう状態でした。LLMが複数ファイルにまたがってこの微妙な非同期処理のバグを追跡し、正確な結論に至った点は注目に値します。

得意領域と活用上の留意点

 GitHub Security Labの分析によれば、LLMはロジック系の問題発見に特に強みを示しました。コードの制御フローを追いながらアクセス制御モデルと意図した用途を考慮した分析は、人間のコードレビューに近いアプローチと言えます。脅威モデリングの精度も概ね高く、リバースプロキシやコードサンドボックス実行環境といった特殊な用途を持つアプリケーションでも適切な判断ができていたと報告されています。

 一方で偽陽性については、検出されたすべてのケースで根拠のある分析が示されており、単なる幻覚(ハルシネーション)による誤検知はなかったとのことです。LLMの非決定論的な性質上、同じコードベースに対して複数回実行すること、また異なるモデルを組み合わせて実行することが推奨されています。実行にはGitHub Copilotのライセンスが必要で、コードスペース上で ./scripts/audit/run_audit.sh myorg/myrepo を実行するだけで動作し、中規模リポジトリで1〜2時間程度かかります。

まとめ

 GitHub Security LabのTaskflow Agentは、脅威モデリングから脆弱性監査までを自動化するAIフレームワークで、実際のOSSプロジェクトで80件以上の高深刻度脆弱性の発見につながりました。従来の自動化ツールが苦手としてきたロジック系の脆弱性発見でAIが補完的な役割を担える可能性を示す取り組みとして注目されます。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!
目次