ジェネラティブエージェンツの大嶋です。
「AIエージェントキャッチアップ #38 - Agentic Radar」という勉強会を開催しました。
generative-agents.connpass.com
アーカイブ動画はこちらです。
Agentic Radar
今回は、Agentic Workflowのセキュリティスキャナー「Agentic Radar」を扱いました。
Agentic RadarのGitHubリポジトリはこちらです。
今回のポイント
Agentic Radarとは
Agentic Radarは、Agentic Workflowのセキュリティスキャナーです。 OpenAI Agents SDKやLangGraph、CrewAIなどのフレームワークを使ったコードをスキャンし、プロンプトインジェクションなどの脆弱性を特定します。
Agentic Radarには主に2つの機能があります。
- scan:静的解析により、コードベースから潜在的な脆弱性を検出
- test:動的テストにより、実際の攻撃シナリオで脆弱性を検証
scanの実行
scanコマンドは、プロジェクトのコードを静的に解析して脆弱性を検出します。
以下のように、使用しているフレームワークとコードが配置されたディレクトリを指定して実行します。
agentic-radar scan openai-agents -i ./src/customer_service/
実行すると、以下のようなレポートが出力されます。
レポートでは、ワークフローが可視化されたり、使われているシステムプロンプトや検出された脆弱性が一覧化されています。
scanコマンドに--harden-prompts
をつけると、LLMによるプロンプトの改善提案も生成されます。
testの実行
testコマンドは、実際に攻撃ペイロードを使用して脆弱性を検証します。
以下のように、フレームワークとエントリーポイントのファイルを指定して実行します。
agentic-radar test openai-agents ./src/customer_service/main.py
実行すると、いくつかの攻撃が試され、その後以下のようにレポートが出力されます。
なお、testコマンドは現状OpenAI Agents SDKのみ対応しています。
Agentic Radarのscanの仕組み
Agentic Radarのscanでは、以下のようにワークフローが可視化されます。
この仕組みが気になったのでコードを読んでみたところ、Pythonのastモジュールを使用して構文解析していました。
たとえばOpenAI Agents SDKのエージェントは、以下のように実装します。
agent = Agent( name="...", instructions="...", tools=[...], )
Agentic Radarは、Agent
クラスのインスタンス化を検出し、そこからツールの使用やプロンプトの流れを解析しているようでした。
このように構文解析でエージェントの動作を解析するため、LangGraphの場合はシステムプロンプトの抽出ができないといった制限があるようです。
脆弱性の検出
Agentic Radarのscanでの脆弱性の検出方法は、フレームワークによって異なっていました。
OpenAI Agents SDKの場合、脆弱性を検出するプロンプトでLLMが呼び出される挙動のようでした。
LangGraphやCrewAIの場合は、組み込みのツールに分類が定義されており、その分類に従って脆弱性とマッピングされるようでした。
そのため、LangGraphやCrewAIでは、組み込みツールのみが脆弱性検出の対象となり、現状ユーザーが独自に作成したツールは脆弱性の検出の対象外となるようです。
参考
- https://github.com/splx-ai/agentic-radar/blob/main/agentic_radar/analysis/openai_agents/parsing/vulnerabilities.py
- https://github.com/splx-ai/agentic-radar/blob/main/agentic_radar/analysis/langgraph/predefined_tools.json
- https://github.com/splx-ai/agentic-radar/blob/main/agentic_radar/analysis/crewai/tool_categories.json
- https://github.com/splx-ai/agentic-radar/blob/main/agentic_radar/mapper/vulnerabilities.json
次回のご案内
以上、今回は「Agentic Radar」をキャッチアップしました。
次回は「AIエージェントキャッチアップ #39 - OpenHands-Versa」ということで、マルチモーダルなブラウジング機能を持つコーディングエージェント「OpenHands-Versa」がテーマです!
generative-agents.connpass.com
ご興味・お時間ある方はぜひご参加ください!
また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!