
Cadre automatisé de bug bounty et de reconnaissance — regroupe Subfinder, Naabu, Httpx, Nuclei, Nmap, CVEMap, Gowitness, Katana et plus encore derrière une interface web unifiée
Une plateforme de sécurité offensive open source augmentée par l'IA, qui englobe des outils de sécurité bien connus derrière une interface Web unifiée — avec analyse distribuée, rapports générés par IA, planificateur de scan intelligent, graphe d'attaque interactif et SDK de plugin communautaire.
Consultez aussi ObsidianBox Modern sur Google Play.
| Section | Description |
|---|---|
| Pourquoi | Motivation et philosophie |
| Outils intégrés | Les 10 outils open source orchestrés par XPFarm |
| Architecture | Architecture complète du système, pipeline de scan, flux de données |
| Overlord — Analyse IA | Agent IA pour l'analyse de binaires/malwares/web |
| Rapports Bug Bounty | Rapports de divulgation professionnels générés par IA |
| Planificateur de scan IA | Planificateur d'étapes de reconnaissance et d'exploitation optimisé par IA |
| Travailleurs distribués | Exécution de scans sur plusieurs machines en parallèle |
| Graphe de scan | Graphe interactif des actifs, services, vulnérabilités, exploits |
| SDK de plugin | Système d'outils, agents et pipelines extensible par la communauté |
| Moteur de normalisation des constats | Constats de sécurité unifiés, enrichis et dédupliqués |
| Nouveautés | Améliorations récentes en sécurité, fiabilité et UX |
| Installation | Instructions de construction et de déploiement |
| À faire | Fonctionnalités planifiées et feuille de route |

Des outils comme Assetnote sont excellents — bien maintenus, à jour et transparents sur l'identification des vulnérabilités. Mais ils ne sont pas open source. Il n'est pas non plus nécessaire de réinventer la roue, car de nombreux outils open source solides existent déjà. XPFarm les rassemble pour vous offrir un scanner de vulnérabilités qui est open source et moins corporate.
L'accent a été mis sur la construction d'un scanner de vulnérabilité où vous pouvez voir ce qui échoue ou est supprimé en arrière-plan, au lieu de vous interroger sur le mystère. Tout ce que le pipeline de scan fait est remonté à l'utilisateur.

