
Автоматизированный фреймворк для баг-баунти и разведки — объединяет Subfinder, Naabu, Httpx, Nuclei, Nmap, CVEMap, Gowitness, Katana и другие в единый веб-интерфейс
Платформа для наступательной безопасности с открытым исходным кодом, дополненная ИИ, которая объединяет известные инструменты безопасности под единым веб-интерфейсом — с распределенным сканированием, отчетами, сгенерированными ИИ, интеллектуальным планировщиком сканирования, интерактивным графом атак и общедоступным SDK для плагинов.
Также посмотрите ObsidianBox Modern в Google Play.
| Раздел | Описание |
|---|---|
| Почему | Мотивация и философия |
| Обёрнутые инструменты | 10 инструментов с открытым исходным кодом, оркестрируемых XPFarm |
| Карта архитектуры | Полная архитектура системы, конвейер сканирования, поток данных |
| Overlord — Анализ ИИ | ИИ-агент для анализа бинарных файлов/вредоносного ПО/веба |
| Отчёты Bug Bounty | Профессиональные отчёты о раскрытии, сгенерированные ИИ |
| Планировщик сканирования ИИ | Оптимизированный ИИ планировщик этапов разведки и эксплуатации |
| Распределённые рабочие | Запуск сканирования на нескольких машинах параллельно |
| Граф сканирования | Интерактивный граф активов, сервисов, уязвимостей, эксплойтов |
| Plugin 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 --> DATABASEOverlord — это встроенный ИИ-агент на базе OpenCode, который может анализировать бинарные файлы, архивы, APK и веб-цели. Загрузите файл и общайтесь с ним — агент использует radare2, strings, file triage, Frida и другие инструменты для исследования вашей цели.




Создавайте профессиональные отчёты о раскрытии из результатов сканирования одним щелчком. ИИ Overlord объединяет ваш инвентарь активов, находки уязвимостей, контекст графа и данные CVE в готовый отчёт.
Форматы:
| Формат |
|---|
Как это работает:
.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
Как это работает:
Очередь заданий: создавайте задания из интерфейса Workers или через POST /api/jobs/create. Очередь показывает статус в реальном времени, назначенного рабочего и вывод результатов.

XPFarm строит унифицированный ориентированный граф каждой сущности, обнаруженной во время сканирования, что позволяет легко отвечать на вопросы вроде "какие сервисы используют технологию с активным эксплойтом CVE?" или "покажи мне всё, доступное с этого актива".
Типы узлов:
Пример пути:
example.com (asset)
└─owns──► www.example.com (target)
├─exposes──► 443/tcp https (service)
│ └─runs──► nginx 1.24 (tech)
├─affected-by──► CVE-2023-44487 (vuln)
│ └─exploits──► Exploit: CVE-2023-44487
└─affected-by──► http-missing-security-headers (vuln)
XPFarm расширяем с помощью общедоступного Plugin SDK. Любой может добавить новые инструменты, агенты и конвейеры, не затрагивая основной код.
plugins/
├── all/all.go ← add your plugin import here
├── example-echo/ ← minimal starter template
├── example-repo-scanner/ ← mock repo scanner example
├── repo-semgrep/ ← Semgrep SAST plugin (production-ready)
└── repo-secrets/ ← Gitleaks + SecretFinder plugin (production-ready)
Написание плагина — три шага:
plugins/my-plugin/plugin.go — реализуйте Tool и/или Agent, вызовите plugin.RegisterTool() / plugin.RegisterAgent() в init()plugins/my-plugin/plugin.yaml — метаданные_ "xpfarm/plugins/my-plugin" в plugins/all/all.goGET /api/plugins перечисляет все зарегистрированные инструменты, агенты, конвейеры и манифесты.
Необработанные выводы сканеров от Nuclei, Nmap, Semgrep и Gitleaks нормализуются в единую модель Finding, обогащаются актуальной информацией об угрозах, дедуплицируются и группируются.
POST /api/normalize {"source": "nuclei", "raw": {...}}
│
▼ Adapter (nuclei / nmap / semgrep / gitleaks)
│ → canonical Finding (CVE, CWE, severity, evidence, tags)
│
▼ Enrichers (applied in order)
│ 1. CWE — 40-rule keyword trie + 35-tag map (local, instant)
│ 2. CVSS — NVD REST API v2, CVSS 3.1→3.0→2.0, in-process cache
│ 3. EPSS — FIRST.org exploitation probability API, in-process cache
│ 4. KEV — CISA Known Exploited Vulnerabilities catalog (sync.Once)
│
▼ SHA-256 fingerprint → deduplicate → group by CWE/CVE/Severity/Target
│
▼ SQLite storage (FindingRecord + GroupRecord)
./xpfarm-workerdata/.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 Исследование |
| Вывод |
|---|
Markdown | Чистый .md с кратким изложением, таблицей находок, исправлениями |
PDF | Рендеринг через wkhtmltopdf, запасной вариант — HTML |
HackerOne | Оптимизированная для платформы структура с CVSS, шагами воспроизведения |
Bugcrowd | Заголовок, серьёзность, категория VRT, воздействие, PoC |
| Режим | Что планирует |
|---|
Full | Все 26 возможностей — полная оценка |
Recon | Только обнаружение поддоменов, портов, HTTP, технологий |
Web | HTTP-пробивание, обход, проверка веб-уязвимостей |
Binary | Агенты Overlord для анализа бинарных файлов/APK/вредоносного ПО |
Safe | Только инструменты только для чтения с нулевым риском |
| Узел | Цвет | Откуда берётся |
|---|
asset | фиолетовый #8b5cf6 | Таблица Asset |
target | синий #0ea5e9 | Таблица Target |
service | зелёный #10b981 | Таблица Port (открытые порты) |
tech | янтарный #f59e0b | WebAsset.TechStack + Port.Product |
vuln | красный #ef4444 | Таблицы Vulnerability + CVE |
exploit | тёмно-красный #dc2626 | CVE с IsKEV=true И HasPOC=true |