
pentest-ai v1.4.0
すべての発見を実証するオープンソースのAIペンテスター。機械オラクルが各エクスプロイトを再実行し、検証済みのバグには、自分で再現できる証明カプセルが同梱されます。
⚠️ 攻撃用ツールです。認可を受けたテストのみに使用してください。 インストールすることで AUP と 利用規約 に同意したものとみなされます。責任ある使用 ↓ を参照してください。
2分で完了。APIキー不要、自前のターゲットも不要
pip install ptai && ptai demo
ptai demo は同梱の脆弱なアプリをスキャンし、4 findings, 3 oracle-VERIFIED と出力します。
証明カプセルから1件をライブでリプレイし(replay 3/3)、その後同じルートを
堅牢化した状態で実行し、0 findings と出力します。
注目すべき点が2つあります。検出結果は、ツールが沈黙したからではなく、脆弱性の有無に応じて現れたり消えたりします — 2回の実行の間で変わったのは修正のみです。そして4件のうち1件は候補のまま残ります: SQLiログインバイパスは本物ですが、そのルートではどのオラクルも再証明できなかったため、バッジは付与されません。このギャップこそが製品の正常な動作であり、デモのバグではありません。
ここでVERIFIEDが実際に意味すること
ほとんどのスキャナは、あるものが悪用可能かもしれないと伝え、トリアージはあなたに任せます。 ptai は、名前付きの機械オラクルがエクスプロイトを再実行し、N回中N回再現するまで、検出結果を候補として扱います。その時点でのみVERIFIEDを獲得します。
これを単なるスローガン以上のものにしている3つの特性があります:
LLMが判定を下すことは決してありません。 このルールはポリシーではなくコードで強制されます: それを獲得したオラクルを指名できない判定は拒否されます。LLMは実行を調整し、結果について推論します。バグが本物かどうかを決定することは決してありません。
すべてのオラクルには、失敗しなければならないコントロールがあります。 信頼済みヘッダーバイパスは、ヘッダーありで特権コンテンツを返し、なしで拒否を返さなければなりません。漏洩した認証情報のチェックは、本物のシークレットでは受け入れられ、意図的に破損させた双子では拒否されなければなりません。すべてに200を返すエンドポイントは何も獲得できません。これにより、「200が返ってきた」ことが証明と誤認されるのを防ぎます。
サードパーティのスキャナ出力は保留されます。 nuclei、nikto、zap の結果は、それ自体の権限で検出結果になることはありません。ptai 自身のオラクルのいずれかが独立して再証明するまで、未検証のままです。
VERIFIEDされた各検出結果は、ポータブルな証明カプセルとして提供されます — 検出結果、それを再証明するためのレシピ、そしてレシートです。誰でもライブターゲットに対して ptai replay を実行し、オラクルが再確認するのをptai を信頼せずに見ることができます。カプセルは意図的に署名されていません: リプレイこそが信頼メカニズムであり、盲目的に受け入れなければならない署名ではありません。
正直な数字
| 動作するオラクルを持つ脆弱性クラス | 14 |
| ライブラリ内のプローブ数 | 64 |
| VERIFIEDを獲得できるプローブ数 | 30 |
| オラクルの種類 | 24 |
| ツールラッパー数 | 203 |
| …そのうち現在検出結果に出力をパースするもの | 18 |
| MCPツール数 | 52 |
| 専門エージェント数 | 18 |
| テスト数 | Python 3.10 / 3.12 / 3.14 で 2,729 |
意図的に脆弱なハニーポットでは、これら14クラスにわたって23件の検出結果が、誤検知ゼロ、精度100%で検証されました。標準の OWASP Juice Shop では、2026-08-23 のスイープで17件の検出結果が検証されました — レポートはスコープ内HTTP / 検証済み / 精度であり、17/116ではありません。2026-08-25 の Path 1 MCP セッション(MCPクライアントが run_probe を駆動、オーケストレーターの検証前にターゲットが停止)では、64件のスコープ内HTTPチャレンジ(20件は追求しない)に対して、精度100%で12件の検証済み証明を獲得しました。OSINT、Web3、UIのみの Juice Shop キーは、設計上、自動化スコアボードの対象外です。
これらの数字を注意深く読んでください。ギャップこそが要点だからです。 64のプローブが存在しますが、判定を獲得できるのは30のみで、残りの34は正直な候補を報告します。203のラッパーが登録されていますが、ツール出力を検出結果に変換するのは18のみで、残りは実行して生のテキストを返します。オラクルゲートは精度を購入するものであり、検出率ではありません: 誤検知を除去しますが、より多くのバグを見つけるわけではありません。
ハニーポットハーネス(tests/honeypot/)とクリーンアプリのゼロ誤検知ゲート(tests/cleanapp/)は両方ともこのリポジトリに同梱され、CIで実行されるため、これらはスクリーンショットではなく再現可能です。
できないこと
セキュリティツールが自分を過大評価することは無価値以下であるため、明確に述べます。
- これはWebアプリケーションスキャナです。 64のプローブすべてと24種類のオラクルすべてがHTTPを対象としています。AD、クラウド、モバイル、ワイヤレスにはエージェントとツールラッパーがありますが、背後にプローブライブラリもオラクルもありません。
- ローカル権限昇格はできません。 それには、すでに所有しているホストでのコード実行が必要です。ptai はリモートでテストし、そのようなチャネルを持たないため、privescエージェントは誤解を招くゼロではなく
unsupportedを報告します。 - CVEスキャナではありません。 バージョンからCVEへのデータベースもエクスプロイトライブラリもありません。CVE作業は、漏洩したマニフェストに対する osv.dev ルックアップに限定されます。
- プレイブックは計画するものであり、実行しません。
ptai playbook runは依存関係を解決し、計画を出力します。ターゲットに対して実行することはまだ配線されていません。 - 自律的ではありません。 完全自律型のLLMペンテストエージェントは、タスクの21〜31%しかエンドツーエンドで完了しません。人間が支援するセットアップは64%に達します。ptai は後者の体制向けに構築されています。実行中に引き継ぐには Ctrl+C を2回押してください。
上記を含む完全な内部欠陥リストは、静かにではなくオープンに追跡されています。ここに誤りがある場合は、issueを開いて 修正してください。
インストール
パス1 — Claude Code、Cursor、または Codex から駆動(APIキー不要)
既存のAIサブスクリプションがLLMになります。ptai がツールを提供します。
pip install ptai
ptai mcp install # MCPクライアントを自動検出し、設定を書き込みます
クライアントを再起動すると、52のツールが利用可能になります。このパスでは Anthropic キーは不要です — MCPサーバーは設計上、独自のLLMをホストしません。
パス2 — スタンドアロンCLI
pip install ptai
export ANTHROPIC_API_KEY=sk-... # または OPENAI_API_KEY
ptai start https://target.example.com
# 完全にローカル、クラウド不要:
export PENTEST_AI_LLM_PROVIDER=ollama
# または決定的、LLM完全不要:
ptai start https://target.example.com --no-llm
支出はデフォルトでエンゲージメントあたり$10に制限されています(PTAI_PRICE_LIMIT)。
セキュリティツール、REST API、その他のオプション
ptai tools install --tier core # または recommended / full
ptai tools install nmap nuclei # または名前で指定
ptai serve # ダッシュボード用のHTTP REST + WebSocket
ptai menu # インタラクティブランチャー、LLM不要
エンゲージメント開始時に、プランナーは実行に必要なツールを予測し、不足しているツールのインストールを一度だけ尋ねます。拒否すると、その回答は永続化されます。
ベンチマーク
再現可能で、git内にあり、生の成果物付きです。監査できない「98.7%の検出率」はありません。
| ツール | 検出結果 | Critical+High | OWASPバケット | FP率 |
|---|---|---|---|---|
| ptai | 88 | 46 | 5 | 0% |
| ZAP 2.17.0 | 593 | 0 | 1 | 47% |
| Nuclei 3.8.0 | 1 | 0 | 1 | 0% |
| HexStrike v6.0 | 11 | 0 | 1 | – |
n=1、単一評価者、OWASP Juice Shop に対する単一ショット。方法論と生の出力は benchmarks/ にあります。完全なレポートは docs/benchmarks/juice-shop.md にあります。
正直な読み方: ptai は、厳選されたプローブカバレッジを持つSPA Webターゲットに強いです。HexStrike はより広範(クラウド、バイナリ、CTF)で、WordPress のような従来のクロール可能なサーフェスではおそらく ptai を上回ります。また、Juice Shop はインターネット上で最も文書化された脆弱なアプリであるため、LLMとプローブ作者の両方に有利なスタートがあります — これがまさにプライベートハニーポットの数字が低い理由であり、両方が公開される理由です。
CIに組み込む
- run: pip install ptai
- run: ptai start ${{ vars.STAGING_URL }} --ci --fail-on verified --sarif pentest.sarif
- uses: github/codeql-action/upload-sarif@v3
with: { sarif_file: pentest.sarif }
--fail-on verified は、オラクルが実際に証明した検出結果がある場合のみビルドを失敗させるため、スキャナのノイズでゲートが作動することはありません。SARIFは GitHub Code Scanning にアップロードされ、検出結果はPRコメントとして投稿されます。GitLab と Jenkins のテンプレートは docs/ci-cd.md にあります。
仕組み
recon ──▶ auth ──▶ web ──┬──▶ ad
├──▶ cloud ┌──────────────────┐
└──▶ api ──────────▶│ findings DB │
│ scope-guarded │
└────────┬─────────┘
▼
verify (oracles, N/N)
▼
chain ─▶ validate ─▶ detect ─▶ report
md · html · pdf · SARIF · JUnit
18の専門エージェントがフェーズを実行します。APIキーがある場合、各エージェントはLLMを使用して結果について推論します。ない場合は、決定的なツールループとして実行されます。フェーズの順序と検出はどちらの場合も同一です — プローブがバグを見つけ、LLMは調整のみを行います。
対象ユーザー
AppSecチーム — 認証済みスキャンをすべてのPRに組み込み、証明された検出結果でのみ作動するゲートを備えたい方。コンサルタント — レポートが自動生成され、クライアント自身のエンジニアがリプレイできるカプセルが欲しい方。バグバウンティハンター — 600件の「かもしれない」よりも12件の証明済み検出結果をトリアージしたい方。Claude Code / Cursor / Codex ユーザー — 追加のAPI請求なしでアシスタントの背後に本物のツールを置きたい方。
一緒に仕事をする
このツールはMITライセンスで、永久に無料です — それは変わりません。
自分で実行するのではなくペンテストの納品を希望する場合、または履歴とチームアクセスを備えたホスト型ワークスペースが必要な場合は、どちらも pentestai.xyz にあります。納品されたエンゲージメントのすべての検出結果には、あなたのエンジニアが自分でリプレイできる証明カプセルが付属します。これは、深刻度評価で埋め尽くされたPDFとは根本的に異なる成果物です。
責任ある使用
ptai は、指定したターゲットに対して実際のネットワークおよびホスト操作を実行します。すべてのターゲットについて明示的な書面による認可を得る責任は完全にあなたにあります。 所有していないシステムのテストは、コンピュータ詐欺及び濫用取締法(CFAA)、1990年コンピュータ濫用法、GDPR第32条、および他国の同等の法律に違反する可能性があります。
初回実行時にAUPの受け入れを求められ、それが永続化されます。CIでは PENTEST_AI_AUP_ACCEPTED=1 を設定してください。スコープ外のホストは、ツール呼び出し時に拒否されます。3つのガードレールはデフォルトでオフになっており、オンにする価値があります: intensity=safe は状態を変更するプローブをスキップし、respect_rate_limits は429/Retry-Afterを尊重し、strict_scope はホスト外のリクエストを拒否します。
帯域外コールバック(OAST)— プライバシー
ブラインドクラス(ブラインドSSRF/SQLi/XXE、保存型XSS、SSTI、Log4Shell)は、デフォルトで ProjectDiscovery の公開 oast.fun にルーティングされるコールバックを介して検出されます。
各エンゲージメントは、ローカルで新しいRSA-2048キーペアを生成します。インタラクションペイロードは、あなたの公開鍵にRSA-OAEP-SHA256でラップされたキーでAES-CTR-256により保存時に暗号化されるため、あなたのローカルプロセスのみが復号化できます。ただし、メタデータはサーバーから見えます: インタラクションが発生したこと、ターゲットの送信元IP、タイムスタンプ、プロトコルです。
PortSwigger はバグバウンティ規則で公開コラボレーターの使用を禁止しており、大規模なプログラムではテスター管理のコールバックインフラストラクチャがますます要求されています。有料エンゲージメントでは、Interactsh を自己ホストしてください:
ptai start http://target --oast-server https://oast.example.com --oast-token <T>
ptai start http://target --no-oast # または完全に無効化
FAQ
APIキーは必要ですか? MCPパスでは不要です — あなたの Claude Code / Cursor / Codex サブスクリプションがLLMです。APIキーが必要なのはスタンドアロンCLIのみで、そこでも Ollama は完全にローカルで実行されます。
自律的ですか? いいえ、そして自律的であると主張もしていません。プローブが検出し、LLMが調整し、あなたが決定します。Ctrl+C を2回押すと実行中に引き継げます。
本番環境に対して安全ですか? 書面による認可と上記の3つのガードレールをオンにした場合のみです。
ホームに電話しますか? デフォルトではしません。検出結果はあなたのディスクに残ります。ptai telemetry enable で匿名の使用カウンターにオプトインできます(ターゲットや検出結果は含まれません。スキーマは engine/telemetry.py にあります)。OASTコールバックは、--oast-server または --no-oast を渡さない限り、デフォルトで ProjectDiscovery の oast.fun にルーティングされます。
Claudeにハッキングを依頼するのとどう違うのですか? 厳選された決定的なプローブライブラリがバグを見つけ、機械オラクルがそれを証明します。LLMだけでは、それが本物かどうかを判断する方法のないもっともらしい推測しか得られません。
エコシステム
| リポジトリ | 内容 |
|---|---|
| pentest-ai | このリポジトリ。CLI + MCPサーバー。 |
| pentest-ai-agents | スタンドアロンの Claude Code サブエージェントファイル。オプション。 |
コミュニティ: Discord · ディスカッション · Issues
スター履歴
以前のインライングラフ(api.star-history.com)は空です: GitHub はそれらのSVGが依存していた公開スターゲイザーAPIを制限しました。ライブシリーズは star-history.com にあります。READMEは代替ホストにホットリンクしません — すべての訪問者のブラウザがそのSVGを取得することになるためです。
ライセンス
MIT。好きなように使ってください。
ptai があなたの日曜日を救ったなら、リポジトリにスターを付けてください。