
自動バグ報奨金・偵察フレームワーク — Subfinder、Naabu、Httpx、Nuclei、Nmap、CVEMap、Gowitness、Katana などを統合Web UIの背後にラップ
オープンソースのAI拡張型オフェンシブセキュリティプラットフォーム。よく知られたセキュリティツールを統一されたWeb UIの背後でラップし、分散スキャン、AI生成レポート、スマートスキャンプランナー、インタラクティブな攻撃グラフ、コミュニティプラグインSDKを備えています。
Google Playで ObsidianBox Modern もチェックしてください。
| セクション | 説明 |
|---|---|
| なぜ | 動機と哲学 |
| ラップされたツール | XPFarmが統括する10のオープンソースツール |
| アーキテクチャマップ | システム全体のアーキテクチャ、スキャンパイプライン、データフロー |
| オーバーロード — AI分析 | バイナリ/マルウェア/Web解析のためのAIエージェント |
| バグバウンティレポート | AIが生成するプロフェッショナルな開示レポート |
| AIスキャンプランナー | AI最適化による偵察・エクスプロイトステッププランナー |
| 分散ワーカー | 複数のマシンで並列スキャンを実行 |
| スキャングラフ | アセット、サービス、脆弱性、エクスプロイトのインタラクティブグラフ |
| プラグインSDK | コミュニティ拡張可能なツール、エージェント、パイプラインシステム |
| 発見事項正規化エンジン | 統合・強化・重複排除されたセキュリティ発見事項 |
| 新機能 | 最近のセキュリティ、信頼性、UXの改善 |
| セットアップ | ビルドとデプロイの手順 |
| TODO | 計画中の機能とロードマップ |

Assetnote のようなツールは素晴らしいものです。よくメンテナンスされ、最新で、脆弱性の特定について透明性があります。しかし、オープンソースではありません。また、既存の堅牢なオープンソースツールが多数存在するため、車輪の再発明をする必要もありません。XPFarmはそれらをまとめてラップし、オープンソースでより企業色の少ない脆弱性スキャナーを提供します。
焦点は、バックグラウンドで何が失敗し、何が削除されるかを確認できる脆弱性スキャナーを構築することにありました。スキャンパイプラインが行うすべての処理はユーザーに表示されます。

