Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新

Dec 22, 2025 - 日記

DeepAudit vs PentestGPT: マルチエージェント監査はペンテストツールを超えるか

deepaudit-vs-pentestgpt-ai-security-audit cover image

セキュリティ監査にAIを活用する流れが本格化しています。中国発のオープンソース脆弱性ハンティングツールDeepAudit が注目を集める一方、既存のPentestGPT も進化を続けています。本記事では、マルチエージェント協調型とペネトレーションテスト型という2つのアプローチを比較し、それぞれの実力と使い分けを整理します。

DeepAudit: 監査の民主化を目指すマルチエージェントシステム

DeepAuditの特徴: 4つのAIエージェントが協調してコード監査を実行

DeepAuditは「セキュリティを安価に、監査を簡単に」をコンセプトに開発された中国発のオープンソース脆弱性ハンティングツールです。最大の特徴はMulti-Agent協作アーキテクチャを採用している点です。

マルチエージェントの役割分担

DeepAuditでは4つの専門エージェントが自律的に協力して監査を実行します:

  • Orchestrator(指揮官): プロジェクトを分析し、監査計画を立案してタスクを配分
  • Recon Agent(偵察兵): プロジェクト構造をスキャンし、フレームワーク、ライブラリ、攻撃面を識別
  • Analysis Agent(分析官): RAG知識ベースとAST分析を組み合わせて脆弱性を深掘り
  • Verification Agent(検証者): PoCスクリプトを生成してDockerサンドボックス環境で実際に検証

この分業体制により、従来のSAST(静的アプリケーションセキュリティテスト)ツールが抱えていた以下の課題を解決しています:

  1. 誤検知率の高さ - 意味解析の欠如による大量の誤報
  2. ビジネスロジックの盲点 - ファイル横断の呼び出しや複雑なロジックの見落とし
  3. 検証手段の欠如 - 脆弱性が実際に悪用可能かどうかの判断が困難

実際の監査フロー

ユーザーがプロジェクトをインポートすると、以下の流れで全自動監査が実行されます:

flowchart LR
    A[プロジェクト導入] --> B[技術スタック識別]
    B --> C[リスク分析]
    C --> D[PoCスクリプト生成]
    D --> E[サンドボックスで検証]
    E --> F[レポート生成]

特に注目すべきは自動化サンドボックスPoC検証です。Verification Agentが生成した攻撃スクリプトをDockerの隔離環境で実行し、脆弱性が実際に悪用可能かどうかを確認します。検証に失敗した場合は自己修正を試みて再実行するため、誤報を大幅に削減できます。

検出可能な脆弱性タイプ

