
Web、Android、iOSプロジェクト全体のソースコード監査、イシュートリアージ、脆弱性検出のためのAIエージェントタスクフローとMCPサーバーの例。
このリポジトリには、SecLab Taskflow Agent で使用するためのサンプルタスクフローと、タスクフローの実行に必要なカスタム MCP サーバーが含まれています。
(.venv) が表示されたら準備完了です。python -m seclab_taskflow_agent -t seclab_taskflows.taskflows.audit.ghsa_variant_analysis_demo -g repo=github/cmark-gfm -g ghsa=GHSA-c944-cv5f-hpvr
次に、ご自身のプロジェクトのいずれかで監査タスクフローを実行してみてください。 ここでは例として OWASP Juice Shop を使用します:
./scripts/audit/run_audit.sh juice-shop/juice-shop
⚠️ 注意: 監査タスクフローは、特に大規模なプロジェクトでは実行に数時間かかることがあり、大量の AI リクエストを行うため、少なからぬ費用がかかる可能性があります。 デフォルトでは、タスクフローは Copilot API を使用します。Copilot の請求に関する詳細はこちらをご覧ください。 あるいは、こちらで説明されているように、
AI_API_ENDPOINT環境変数を設定することで別の AI API を使用することもできます。
監査の結果は SQLite データベースに書き込まれ、実行の最後に SQLite ビューアで自動的に開かれます。結果は "audit_result" という名前のテーブルにあります。このテーブルには "has_vulnerability" という名前の列があり、真の脆弱性である可能性が最も高い行にチェックマークが付いています。
監査ワークフローは、Web アプリケーションやライブラリに加えて、Android、iOS、およびクロスプラットフォームのモバイルアプリケーションを認識します。 モバイルのエントリポイント収集では、エクスポートされた Android コンポーネント、ディープリンク、URL スキーム、Universal Links、アプリ拡張機能、 および WebView JavaScript ブリッジが、それらの権限、エクスポート状態、入力フィルターを含めて記録されます。
監査ランナーは分類の前にこのメタデータを収集し、モバイルアプリケーションとしてマークされたコンポーネントにモバイル固有の
ガイダンスを適用します。既存の --advisory および -m オプションもモバイル実行に適用されます。
両方のモバイルエントリポイントタスクフローは、コンテナベースのソースアクセスツールボックスを使用し、Docker を必要とします。
モバイルメタデータは mobile_entry_point テーブルに保存されます。既存のコンテキストデータベースは、既存の結果を削除することなく、null 許容の
application.is_mobile_app 列を自動的に取得します。
タスクフローはサンドボックス環境で実行することをお勧めします。GitHub Codespaces は便利ですし、あるいはお好みであれば、こちらで概説されているように、スクリプト run_seclab_agent.sh を使用して seclab-taskflow-agent の docker コンテナを実行することもできます。このスクリプトはリポジトリのメインディレクトリから実行する必要があり、カスタム MCP サーバーがデータを保存するための環境変数を含む .env ファイルが同じディレクトリにある必要があることに注意してください。
まず、リポジトリのメインディレクトリに .env ファイルを作成します。run_seclab_agent.sh には以下を使用できます:
MEMCACHE_STATE_DIR=/app/data
CODEQL_DBS_BASE_PATH=/app/data
DATA_DIR=/app/data
LOG_DIR=/app/logs
MEMCACHE_STATE_DIR は memcache にいくつかの中間データを永続化するために必要で、DATA_DIR はさまざまな mcp サーバーが中間結果を保存するために必要で、LOG_DIR はサーバーによって生成されたログファイルを保存するために使用されます。これらはメインディレクトリの .env ファイルで設定できます。カスタム MCP サーバーに環境変数が設定されていない場合、関連するフォルダーが自動的に作成されます。場所はプラットフォームによって異なり、platformdirs によって設定されます。
さらに、AI API のエンドポイントとシークレットも環境変数または Codespace シークレットを介して設定する必要があります。特に、環境変数 AI_API_TOKEN と AI_API_ENDPOINT を適切な AI API エンドポイントと認証情報に設定する必要があります。設定されていない場合、デフォルトの AI_API_ENDPOINT は GitHub Copilot です:
AI_API_ENDPOINT="https://api.githubcopilot.com"
さらに、コンテンツの取得や issue の作成など、GitHub API とのやり取りを可能にするために、GH_TOKEN 環境変数も設定する必要があります。
個々のタスクフローには追加のセットアップが必要な場合があります。さらなる要件については、関連するサブディレクトリの README.md を参照してください。
関連する環境変数を設定した後、次のコマンドでサンプルタスクフローを実行します:
./scripts/run_seclab_agent.sh -t seclab_taskflows.taskflows.audit.ghsa_variant_analysis_demo -g repo=github/cmark-gfm -g ghsa=GHSA-c944-cv5f-hpvr
SecLab Taskflows は、SecLab Taskflow Agent リポジトリのコンパニオンリポジトリです。 SecLab Taskflow Agent は、GitHub Security Lab によって維持されている実験的なエージェントフレームワークです。このリポジトリは、SecLab Taskflow Agent で使用するためのサンプルタスクフローとサポートリソースを提供します。私たちは、エージェントとこれらのタスクフローを使用して、脆弱性のコード監査や issue のトリアージなど、セキュリティ目的で AI エージェントを使用する実験を行っています。
皆様からのフィードバックをお待ちしています。機能リクエストやバグ報告をお送りいただくには、issue を作成してください。プルリクエストも歓迎します(貢献をご希望の場合は、詳細について貢献ガイドラインをご覧ください)。
ghcr.io/githubsecuritylab/ のコンテナイメージは latest タグを使用します。
このタグは可変であるため、ローカルにキャッシュされたイメージが古くなる可能性があり、
Docker が現在のレジストリイメージではなくそのイメージを使い続けることがあります。Docker が
最新バージョンを確実にプルする必要がある場合は、タスクフローを実行する前にローカルイメージを削除してください:
docker rmi -f $(docker images --format '{{.Repository}}:{{.Tag}}' | grep '^ghcr.io/githubsecuritylab/')
このプロジェクトは MIT ライセンスの条件の下でライセンスされています。完全な条件については LICENSE ファイルを参照してください。