flowchart TB
subgraph ENTRY["Point d'entrée — main.go"]
M1["Parse Flags (-debug)"]
M2["InitDB — SQLite + WAL + GORM"]
M3["InitModules — 10 wrappers d'outils"]
M4["Load Plugins — normalization/all + plugins/all"]
M5["Health Check — auto-install des outils manquants"]
M6["CheckAndIndexTemplates — versionnement Nuclei"]
M7["StartServer — Gin sur :8888"]
M1 --> M2 --> M3 --> M4 --> M5 --> M6 --> M7
end
subgraph UI_LAYER["Interface Web — internal/ui/server.go"]
direction TB
GIN["Serveur HTTP Gin\nTemplates embarqués + statique\nMiddleware CSRF origin-check"]
subgraph Pages["Pages HTML"]
P1["Tableau de bord — progression des étapes en temps réel via SSE"]
P2["Actifs et cibles"]
P3["Recherche globale — paginée + troncature"]
P4["Graphe de scan — Cytoscape.js"]
P5["Rapports Bug Bounty"]
P6["Planificateur de scan IA"]
P7["Travailleurs et tâches"]
P8["Chat Overlord + téléversement binaire"]
P9["Modules"]
P10["Paramètres — chiffrés AES-256-GCM"]
end
GIN --> Pages
end
subgraph SCAN_ENGINE["Moteur de scan — internal/core/"]
direction TB
SM["ScanManager\nSingleton, protégé par mutex\nRécupération de panique + diffusion SSE"]
subgraph PIPELINE["Pipeline de scan en 8 étapes"]
direction TB
S1["1. Subfinder — Découverte de sous-domaines"]
S2["2. Filtrage et sauvegarde — Cloudflare / Localhost / Alive"]
S3["3. Naabu — Scan de ports (pool de 5 workers)"]
S4["4. Nmap — Détection de services et versions"]
S5["5. Httpx — Sondage HTTP + métadonnées"]
S6["6. Web parallèle — Captures d'écran, crawl, URLs, technologies"]
S7["7. CVEMap — Recherche CVE par produit/technologie"]
S8["8. Nuclei — Scan de vulnérabilités"]
S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7 --> S8
end
SM --> PIPELINE
end
subgraph REPORTS["Rapports Bug Bounty — internal/reports/"]
RG["GenerateReport()\nCollecte du contexte DB + graphe\nGénération IA Overlord\nModèles intégrés de secours"]
RF["Formats : Markdown · PDF · HackerOne · Bugcrowd"]
RS["Stockage : internal/storage/reports/"]
RG --> RF --> RS
end
subgraph PLANNER["Planificateur de scan IA — internal/planner/"]
PL["GenerateScanPlan()\nRassemble le contexte actifs/constats/graphe\nInterroge Overlord pour un plan JSON\nPlan heuristique de secours"]
PC["Registre de capacités — 26 capacités\n10 modules intégrés + 16 agents Overlord\nNiveaux de risque : safe / active / destructive"]
PS["ExecutePlanWithLogs()\nDiffusion des logs d'étape via SSE\nAiguillage intégré vs agent Overlord"]
PL --> PC --> PS
end
subgraph DISTRIBUTED["Travailleurs distribués — internal/distributed/"]
DW["Binaire Worker — cmd/worker/main.go\n./xpfarm-worker -controller http://host:8888"]
DC["Contrôleur — authentification par jeton, moniteur de battement de cœur\nRéclame atomiquement les tâches de la file d'attente"]
DS["Planificateur — BestWorkerForTool()\nAiguille par capacité + nombre de tâches actives"]
DJ["File d'attente des tâches — internal/storage/jobs/\nRéclamation via transaction DB, timeout 30 min"]
DW --> DC --> DS --> DJ
end
subgraph OVERLORD["Overlord — Sous-système d'agents IA"]
OV_PROXY["Proxy Overlord — internal/overlord/"]
subgraph OV_AGENTS["22 agents spécialisés"]
OA1["RE binaire — 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+ outils 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 fournisseurs IA"]
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["Graphe de scan — internal/graph/"]
GB["BuildGraph() — interroge 5 tables\nDéduplique nœuds + arêtes"]
subgraph GNODES["Types de nœuds"]
GN1["asset #8b5cf6"]
GN2["target #0ea5e9"]
GN3["service #10b981"]
GN4["tech #f59e0b"]
GN5["vuln #ef4444"]
GN6["exploit #dc2626"]
end
GB --> GNODES
end
subgraph DATABASE["Base de données — internal/database/ + internal/storage/"]
DB["SQLite + mode WAL\nORM GORM\n10 connexions ouvertes / 5 inactives, limite WAL 64 Mo"]
subgraph MODELS["Modèles de données"]
DM1["Asset · Target · Port · WebAsset"]
DM2["Vulnerability · CVE · ScanResult"]
DM3["ScanProfile · NucleiTemplate · SavedSearch"]
DM4["Setting (chiffré AES-256-GCM)"]
DM5["Report · Plan · WorkerRecord · JobRecord"]
end
DB --> MODELS
end
subgraph DOCKER["Docker — docker-compose.yml"]
DC1["xpfarm — application Go :8888"]
DC2["overlord — OpenCode :3000"]
DC3["mobsf — Scan mobile :8000 (optionnel)"]
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 est un agent IA intégré propulsé par OpenCode capable d'analyser des binaires, archives, APK et cibles web. Téléversez un fichier et dialoguez avec lui — l'agent utilise radare2, strings, tri de fichiers, Frida et plus encore pour examiner votre cible.




Générez des rapports de divulgation professionnels à partir des constats de votre scan en un clic. Overlord IA synthétise votre inventaire d'actifs, les constats de vulnérabilités, le contexte du graphe et les données CVE en un rapport soigné.
Formats :
| Format |
|---|
Fonctionnement :
.md, .html ou .pdf — ou copiez le Markdown brut
Overlord sélectionne les étapes optimales de reconnaissance et d'exploitation pour vos cibles en fonction de ce qui a déjà été découvert — inventaire des actifs, constats existants, structure du graphe et capacités disponibles.
Modes :
Fonctionnement :
Registre de capacités : 10 modules intégrés + 16 agents Overlord, chacun avec un niveau de risque (safe / active / destructive) et une catégorie pour le filtrage par mode.

Exécutez des scans sur plusieurs machines en parallèle. Déployez des nœuds workers sur des hôtes distants ; ils s'enregistrent automatiquement auprès du contrôleur, interrogent la file d'attente pour des tâches, exécutent les outils localement et renvoient les résultats.
Déployer un worker :
./xpfarm-worker -controller http://xpfarm-host:8888 -id worker-1 -labels high-bandwidth,internal
Fonctionnement :
File d'attente des tâches : Créez des tâches depuis l'interface Workers ou via POST /api/jobs/create. La file d'attente montre l'état en direct, le worker assigné et le résultat.

