
自動バグ報奨金・偵察フレームワーク — 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はそれらをまとめてラップし、オープンソースでより企業色の少ない脆弱性スキャナーを提供します。
焦点は、バックグラウンドで何が失敗し、何が削除されるかを確認できる脆弱性スキャナーを構築することにありました。スキャンパイプラインが行うすべての処理はユーザーに表示されます。

![]() Asjidkalam |
![]() jamoski3112 研究 |
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