flowchart TB
subgraph ENTRY["Entrypoint — main.go"]
M1["Parse Flags (-debug)"]
M2["InitDB — SQLite + WAL + GORM"]
M3["InitModules — 10 tool wrappers"]
M4["Load Plugins — normalization/all + plugins/all"]
M5["Health Check — auto-install missing tools"]
M6["CheckAndIndexTemplates — Nuclei versioning"]
M7["StartServer — Gin on :8888"]
M1 --> M2 --> M3 --> M4 --> M5 --> M6 --> M7
end
subgraph UI_LAYER["Web UI — internal/ui/server.go"]
direction TB
GIN["Gin HTTP Server\nEmbedded templates + static\nCSRF origin-check middleware"]
subgraph Pages["HTML Pages"]
P1["Dashboard — SSE live stage progress"]
P2["Assets & Targets"]
P3["Global Search — paginated + truncation"]
P4["Scan Graph — Cytoscape.js"]
P5["Bug Bounty Reports"]
P6["AI Scan Planner"]
P7["Workers & Jobs"]
P8["Overlord Chat + Binary Upload"]
P9["Modules"]
P10["Settings — AES-256-GCM encrypted"]
end
GIN --> Pages
end
subgraph SCAN_ENGINE["Scan Engine — internal/core/"]
direction TB
SM["ScanManager\nSingleton, mutex-guarded\nPanic recovery + SSE broadcast"]
subgraph PIPELINE["8-Stage Scanning Pipeline"]
direction TB
S1["1. Subfinder — Subdomain Discovery"]
S2["2. Filter & Save — Cloudflare / Localhost / Alive"]
S3["3. Naabu — Port Scanning (5-worker pool)"]
S4["4. Nmap — Service + Version Detection"]
S5["5. Httpx — HTTP Probing + Metadata"]
S6["6. Parallel Web — Screenshots, Crawl, URLs, Tech"]
S7["7. CVEMap — CVE lookup by product/tech"]
S8["8. Nuclei — Vulnerability Scanning"]
S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7 --> S8
end
SM --> PIPELINE
end
subgraph REPORTS["Bug Bounty Reports — internal/reports/"]
RG["GenerateReport()\nCollects DB context + graph\nOverlord AI generation\nFallback built-in templates"]
RF["Formats: Markdown · PDF · HackerOne · Bugcrowd"]
RS["Storage: internal/storage/reports/"]
RG --> RF --> RS
end
subgraph PLANNER["AI Scan Planner — internal/planner/"]
PL["GenerateScanPlan()\nGathers asset/finding/graph context\nPolls Overlord for JSON plan\nFallback heuristic plan"]
PC["Capability Registry — 26 capabilities\n10 built-in modules + 16 Overlord agents\nRisk levels: safe / active / destructive"]
PS["ExecutePlanWithLogs()\nSSE log streaming per step\nRoutes builtin vs Overlord agent steps"]
PL --> PC --> PS
end
subgraph DISTRIBUTED["Distributed Workers — internal/distributed/"]
DW["Worker Binary — cmd/worker/main.go\n./xpfarm-worker -controller http://host:8888"]
DC["Controller — token auth, heartbeat monitor\nAtomically claims jobs from queue"]
DS["Scheduler — BestWorkerForTool()\nRoutes by capability + active job count"]
DJ["Job Queue — internal/storage/jobs/\nClaim via DB transaction, 30min timeout"]
DW --> DC --> DS --> DJ
end
subgraph OVERLORD["Overlord — AI Agent Subsystem"]
OV_PROXY["Overlord Proxy — internal/overlord/"]
subgraph OV_AGENTS["22 Specialized Agents"]
OA1["Binary RE — re-explorer, re-debugger, re-decompiler, re-scanner"]
OA2["APK — apk-recon, apk-dynamic, apk-decompiler"]
OA3["Web + Exploit — web-tester, re-exploiter, secrets-hunter, recon"]
end
subgraph OV_TOOLS["70+ TypeScript Tools"]
OT1["radare2, ghidra, binwalk, frida, angr, strings"]
OT2["semgrep, gitleaks, gau, corscanner, whatweb"]
OT3["git_dumper, js_scraper, crypto_solver, ropper"]
end
subgraph PROVIDERS["21 AI Providers"]
PR1["Anthropic · OpenAI · Groq · DeepSeek"]
PR2["Ollama (local) · xAI · OpenRouter · Cerebras"]
end
OV_PROXY --> OV_AGENTS
OV_PROXY --> OV_TOOLS
OV_PROXY --> PROVIDERS
end
subgraph SCAN_GRAPH["Scan Graph — internal/graph/"]
GB["BuildGraph() — queries 5 tables\nDeduplicates nodes + edges"]
subgraph GNODES["Node Types"]
GN1["asset #8b5cf6"]
GN2["target #0ea5e9"]
GN3["service #10b981"]
GN4["tech #f59e0b"]
GN5["vuln #ef4444"]
GN6["exploit #dc2626"]
end
GB --> GNODES
end
subgraph DATABASE["Database — internal/database/ + internal/storage/"]
DB["SQLite + WAL Mode\nGORM ORM\n10 open / 5 idle conns, 64MB WAL cap"]
subgraph MODELS["Data Models"]
DM1["Asset · Target · Port · WebAsset"]
DM2["Vulnerability · CVE · ScanResult"]
DM3["ScanProfile · NucleiTemplate · SavedSearch"]
DM4["Setting (AES-256-GCM encrypted)"]
DM5["Report · Plan · WorkerRecord · JobRecord"]
end
DB --> MODELS
end
subgraph DOCKER["Docker — docker-compose.yml"]
DC1["xpfarm — Go app :8888"]
DC2["overlord — OpenCode :3000"]
DC3["mobsf — Mobile scan :8000 (optional)"]
DC1 <-->|xpfarm-network| DC2
DC1 <-->|xpfarm-network| DC3
end
M7 --> GIN
GIN --> SCAN_ENGINE
GIN --> REPORTS
GIN --> PLANNER
GIN --> DISTRIBUTED
GIN --> OVERLORD
GIN --> SCAN_GRAPH
GIN --> DATABASE
Overlordは OpenCode を搭載した組み込みAIエージェントで、バイナリ、アーカイブ、APK、Webターゲットを分析できます。ファイルをアップロードしてチャットするだけで、エージェントは radare2、strings、ファイルトリアージ、Frida などを使用してターゲットを調査します。




スキャン結果からワンクリックでプロフェッショナルな開示レポートを生成します。Overlord AIがアセット一覧、脆弱性の発見事項、グラフコンテキスト、CVEデータを統合し、洗練されたレポートを作成します。
フォーマット:
| フォーマット | 出力 |
|---|---|
Markdown | エグゼクティブサマリー、発見事項テーブル、改善策を含むクリーンな .md |
仕組み:
.md、.html、.pdf としてダウンロード、または生のMarkdownをコピー
Overlordが、既に発見された情報(アセット一覧、既存の発見事項、グラフ構造、利用可能なツール能力)に基づいて、ターゲットに最適な偵察およびエクスプロイト手順を選択します。
モード:
仕組み:
能力レジストリ: 10の組み込みモジュール + 16のOverlordエージェント。それぞれにリスクレベル(safe / active / destructive)とカテゴリがタグ付けされ、モードフィルタリングに使用されます。

複数のマシンで並列スキャンを実行します。リモートホストにワーカーノードをデプロイすると、自動的にコントローラーに登録され、ジョブをポーリングし、ローカルでツールを実行して結果を返します。
ワーカーのデプロイ:
./xpfarm-worker -controller http://xpfarm-host:8888 -id worker-1 -labels high-bandwidth,internal
仕組み:
ジョブキュー: Worker UI または POST /api/jobs/create でジョブを作成。キューにはライブステータス、割り当てられたワーカー、結果出力が表示されます。