XPFarm construit un graphe orienté unifié de chaque entité découverte lors du scan, permettant de répondre facilement à des questions comme "quels services utilisent une technologie avec un CVE exploitable actif ?" ou "montrez-moi tout ce qui est accessible depuis cet actif".
Types de nœuds :
Exemple de chemin :
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 est extensible via un SDK de plugin communautaire. N'importe qui peut ajouter de nouveaux outils, agents et pipelines sans toucher au code de base.
plugins/
├── all/all.go ← ajoutez votre import de plugin ici
├── example-echo/ ← modèle de démarrage minimal
├── example-repo-scanner/ ← exemple factice de scanner de dépôt
├── repo-semgrep/ ← plugin Semgrep SAST (prêt pour la production)
└── repo-secrets/ ← plugin Gitleaks + SecretFinder (prêt pour la production)
Écrire un plugin — trois étapes :
plugins/mon-plugin/plugin.go — implémentez Tool et/ou Agent, appelez plugin.RegisterTool() / plugin.RegisterAgent() dans init()plugins/mon-plugin/plugin.yaml — métadonnées_ "xpfarm/plugins/mon-plugin" dans plugins/all/all.goGET /api/plugins liste tous les outils, agents, pipelines et manifestes enregistrés.
Les sorties brutes des scanners (Nuclei, Nmap, Semgrep, Gitleaks) sont normalisées en un modèle unifié Finding, enrichies avec des renseignements sur les menaces en direct, dédupliquées et regroupées.
POST /api/normalize {"source": "nuclei", "raw": {...}}
│
▼ Adaptateur (nuclei / nmap / semgrep / gitleaks)
│ → Finding canonique (CVE, CWE, sévérité, preuve, tags)
│
▼ Enrichisseurs (appliqués dans l'ordre)
│ 1. CWE — trie de mots-clés 40 règles + carte de 35 tags (local, instantané)
│ 2. CVSS — API REST NVD v2, CVSS 3.1→3.0→2.0, cache in-process
│ 3. EPSS — API de probabilité d'exploitation FIRST.org, cache in-process
│ 4. KEV — catalogue CISA des vulnérabilités exploitées connues (sync.Once)
│
▼ Empreinte SHA-256 → déduplication → regroupement par CWE/CVE/Sévérité/Cible
│
▼ Stockage SQLite (FindingRecord + GroupRecord)
./xpfarm-workerdata/.xpfarm.key./xpfarm.sh update pour les mises à jour volontaires# Recommandé
./xpfarm.sh build # Construire tous les conteneurs
./xpfarm.sh up # Lancer tout (xpfarm :8888 + overlord :3000)
./xpfarm.sh update # Reconstruire avec les dernières versions d'outils (mise à jour volontaire)
# Windows
.\xpfarm.ps1 build
.\xpfarm.ps1 up
# Docker standard
docker compose up --build
# Construction à partir des sources (sans Overlord)
go build -o xpfarm
./xpfarm
./xpfarm -debug







![]() Asjidkalam |
![]() jamoski3112 Recherche |
| Sortie |
|---|
Markdown | Fichier .md propre avec résumé exécutif, tableau des constats, remédiation |
PDF | Rendu via wkhtmltopdf, repli sur HTML |
HackerOne | Structure optimisée pour la plateforme avec CVSS, étapes de reproduction |
Bugcrowd | Titre, sévérité, catégorie VRT, impact, Preuve de concept |
| Mode | Ce qu'il planifie |
|---|
Complet | Les 26 capacités — évaluation complète |
Recon | Sous-domaines, ports, HTTP, technologies uniquement |
Web | Sondage HTTP, crawl, vérifications de vulnérabilités web |
Binaire | Agents d'analyse Overlord pour binaires/APK/malwares |
Sûr | Uniquement outils en lecture seule sans risque |
| Nœud | Couleur | Rempli depuis |
|---|
asset | violet #8b5cf6 | Table Asset |
target | bleu #0ea5e9 | Table Target |
service | vert #10b981 | Table Port (ports ouverts) |
tech | ambre #f59e0b | WebAsset.TechStack + Port.Product |
vuln | rouge #ef4444 | Tables Vulnerability + CVE |
exploit | rouge foncé #dc2626 | CVEs avec IsKEV=true ET HasPOC=true |