
Server Model Context Protocol per la scoperta autonoma di vulnerabilità
Server del Model Context Protocol per l'automazione della ricerca sulla sicurezza
Compatibile con:
MCPwner è un server del Model Context Protocol (MCP) che integra strumenti di test di sicurezza nei flussi di lavoro basati su LLM. Fornisce un'interfaccia unificata per la scansione di segreti, l'analisi statica (SAST), l'analisi della composizione software (SCA), la sicurezza dell'infrastruttura come codice (IaC), il fuzzing del codice sorgente, la ricognizione, i test dinamici di sicurezza delle applicazioni (DAST) e la ricerca di vulnerabilità inclusa la scoperta di vulnerabilità zero-day.
Invece di concatenare manualmente gli strumenti e incollare gli output nel tuo LLM, MCPwner standardizza e trasmette i risultati direttamente nel contesto di lavoro del modello. Ciò consente il ragionamento continuo, la correlazione e la scoperta di percorsi di attacco lungo l'intero ciclo di vita della ricerca sulla sicurezza – dalla mappatura delle superfici d'attacco e l'identificazione di vulnerabilità note fino alla scoperta di nuovi vettori d'attacco.
Nota: Questo progetto è in fase di sviluppo attivo. Scopri di più sugli MCP qui.
I seguenti strumenti sono previsti per versioni future.
Generatori di gadget-chain e payload per armare i sink di deserializzazione identificati durante SAST. Esistono ecosistemi maturi di gadget-chain per Java, .NET e PHP; Python è coperto tramite generazione di pickle malevoli (la deserializzazione in Ruby/Node è basata su payload e si trova nel corpus dei payload qui sotto):
Corpus di payload e wordlist curati per supportare gli strumenti sopra:
"Enumerate and scan example.com" → MCPwner chains: Subfinder + Amass → Masscan + Nmap → httpx → Katana + gau → ffuf + Arjun
### Scansiona un repository GitHub alla ricerca di segreti```
"Scan https://github.com/example/repo for secrets"
→ MCPwner runs Gitleaks, TruffleHog, detect-secrets and correlates findings
"Run a security audit on my Python project" → MCPwner runs Bandit (SAST), OSV-Scanner (SCA), and secrets scanning
### Analisi del percorso di attacco```
"Find vulnerabilities in the authentication module"
→ MCPwner runs CodeQL queries, cross-references with secrets and SCA results
"Test for SQLi and XSS on http://localhost:8080" → MCPwner chains: sqlmap + Dalfox and verifies findings
## Installation
### Prerequisiti
**Requisiti di sistema:**
- Docker Engine 20.10+ e Docker Compose 2.0+
- 8GB di RAM minimo (16GB consigliati per eseguire più strumenti)
- 20GB di spazio libero su disco (le immagini degli strumenti di sicurezza sono grandi)
- Piattaforme supportate: Linux, macOS, Windows (con WSL2)
**Client MCP:**
- Claude Desktop, Cursor, Kiro o qualsiasi client compatibile con MCP
### Configurazione
1. **Clona il repository**:
git clone https://github.com/kitploit/kitploit-tools.git
cd kitploit-tools
bash
git clone https://github.com/nedlir/mcpwner.git
cd mcpwner
2. **Configurare il server**: ```bash
cp config/config.yaml.example config/config.yaml
# Edit config/config.yaml as needed
Una volta che i container Docker sono in esecuzione, aggiungi MCPwner al tuo client MCP:
Importante: Registrazione dinamica degli strumenti
MCPwner utilizza un'architettura modulare e a partecipazione volontaria. Gli strumenti di sicurezza sono governati dai profiles di Docker Compose.
.env (COMPOSE_PROFILES=sast,secrets,reconnaissance,dast,etc) determina quali container vengono portati online. In alternativa, puoi sovrascrivere questa impostazione e avviare profili specifici tramite CLI: docker compose --profile sast --profile dast up -d.semgrep), ometti la sua categoria (sast) dal file .env ed elenca manualmente gli altri strumenti desiderati (bandit,gosec,codeql).utilities (es. Linguist, WireMock, Chromium) sono considerati dipendenze core permanenti. Vengono eseguiti incondizionatamente con docker compose up -d per garantire che dipendenze critiche tra strumenti (come il rilevamento della lingua) funzionino sempre.Posizioni dei file di configurazione:
~/Library/Application Support/Claude/claude_desktop_config.json (macOS)mcp.json nella directory del tuo progetto o delle impostazioniInstallazione con un clic (richiede Docker in esecuzione):
Configurazione manuale:
Aggiungi quanto segue al tuo file di configurazione MCP:```json { "mcpServers": { "mcpwner": { "command": "docker", "args": ["exec", "-i", "mcpwner-server", "python", "src/server.py"], "env": {} } } }
Riavvia il tuo client MCP per caricare la nuova configurazione del server.
### Scansione dei Progetti Locali
Per scansionare progetti dalla tua macchina host, montali nel contenitore aggiungendo un volume in `docker-compose.yaml`:```yaml
services:
mcpwner:
volumes:
- /path/to/your/projects:/mnt/projects:ro
Then use the create_workspace tool with:
source_type="local"source="/mnt/projects/my-project"MCPwner persiste automaticamente i metadati del workspace e del database CodeQL tra i riavvii del contenitore utilizzando l'archiviazione basata su file nel volume Docker condiviso (/workspaces/.metadata/). Nessuna configurazione necessaria: il sistema carica i dati esistenti all'avvio e li salva dopo ogni operazione utilizzando scritture atomiche per prevenire il danneggiamento.
Controllo Pulizia Workspace:
Lo strumento cleanup_workspace fornisce un controllo granulare:
delete_files=True, delete_metadata=False - Libera spazio su disco ma preserva la cronologia del workspace (consigliato)delete_files=True, delete_metadata=True - Rimozione completa del workspace e dei metadatidelete_files=False, delete_metadata=True - Rimuove dalla lista ma mantiene i file su discoBackup:```bash
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar czf /backup/workspaces-backup.tar.gz /data
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar xzf /backup/workspaces-backup.tar.gz -C /
## Architettura
MCPwner utilizza comunicazione basata su HTTP tra i container per supportare futuri deployment remoti. Sebbene attualmente ottimizzato per l'uso locale, l'architettura può essere adattata per deployment su server remoti con modifiche minime.
**Principi di progettazione:**
- Isolamento dei container per l'esecuzione di strumenti di sicurezza
- Formati di output standardizzati per il consumo da parte degli LLM (SARIF/JSON)
- Architettura dei plugin estensibile per nuovi strumenti
- API senza stato (le memorie sono gestite dall'utente)
**Panoramica dell'architettura:**```mermaid
graph LR
subgraph IDE[" "]
LLM[🤖<br/>LLM]
Client[MCP Client]
LLM -.-> Client
end
Server[MCPwner Server]
SAST[SAST Tools]
Secrets[Secrets Scanning]
SCA[SCA Tools]
Recon[Reconnaissance]
CodeQL[CodeQL Service]
Linguist[Language Detection]
Utilities[Utilities]
IaC[IaC Security]
Fuzzing[Source Fuzzing]
DAST[DAST Tools]
Client -->|JSON-RPC 2.0| Server
Server -->|HTTP| SAST
Server -->|HTTP| Secrets
Server -->|HTTP| SCA
Server -->|HTTP| Recon
Server -->|HTTP| CodeQL
Server -->|HTTP| Linguist
Server -->|HTTP| Utilities
Server -->|HTTP| IaC
Server -->|HTTP| Fuzzing
Server -->|HTTP| DAST
style LLM fill:#7C3AED,stroke:#5B21B6,stroke-width:3px,color:#fff
style Client fill:#4A90E2,stroke:#2E5C8A,stroke-width:3px,color:#fff
style Server fill:#F5A623,stroke:#C17D11,stroke-width:3px,color:#fff
style SAST fill:#E74C3C,stroke:#C0392B,stroke-width:2px,color:#fff
style Secrets fill:#9B59B6,stroke:#7D3C98,stroke-width:2px,color:#fff
style SCA fill:#1ABC9C,stroke:#16A085,stroke-width:2px,color:#fff
style Recon fill:#00BCD4,stroke:#0097A7,stroke-width:2px,color:#fff
style CodeQL fill:#E67E22,stroke:#CA6F1E,stroke-width:2px,color:#fff
style Linguist fill:#3498DB,stroke:#2874A6,stroke-width:2px,color:#fff
style Utilities fill:#6D28D9,stroke:#4C1D95,stroke-width:2px,color:#fff
style IaC fill:#059669,stroke:#047857,stroke-width:2px,color:#fff
style Fuzzing fill:#B91C1C,stroke:#7F1D1D,stroke-width:2px,color:#fff
style DAST fill:#D35400,stroke:#A04000,stroke-width:2px,color:#fff
style IDE fill:none,stroke:#ddd,stroke-width:2px,stroke-dasharray: 5 5
MCPwner espone i seguenti strumenti tramite l'interfaccia MCP:
Gestione Workspace:
create_workspace - Inizializza un workspace di scansione da un percorso locale, URL Git o repository GitHublist_workspaces - Elenca tutti i workspace disponibilicleanup_workspace - Rimuove il workspace e i dati associatiRegistro dei Findings:
Con scope sul workspace, persistito su disco (<workspace>/findings/<id>.json) e sempre disponibile — nessun container o health gate richiesto. Questa è la fonte di verità per la pipeline multi-agente di deep-research: ogni ipotesi, risultato di PoC e verdetto di revisione è una voce di finding anziché testo discorsivo.
upsert_finding - Crea o aggiorna un finding. Per default esegue un merge profondo in una voce esistente, in modo che un agente possa scrivere il proprio sotto-oggetto (es. poc) senza sovrascrivere i campi di un altro agente (es. review)list_findings - Elenca tutti i findings in un workspace, opzionalmente filtrati per status (es. poc-confirmed, review-approved)get_finding - Recupera un singolo finding tramite idSAST (Analisi Statica):
run_sast_scan - Esegue strumenti di analisi statica (Semgrep, Bandit, Gosec, Brakeman, PMD, Psalm, NodeJsScan, Joern, YASA)get_sast_report - Recupera i risultati della scansione SASTsast_list_tools - Elenca gli strumenti SAST disponibiliRilevamento Segreti:
run_secrets_scan - Esegue strumenti di scansione dei segreti (Gitleaks, TruffleHog, Whispers, detect-secrets, Hawk-Eye)get_secrets_report - Recupera i risultati della scansione dei segretisecrets_list_tools - Elenca gli strumenti di scansione dei segreti disponibiliSCA (Analisi della Composizione Software):
run_sca_scan - Analizza le dipendenze per vulnerabilità (Grype, Syft, OSV-Scanner, Retire.js)get_sca_report - Recupera i risultati della scansione SCAsca_list_tools - Elenca gli strumenti SCA disponibiliRicognizione:
run_reconnaissance_scan - Esegue un singolo strumento di ricognizione (Subfinder, Amass, Nmap, Masscan, httpx, Katana, ffuf, bbot, gau, Arjun, wafw00f, Kiterunner)run_reconnaissance_chain - Collega più strumenti di ricognizione in sequenzaget_reconnaissance_report - Recupera i risultati della scansione di ricognizionereconnaissance_list_tools - Elenca gli strumenti di ricognizione disponibiliCodeQL:
detect_languages - Rileva i linguaggi nel codebase tramite Linguistcreate_codeql_database - Crea un database CodeQL per l'analisilist_databases - Elenca i database CodeQL disponibililist_query_packs - Elenca i pacchetti di query disponibiliexecute_query - Esegue query CodeQL specificheSicurezza dell'Infrastruttura e IaC:
run_iac_scan - Scansiona l'infrastruttura come codice per configurazioni errate (Checkov, KICS, Terrascan, TFSec, Hadolint)get_iac_report - Recupera i risultati della scansione IaCiac_list_tools - Elenca gli strumenti di scansione IaC disponibiliFuzzing del Codice Sorgente:
run_fuzzing_scan - Esegue una campagna di fuzzing white-box con copertura guidata contro un harness per target specifico (Atheris, Jazzer, Jazzer.js, PHP-Fuzzer)get_fuzzing_report - Recupera i risultati dei crash del fuzzing (input che causa crash + stack trace)fuzzing_list_tools - Elenca i motori di fuzzing disponibili, filtrati per linguaggio rilevatoDAST (Test Dinamici di Sicurezza delle Applicazioni):
run_dast_scan - Esegue strumenti di test dinamici di sicurezza delle applicazioni (sqlmap, NoSQLMap, Commix, Dalfox, SSTImap, SSRFmap, jwt_tool, interactsh)get_dast_report - Recupera i risultati della scansione DASTdast_list_tools - Elenca gli strumenti DAST disponibiliUtility:
run_utilities_scan - Esegue uno strumento utility contro un target live (Linguist, WireMock, Mitmproxy, aiohttp, Headless Chromium)get_utilities_report - Recupera i risultati della scansione utilityutilities_list_tools - Elenca gli strumenti utility disponibili e le loro opzioni di configurazioneSalute e Monitoraggio:
health_check - Verifica la disponibilità del server e degli strumentilist_tools - Elenca tutti gli strumenti disponibili e il loro statoMCPwner esegue strumenti di sicurezza che possono effettuare operazioni intrusive. Utilizza solo su sistemi e codebase di tua proprietà o per i quali hai esplicita autorizzazione al test – l'accesso non autorizzato è illegale. Limita l'accesso al server MCP agli utenti autorizzati e considera l'isolamento di rete per le distribuzioni in produzione. Rivedi le configurazioni degli strumenti prima di eseguire scansioni, poiché alcuni strumenti possono generare traffico di rete o carico di sistema significativi. Registra l'esecuzione degli strumenti e i risultati, tenendo presente che le scansioni di sicurezza possono attivare allarmi nei sistemi di monitoraggio. Segui le pratiche di responsible disclosure quando segnali vulnerabilità scoperte utilizzando MCPwner. Mantieni aggiornate le immagini Docker e scansiona regolarmente i container per vulnerabilità. Non commettere mai chiavi API, token o credenziali nei file di configurazione – utilizza invece variabili d'ambiente o sistemi di gestione dei segreti.
Inoltre, sei responsabile della tua sicurezza quando esegui questi strumenti e accedi a librerie di terze parti; si consiglia di eseguire tutto in sandbox e senza autorizzazioni speciali (minimizzato e rafforzato ove fattibile).
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Subfinder | Amass | Nmap | Masscan | ffuf |