
Framework automatizzato per bug bounty e ricognizione — integra Subfinder, Naabu, Httpx, Nuclei, Nmap, CVEMap, Gowitness, Katana e altro dietro un'interfaccia web unificata
Una piattaforma offensiva di sicurezza open-source potenziata dall'IA che integra strumenti di sicurezza noti dietro un'interfaccia web unificata — con scansione distribuita, report generati dall'IA, un planner di scansione intelligente, un grafo degli attacchi interattivo e un SDK per plugin della community.
Dai un'occhiata anche ad ObsidianBox Modern su Google Play.
| Sezione | Descrizione |
|---|---|
| Perché | Motivazione e filosofia |
| Strumenti Integrati | I 10 strumenti open-source orchestrati da XPFarm |
| Mappa dell'Architettura | Architettura completa del sistema, pipeline di scansione, flusso dei dati |
| Overlord — Analisi AI | Agente AI per l'analisi binaria/malware/web |
| Bug Bounty Reports | Report professionali di divulgazione generati dall'IA |
| AI Scan Planner | Pianificatore ottimizzato dall'IA per fasi di ricognizione e sfruttamento |
| Worker Distribuiti | Esegui scansioni su più macchine in parallelo |
| Grafo di Scansione | Grafo interattivo di asset, servizi, vulnerabilità, exploit |
| Plugin SDK | Sistema di strumenti, agenti e pipeline estensibile dalla community |
| Motore di Normalizzazione dei Risultati | Risultati di sicurezza unificati, arricchiti e deduplicati |
| Novità | Recenti miglioramenti per sicurezza, affidabilità e UX |
| Configurazione | Istruzioni per build e deployment |
| TODO | Funzionalità pianificate e roadmap |

Strumenti come Assetnote sono ottimi — ben mantenuti, aggiornati e trasparenti nell'identificazione delle vulnerabilità. Ma non sono open-source. Inoltre non c'è bisogno di reinventare la ruota, dato che esistono già molti solidi strumenti open-source. XPFarm li integra insieme in modo da avere uno scanner di vulnerabilità open-source e meno corporate.
L'attenzione è stata posta sulla creazione di uno scanner di vulnerabilità dove puoi vedere cosa fallisce o viene rimosso in background, invece di chiederti quale sia il mistero. Ogni cosa che la pipeline di scansione fa viene mostrata all'utente.

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["Pagine HTML"]
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["Pipeline di Scansione a 8 Stadi"]
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 Agenti Specializzati"]
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+ Strumenti TypeScript"]
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 Provider AI"]
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["Tipi di Nodo"]
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["Modelli Dati"]
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 è un agente AI integrato basato su OpenCode in grado di analizzare binari, archivi, APK e target web. Carica un file e chatta con esso — l'agente utilizza radare2, strings, triage dei file, Frida e altro per investigare il tuo target.




Genera report professionali di divulgazione a partire dai risultati della scansione con un solo clic. L'IA di Overlord sintetizza il tuo inventario di asset, i risultati delle vulnerabilità, il contesto del grafo e i dati CVE in un report rifinito.
Formati:
| Formato | Output |
|---|---|
Come funziona:
.md, .html o .pdf — o copia il Markdown grezzo
Overlord seleziona i passaggi ottimali di ricognizione e sfruttamento per i tuoi target in base a quanto già scoperto — inventario degli asset, risultati esistenti, struttura del grafo e capacità degli strumenti disponibili.
Modalità:
Come funziona:
Registro delle capacità: 10 moduli integrati + 16 agenti Overlord, ciascuno con livello di rischio (safe / active / distructive) e categoria per il filtraggio delle modalità.

Esegui scansioni su più macchine in parallelo. Distribuisci nodi worker su host remoti che si registrano automaticamente con il controller, richiedono lavori, eseguono strumenti localmente e inviano i risultati.
Distribuisci un worker:
./xpfarm-worker -controller http://xpfarm-host:8888 -id worker-1 -labels high-bandwidth,internal
Come funziona:
Coda dei lavori: Crea lavori dall'interfaccia Workers o tramite POST /api/jobs/create. La coda mostra stato in tempo reale, worker assegnato e output del risultato.

