
VulnAgent-X: Un framework agentico a strati per il rilevamento di vulnerabilità a livello di repository
VulnAgent-X è un prototipo di rilevamento di vulnerabilità/difetti multi-agente orientato alla riproduzione di paper di ricerca. Accetta in input un repository locale o un diff e produce in output findings strutturati, catena di prove, risultati di localizzazione, confidenza e log degli esperimenti.
repo path o unified diffscreening -> context expansion -> scheduler -> router -> experts -> sceptic -> verification(stub) -> evidence fusionissue_typelocation(file + line range)evidence_summaryconfidenceseverityoptional_cwefix_hintevidence_chaincounter_evidencescreening: screening rapido delle aree sospette (regole + segnali dai metadati)context_expansion: recupero del "contesto minimo sufficiente" (estrazione di finestre basate sulle posizioni sospette)scheduler: strategie di escalation basate su confidenza e rischio (early_exit / expert_review / verification)router_agent: seleziona l'Agent esperto per ogni area sospettasemantic/security/logic: forniscono affermazioni strutturate e prove da diverse prospettivesceptic_agent: genera controprove e segnali di penalizzazioneverification: verifica dinamica opzionale (attualmente implementazione segnaposto sicura)evidence_fusion: fusione unificata delle prove e output dei findings finaliRequisiti: Python 3.11+ (attualmente funziona anche su versioni più recenti)
cd /Users/xiaolu/Documents/Python_code/vulnAgentX
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[dev]'
Analizza un intero repository:
.venv/bin/vulnagentx analyze --repo /path/to/repo --output json
Analizza un file di diff:
.venv/bin/vulnagentx analyze --diff-file /path/to/patch.diff --output json
Output sintetico:
.venv/bin/vulnagentx analyze --repo /path/to/repo --output summary
Avvia il servizio:
.venv/bin/uvicorn vulnagentx.app.api:app --reload
Health check:
curl http://127.0.0.1:8000/health
Avvia un'analisi:
curl -X POST http://127.0.0.1:8000/analyze \
-H "Content-Type: application/json" \
-d '{"repo_path":"/path/to/repo"}'
docker compose -f docker/docker-compose.yml up --build
.venv/bin/ruff check src tests
.venv/bin/mypy src
.venv/bin/pytest
{
"run_id": "...",
"findings": [
{
"issue_type": "command_injection",
"location": {"file_path": "app.py", "start_line": 42, "end_line": 42},
"evidence_summary": "Command execution surface detected...",
"confidence": 0.87,
"severity": "critical",
"optional_cwe": "CWE-78",
"fix_hint": "Avoid shell command composition...",
"source_agents": ["security_agent", "semantic_agent"],
"evidence_chain": [],
"counter_evidence": []
}
],
"metrics": {
"runtime_seconds": 0.07
},
"logs": []
}
| File | Scopo |
|---|---|
.env.example | Template delle variabili d'ambiente (impostazioni opzionali come il livello di log). |
pyproject.toml | Build del progetto, dipendenze, entry point degli script, configurazione di pytest/ruff/mypy. |
README.md | README principale (con pulsante di cambio lingua, default cinese). |
README.zh.md | Documentazione completa in cinese. |
README.en.md | Documentazione completa in inglese. |
docker/Dockerfile | File di build dell'immagine container del servizio API. |
docker/docker-compose.yml | Avvio locale dei servizi containerizzati con un comando. |
rules/semgrep/vulnagentx-rules.yml | Set di regole Semgrep integrato (command injection/SQL injection/deserializzazione/API C non sicure). |
scripts/run_experiment.py | Script per l'esecuzione di esperimenti batch sui dataset; produce previsioni in JSONL. |
scripts/evaluate.py | Legge gli output degli esperimenti e calcola le metriche di rilevamento, localizzazione ed efficienza. |
scripts/run_ablation.py | Script per gli esperimenti di ablazione (no_semgrep/no_treesitter/no_sceptic/no_verification). |
src/vulnagentx)