XPFarmは、スキャン中に発見されたすべてのエンティティの統合有向グラフを構築します。これにより、「アクティブなCVEエクスプロイトがある技術を実行しているサービスはどれか」や「このアセットから到達可能なすべてのものを表示」といった質問に簡単に答えられます。
ノードタイプ:
パスの例:
example.com (アセット)
└─所有──► www.example.com (ターゲット)
├─公開──► 443/tcp https (サービス)
│ └─実行──► nginx 1.24 (テクノロジー)
├─影響あり──► CVE-2023-44487 (脆弱性)
│ └─エクスプロイト──► エクスプロイト: CVE-2023-44487
└─影響あり──► http-missing-security-headers (脆弱性)
XPFarmはコミュニティプラグインSDKを通じて拡張可能です。誰でもコアコードに触れることなく、新しいツール、エージェント、パイプラインを追加できます。
plugins/
├── all/all.go ← ここにプラグインのインポートを追加
├── example-echo/ ← 最小限のスターターテンプレート
├── example-repo-scanner/ ← モックリポジトリスキャナーの例
├── repo-semgrep/ ← Semgrep SASTプラグイン(プロダクション対応)
└── repo-secrets/ ← Gitleaks + SecretFinderプラグイン(プロダクション対応)
プラグインの作成 — 3ステップ:
plugins/my-plugin/plugin.go を作成 — Tool や Agent を実装し、init() 内で plugin.RegisterTool() / plugin.RegisterAgent() を呼び出すplugins/my-plugin/plugin.yaml を作成 — メタデータplugins/all/all.go に _ "xpfarm/plugins/my-plugin" を追加GET /api/plugins で登録済みのすべてのツール、エージェント、パイプライン、マニフェストを一覧表示します。
Nuclei、Nmap、Semgrep、Gitleaks からの生のスキャナー出力は、統一された Finding モデルに正規化され、ライブ脅威インテリジェンスで強化され、重複排除され、グループ化されます。
POST /api/normalize {"source": "nuclei", "raw": {...}}
│
▼ アダプター (nuclei / nmap / semgrep / gitleaks)
│ → 正規化されたFinding (CVE, CWE, severity, evidence, tags)
│
▼ エンリッチャー (順に適用)
│ 1. CWE — 40ルールのキーワードトライ + 35タグマップ (ローカル, 即時)
│ 2. CVSS — NVD REST API v2, CVSS 3.1→3.0→2.0, インプロセスキャッシュ
│ 3. EPSS — FIRST.org エクスプロイト確率API, インプロセスキャッシュ
│ 4. KEV — CISA既知エクスプロイト脆弱性カタログ (sync.Once)
│
▼ SHA-256フィンガープリント → 重複排除 → CWE/CVE/深刻度/ターゲットでグループ化
│
▼ SQLiteストレージ (FindingRecord + GroupRecord)
./xpfarm-worker バイナリdata/.xpfarm.key に自動生成./xpfarm.sh update でオプトインアップグレード# Recommended
./xpfarm.sh build # Build all containers
./xpfarm.sh up # Start everything (xpfarm :8888 + overlord :3000)
./xpfarm.sh update # Rebuild with latest tool versions (opt-in upgrade)
# Windows
.\xpfarm.ps1 build
.\xpfarm.ps1 up
# Standard Docker
docker compose up --build
# Build from source (no Overlord)
go build -o xpfarm
./xpfarm
./xpfarm -debug







![]() Asjidkalam |
![]() jamoski3112 研究 |
PDF | wkhtmltopdf でレンダリング、フォールバックとしてHTML |
HackerOne | CVSS、再現手順を含むプラットフォーム最適化構造 |
Bugcrowd | タイトル、深刻度、VRTカテゴリ、影響、PoC |
| モード | 計画内容 |
|---|
フル | 全26の能力 — 完全評価 |
リコン | サブドメイン、ポート、HTTP、テクノロジー発見のみ |
Web | HTTPプロービング、クローリング、Web脆弱性チェック |
バイナリ | Overlordのバイナリ/APK/マルウェア分析エージェント |
セーフ | リスクゼロの読み取り専用ツールのみ |
| ノード | 色 | 取得元 |
|---|
| アセット | 紫 #8b5cf6 | アセットテーブル |
| ターゲット | 青 #0ea5e9 | ターゲットテーブル |
| サービス | 緑 #10b981 | ポートテーブル(オープンポート) |
| テクノロジー | 琥珀 #f59e0b | WebAsset.TechStack + Port.Product |
| 脆弱性 | 赤 #ef4444 | 脆弱性 + CVEテーブル |
| エクスプロイト | 濃赤 #dc2626 | IsKEV=true かつ HasPOC=true のCVE |