DeepAuditは以下の脆弱性タイプに対応しています:

  • SQLインジェクション(sql_injection
  • クロスサイトスクリプティング(xss
  • コマンドインジェクション(command_injection
  • パストラバーサル(path_traversal
  • SSRF(ssrf
  • XXE(xxe
  • 不安全なデシリアライゼーション(insecure_deserialization
  • ハードコードされた秘密鍵(hardcoded_secret
  • 弱暗号化アルゴリズム(weak_crypto
  • 認証バイパス(authentication_bypass
  • 認可バイパス(authorization_bypass
  • IDOR(idor

プライバシー対応とローカル実行

DeepAuditはOllama による完全プライベート展開に対応しており、Llama3、DeepSeek-Coder、Qwen2.5などのローカルLLMで実行できます。これにより、企業のコンプライアンス要件を満たしながら、ソースコードを外部に送信せずに監査を実施可能です。

PentestGPT: 自律型ペネトレーションテストエージェント

PentestGPTの特徴: 単一AIエージェントが攻撃者視点でシステムに侵入を試みる

一方、PentestGPTは自律型ペネトレーションテストを目指して開発されたツールです。USENIX Security 2024 で論文発表された学術研究の成果でもあります。

ペネトレーションテストとは

ペネトレーションテスト(侵入テスト)は、実際の攻撃者と同じ手法を用いてシステムの脆弱性を検証するセキュリティテスト手法です。コードを静的に解析するSASTとは異なり、稼働中のシステムに対して実際に攻撃を試みることで、以下を確認します:

  • 脆弱性が本当に悪用可能かどうか
  • 攻撃者がどこまで侵入できるか
  • 複数の脆弱性を組み合わせた攻撃シナリオ

従来は専門のセキュリティエンジニア(ペンテスター)が手動で実施していましたが、PentestGPT はこのプロセスをAIで自動化しようとする試みです。

「攻撃者の視点」で動く

PentestGPTの最大の特徴は、セキュリティ専門家の思考プロセスを模倣して、実際の攻撃シナリオを自動実行する点です。DeepAuditが「コードを読んで脆弱性を探す」アプローチであるのに対し、PentestGPTは「システムに侵入を試みる」アプローチを取ります。

対応する攻撃カテゴリ

PentestGPTは幅広い攻撃手法に対応しています:

  • Web攻撃: SQLインジェクション、XSS、SSRF、SSTI、LFI、RCE
  • 暗号攻撃: 暗号解読、ハッシュクラッキング
  • リバースエンジニアリング: バイナリ解析、デコンパイル
  • フォレンジック: ファイル復元、ログ解析
  • PWN: メモリ破壊、エクスプロイト
  • 権限昇格: 水平・垂直方向の権限昇格

セッション永続化と実践的機能

PentestGPT v1.0では以下の実用的機能が強化されています:

  • セッション永続化: ペネトレーションテストの途中経過を保存し、中断・再開が可能
  • Docker-First: セキュリティツールがプリインストールされた隔離環境
  • リアルタイムフィードバック: エージェントの作業状況をライブ表示
  • 100+ベンチマーク: 実際の脆弱性チャレンジで継続的にテスト

実行モード

# インタラクティブTUIモード(デフォルト)
pentestgpt --target 10.10.11.234

# 非インタラクティブモード(自動実行)
pentestgpt --target 10.10.11.100 --non-interactive

# コンテキスト指定
pentestgpt --target 10.10.11.50 --instruction "WordPress site, focus on plugin vulnerabilities"

ベンチマークシステムも充実しており、タグやレベルでフィルタリング可能です:

pentestgpt-benchmark list --levels 1         # 難易度でフィルタ
pentestgpt-benchmark list --tags sqli        # 脆弱性タイプでフィルタ
pentestgpt-benchmark start XBEN-037-24       # ベンチマーク開始

両者の決定的な違い

DeepAudit vs PentestGPT: ホワイトボックス監査とブラックボックステストの比較

アーキテクチャの差異

項目DeepAuditPentestGPT
アプローチホワイトボックス解析ブラックボックステスト
エージェント構成4役割分担型単一自律型
検証方法サンドボックスPoC実行実際のシステムへのペンテスト
プライマリターゲットコードレポジトリ稼働中のサービス
知識ベースRAG + CWE/CVELLMの推論能力

ユースケースの違い

DeepAuditが適している場面:

  • CI/CDパイプラインに組み込んで自動監査を実施したい
  • ソースコードレビューで脆弱性を早期発見したい
  • 外注プロジェクトの品質確認を効率化したい
  • 内製開発でセキュリティ専門家が不在
  • コンプライアンス要件でコードを外部に送信できない

PentestGPTが適している場面:

  • CTF(Capture The Flag)の問題を自動で解きたい
  • 実際のペネトレーションテストを補助してほしい
  • 複数の攻撃手法を組み合わせた侵入シナリオを試したい
  • 既存システムの脆弱性を外部視点で評価したい

どちらを選ぶべきか

両ツールは相互排他的ではなく、むしろ補完的な関係にあります。

開発フェーズ別の使い分け

flowchart LR
    A[コーディング] --> B["DeepAudit: コードレビュー"]
    B --> C[CI/CD統合]
    C --> D[ステージング環境]
    D --> E["PentestGPT: ペンテスト"]
    E --> F[本番デプロイ]

理想的なセキュリティ監査フローは以下のようになります:

  1. 開発段階: DeepAuditでコードレビュー、脆弱性の早期発見
  2. CI/CD統合: 自動化監査で新規コミットを継続チェック
  3. リリース前: PentestGPTで外部視点からのペンテスト
  4. 定期監査: 両ツールを組み合わせて多層防御

コスト面での考慮

両ツールともオープンソースで無料ですが、LLM APIの利用料金が発生します。Ollama対応により、ローカルLLMで完全無料運用も可能です。ただし、ローカルモデルの精度は商用LLMに劣る場合があるため、重要なプロジェクトでは以下の組み合わせが推奨されます:

  • 通常監査: ローカルモデル(Llama3、Qwen2.5等)
  • 重要監査: 商用LLM(GPT-4、Claude 3.5 Sonnet等)

まとめ

DeepAuditとPentestGPTは、どちらもAIを活用したセキュリティ監査ツールですが、設計思想が大きく異なります。

  • DeepAudit: マルチエージェント協調でコードを深掘りし、脆弱性を体系的に発見
  • PentestGPT: 自律型エージェントが攻撃者の視点でシステムを検証

セキュリティ専門家が不足する中、これらのツールは監査の民主化に大きく貢献します。両ツールを適切に使い分けることで、より強固なセキュリティ体制を構築できるでしょう。

興味のある方はぜひ試してみてください。

ペネトレーションテストを行う際の注意事項

これらのツールを試す前に、ペネトレーションテストに関する重要な注意事項を確認してください。

法的リスク

許可なく他者のシステムに対してペネトレーションテストを実施することは違法です。 日本では不正アクセス禁止法により、3年以下の懲役または100万円以下の罰金が科される可能性があります。

以下のケースはすべて違法となる可能性があります:

  • 許可を得ていない第三者のWebサイトへの攻撃テスト
  • 共有サーバー上の他ユーザー領域へのアクセス試行
  • 「脆弱性を報告するため」という善意の動機でも、許可なき侵入は違法

安全にテストするための環境

ペネトレーションテストを学習・検証する際は、以下の環境を利用してください:

  • 自分が所有・管理するシステム: ローカル環境やプライベートクラウド
  • 明示的に許可されたテスト環境: バグバウンティプログラムの対象システム
  • 学習用プラットフォーム: Hack The BoxTryHackMeVulnHub など
  • CTF(Capture The Flag): 競技として合法的にハッキングスキルを磨ける

業務でペネトレーションテストを実施する場合

実務でペネトレーションテストを行う場合は、以下を必ず確認してください:

  1. 書面による許可: テスト対象、範囲、期間を明記した契約書または許可書
  2. テスト範囲の明確化: IPアドレス、ドメイン、許可される攻撃手法の特定
  3. 緊急連絡先の確保: システム障害発生時の連絡体制
  4. データ取り扱い: 取得した情報の保管・破棄ルール
  5. 報告義務: 発見した脆弱性の報告方法と期限

AIツール特有の注意点

DeepAuditやPentestGPTのようなAI駆動ツールを使用する際は、追加で以下に注意してください:

  • 自動実行の制御: ツールが予期せぬ範囲に攻撃を拡大しないよう監視する
  • ログの保存: AIが実行したすべてのアクションを記録する
  • LLM APIへのデータ送信: ソースコードや機密情報がクラウドLLMに送信される可能性がある(Ollamaでローカル実行すれば回避可能)

これらの注意事項を遵守した上で、安全にセキュリティスキルを向上させてください。

参考リンク