XPFarm costruisce un grafo diretto unificato di ogni entità scoperta durante la scansione, rendendo banale rispondere a domande come "quali servizi eseguono tecnologie con un CVE sfruttabile?" o "mostrami tutto ciò che è raggiungibile da questo asset".
Tipi di nodo:
Esempio di percorso:
example.com (asset)
└─possiede──► www.example.com (target)
├─espone──► 443/tcp https (servizio)
│ └─esegue──► nginx 1.24 (tecnologia)
├─affetto-da──► CVE-2023-44487 (vuln)
│ └─sfrutta──► Exploit: CVE-2023-44487
└─affetto-da──► http-missing-security-headers (vuln)
XPFarm è estensibile tramite un Plugin SDK della community. Chiunque può aggiungere nuovi strumenti, agenti e pipeline senza toccare il codice core.
plugins/
├── all/all.go ← aggiungi qui l'import del tuo plugin
├── example-echo/ ← template iniziale minimale
├── example-repo-scanner/ ← esempio di scanner per repository fittizio
├── repo-semgrep/ ← plugin Semgrep SAST (pronto per produzione)
└── repo-secrets/ ← plugin Gitleaks + SecretFinder (pronto per produzione)
Scrivere un plugin — tre passaggi:
plugins/mio-plugin/plugin.go — implementa Tool e/o Agent, chiama plugin.RegisterTool() / plugin.RegisterAgent() in init()plugins/mio-plugin/plugin.yaml — metadati_ "xpfarm/plugins/mio-plugin" a plugins/all/all.goGET /api/plugins elenca tutti gli strumenti, agenti, pipeline e manifest registrati.
Gli output grezzi degli scanner di Nuclei, Nmap, Semgrep e Gitleaks vengono normalizzati in un modello Finding unificato, arricchito con intelligence sulle minacce live, deduplicato e raggruppato.
POST /api/normalize {"source": "nuclei", "raw": {...}}
│
▼ Adattatore (nuclei / nmap / semgrep / gitleaks)
│ → Finding canonico (CVE, CWE, severità, evidenza, tag)
│
▼ Arricchitori (applicati in ordine)
│ 1. CWE — trie di 40 regole + mappa di 35 tag (locale, istantaneo)
│ 2. CVSS — API REST NVD v2, CVSS 3.1→3.0→2.0, cache in-process
│ 3. EPSS — API di probabilità di sfruttamento FIRST.org, cache in-process
│ 4. KEV — catalogo CISA Known Exploited Vulnerabilities (sync.Once)
│
▼ Impronta SHA-256 → deduplica → raggruppa per CWE/CVE/Severità/Target
│
▼ Archiviazione SQLite (FindingRecord + GroupRecord)
./xpfarm-workerdata/.xpfarm.key./xpfarm.sh update per aggiornamenti opzionali# Raccomandato
./xpfarm.sh build # Costruisci tutti i container
./xpfarm.sh up # Avvia tutto (xpfarm :8888 + overlord :3000)
./xpfarm.sh update # Ricostruisci con le ultime versioni degli strumenti (aggiornamento opzionale)
# Windows
.\xpfarm.ps1 build
.\xpfarm.ps1 up
# Docker standard
docker compose up --build
# Compila dal sorgente (senza Overlord)
go build -o xpfarm
./xpfarm
./xpfarm -debug







![]() Asjidkalam |
![]() jamoski3112 Ricerca |
Markdown |
.md pulito con sommario esecutivo, tabella dei risultati, remediation |
PDF | Renderizzato tramite wkhtmltopdf, fallback su HTML |
HackerOne | Struttura ottimizzata per la piattaforma con CVSS, passaggi di riproduzione |
Bugcrowd | Titolo, severità, categoria VRT, impatto, PoC |
| Modalità | Cosa pianifica |
|---|
Full | Tutte le 26 capacità — valutazione completa |
Recon | Solo scoperta di sottodomini, porte, HTTP, tecnologie |
Web | Probing HTTP, crawling, controlli di vulnerabilità web |
Binary | Agenti Overlord per analisi di binari/APK/malware |
Safe | Solo strumenti readonly a rischio zero |
| Nodo | Colore | Popolato da |
|---|
asset | viola #8b5cf6 | Tabella Asset |
target | blu #0ea5e9 | Tabella Target |
service | verde #10b981 | Tabella Port (porte aperte) |
tech | ambra #f59e0b | WebAsset.TechStack + Port.Product |
vuln | rosso #ef4444 | Tabelle Vulnerability + CVE |
exploit | rosso scuro #dc2626 | CVE con IsKEV=true E HasPOC=true |