Torna agli aggiornamenti
New releaseAug 5, 2026

pentest-ai v1.2.0

Pentester AI open-source che dimostra ogni scoperta. Gli oracoli automatici rieseguono ogni exploit; i bug verificati includono una capsula di prova che puoi riprodurre tu stesso.

Condividi
pentest-ai

pentest-ai

Non segnala. Dimostra.

PyPI Python CI License Stars Discord

Sito web · Installazione · Perché la verifica · Benchmark · Limiti · Discord

⚠️ Strumento offensivo, solo test autorizzati. Installando accetti l'AUP e i Termini. Vedi Uso responsabile ↓

Due minuti, nessuna API key, nessun target di tua proprietà

pip install ptai && ptai demo

ptai demo esegue la scansione di un'app vulnerabile inclusa e stampa 4 findings, 3 oracle-VERIFIED. Riproduce una di esse dal vivo da una proof capsule (replay 3/3), poi esegue le stesse route hardened e stampa 0 findings.

Due cose da notare. I findings appaiono e scompaiono con la vulnerabilità piuttosto che perché lo strumento è diventato silenzioso — l'unica cosa cambiata tra le due esecuzioni è la correzione. E uno dei quattro resta un candidato: il bypass del login SQLi è reale, ma nessun oracle ha potuto ri-dimostrarlo su quella route, quindi non riceve un badge. Quel vuoto è il prodotto che funziona, non un bug nella demo.

ptai che esegue la scansione di OWASP Juice Shop: i findings passano da candidato a oracle-VERIFIED

Cosa significa realmente VERIFIED qui

La maggior parte degli scanner ti dice che una cosa potrebbe essere sfruttabile e lascia a te il triage. ptai tratta un finding come candidato finché un oracle macchina nominato non riesegue lo exploit e lo riproduce N volte su N. Solo allora guadagna lo stato VERIFIED.

Tre proprietà rendono questo più di uno slogan:

Nessun LLM produce mai un verdetto. La regola è applicata nel codice, non per policy: un verdetto che non può nominare l'oracle che lo ha ottenuto viene rifiutato. Un LLM coordina l'esecuzione e ragiona sui risultati. Non decide mai se un bug è reale.

Ogni oracle ha un controllo che deve fallire. Un bypass di header trusted deve restituire contenuto privilegiato con l'header e una negazione senza di esso. Un controllo di credenziali leakate deve essere accettato per il segreto reale e rifiutato per un gemello deliberatamente corrotto. Un endpoint che risponde 200 a tutto non guadagna nulla. Questo è ciò che impedisce che "ha restituito 200" venga scambiato per prova.

L'output di scanner di terze parti viene trattenuto. I risultati di nuclei, nikto e zap non diventano findings per propria autorità. Restano non verificati finché uno degli oracle di ptai non li ri-dimostra in modo indipendente.

Ogni finding VERIFIED viene distribuito come proof capsule portatile — il finding, la ricetta per ri-dimostrarlo e la ricevuta. Chiunque può eseguire ptai replay contro il target live e vedere l'oracle riconfermare, senza fidarsi di ptai. Le capsule sono deliberatamente non firmate: il replay è il meccanismo di fiducia, non una firma che devi accettare per fede.

Numeri onesti

Classi di vulnerabilità con un oracle funzionante14
Probe nella libreria63
Probe che possono guadagnare VERIFIED28
Tipi di oracle23
Wrapper di strumenti203
…che oggi trasformano l'output in findings18
Strumenti MCP52
Agenti specializzati18
Test2.729 su Python 3.10 / 3.12 / 3.14

Su un honeypot deliberatamente vulnerabile, 23 findings si verificano in quelle 14 classi con precisione al 100% e zero falsi positivi. Su un OWASP Juice Shop standard, 12 si verificano in una singola scansione.

Leggi quei numeri con attenzione, perché i vuoti sono il punto. Esistono 63 probe ma solo 28 possono guadagnare un verdetto; le altre 35 riportano candidati onesti. 203 wrapper sono registrati ma solo 18 trasformano l'output dello strumento in findings — il resto viene eseguito e restituisce testo grezzo. Il gate degli oracle compra precisione, non tasso di cattura: rimuove i falsi positivi, non trova più bug.

L'harness dell'honeypot (tests/honeypot/) e un gate zero-falsi-positivi su app pulita (tests/cleanapp/) sono entrambi inclusi in questo repo e vengono eseguiti in CI, quindi questi risultati sono riproducibili, non screenshot.

Cosa non fa

Detto chiaramente, perché uno strumento di sicurezza che si vende oltre il suo valore è peggio che inutile.

  • È uno scanner di applicazioni web. Tutte le 63 probe e tutti i 23 tipi di oracle puntano a HTTP. AD, cloud, mobile e wireless hanno agenti e wrapper di strumenti, ma nessuna libreria di probe e nessun oracle dietro di loro.
  • Non può fare escalation di privilegi locale. Serve esecuzione di codice su un host che già possiedi. ptai testa da remoto e non ha tale canale, quindi l'agente privesc riporta unsupported piuttosto che uno zero fuorviante.
  • Non è uno scanner CVE. Non esiste un database versione-a-CVE né una libreria di exploit. Il lavoro CVE è limitato a ricerche osv.dev su manifest leakati.
  • I playbook pianificano, non eseguono. ptai playbook run risolve le dipendenze e stampa il piano. Eseguirlo contro un target non è ancora collegato.
  • Non è autonomo. Gli agenti LLM di pentest completamente autonomi completano il 21–31% dei compiti end-to-end; le configurazioni assistite da umani raggiungono il 64%. ptai è costruito per il secondo regime. Premi Ctrl+C due volte per prendere il controllo a metà esecuzione.

La lista completa dei difetti interni, inclusa tutto quanto sopra, è tracciata apertamente piuttosto che in silenzio. Se qualcosa qui è sbagliato, apri un issue e verrà corretto.

Installazione

Percorso 1 — Guidalo da Claude Code, Cursor o Codex (nessuna API key)

Il tuo abbonamento AI esistente è l'LLM. ptai fornisce gli strumenti.

pip install ptai
ptai mcp install          # rileva automaticamente i tuoi client MCP e scrive le loro configurazioni

Riavvia il client e 52 strumenti sono lì. Nessuna chiave Anthropic necessaria su questo percorso — il server MCP non ospita alcun LLM proprio per design.

Percorso 2 — CLI standalone
pip install ptai
export ANTHROPIC_API_KEY=sk-...        # oppure OPENAI_API_KEY
ptai start https://target.example.com

# completamente locale, senza cloud:
export PENTEST_AI_LLM_PROVIDER=ollama

# oppure deterministico, senza alcun LLM:
ptai start https://target.example.com --no-llm

La spesa è limitata a $10 per engagement per impostazione predefinita (PTAI_PRICE_LIMIT).

Strumenti di sicurezza, REST API e altre opzioni
ptai tools install --tier core     # oppure recommended / full
ptai tools install nmap nuclei     # oppure per nome
ptai serve                         # HTTP REST + WebSocket per dashboard
ptai menu                          # launcher interattivo, senza LLM

All'avvio dell'engagement il planner prevede quali strumenti serviranno all'esecuzione e chiede una volta di installare quelli mancanti. Rifiuta e la risposta persiste.

Benchmark

Riproducibili, in git, con artefatti grezzi. Nessun "tasso di rilevamento del 98,7%" che non puoi verificare.

StrumentoFindingsCritical+HighBucket OWASPTasso FP
ptai884650%
ZAP 2.17.05930147%
Nuclei 3.8.01010%
HexStrike v6.01101

n=1, valutatore singolo, tentativo singolo su OWASP Juice Shop. Metodologia e output grezzo in benchmarks/; analisi completa in docs/benchmarks/juice-shop.md.

La lettura onesta: ptai è forte su target web SPA con copertura di probe curata. HexStrike è più ampio (cloud, binario, CTF) e probabilmente batte ptai su superfici tradizionali crawlable come WordPress. Juice Shop è anche l'app vulnerabile più documentata su internet, quindi sia l'LLM che gli autori delle probe hanno un vantaggio — che è esattamente il motivo per cui il numero dell'honeypot privato è più basso, e perché entrambi vengono pubblicati.

Inseriscilo in CI

- run: pip install ptai
- run: ptai start ${{ vars.STAGING_URL }} --ci --fail-on verified --sarif pentest.sarif
- uses: github/codeql-action/upload-sarif@v3
  with: { sarif_file: pentest.sarif }

--fail-on verified interrompe la build solo su un finding che un oracle ha effettivamente dimostrato, quindi il gate non può essere attivato dal rumore dello scanner. Il SARIF viene caricato su GitHub Code Scanning, i findings vengono pubblicati come commento alla PR. Template GitLab e Jenkins in docs/ci-cd.md.

Come funziona

recon ──▶ auth ──▶ web ──┬──▶ ad
                         ├──▶ cloud          ┌──────────────────┐
                         └──▶ api ──────────▶│  findings DB     │
                                             │  scope-guarded   │
                                             └────────┬─────────┘
                                                      ▼
                                          verify (oracles, N/N)
                                                      ▼
                                   chain ─▶ validate ─▶ detect ─▶ report
                                          md · html · pdf · SARIF · JUnit

18 agenti specializzati eseguono le fasi. Con una API key ciascuno usa un LLM per ragionare sui risultati; senza, viene eseguito come un loop di strumenti deterministico. L'ordine delle fasi e il rilevamento sono identici in entrambi i casi — le probe trovano i bug, l'LLM solo coordina.

A chi è destinato

Team AppSec che collegano una scansione autenticata a ogni PR, con un gate che si attiva solo su findings dimostrati. Consulenti che vogliono che il report si scriva da solo e una capsule che gli ingegneri del cliente possono riprodurre. Cacciatori di bug bounty che preferiscono fare triage di 12 findings dimostrati piuttosto che 600 forse. Utenti di Claude Code / Cursor / Codex che vogliono strumenti reali dietro il loro assistente senza un'altra bolletta API.

Lavora con me

Lo strumento è MIT e gratuito per sempre — questo non cambierà.

Se vuoi un pentest consegnato piuttosto che eseguito da te, o un workspace ospitato con cronologia e accesso per il team, entrambi sono su pentestai.xyz. Ogni finding in un engagement consegnato include una proof capsule che i tuoi ingegneri possono riprodurre da soli, che è un artefatto materialmente diverso da un PDF pieno di valutazioni di gravità.

Domande: [email protected]

Uso responsabile

ptai esegue operazioni reali di rete e host contro i target che specifichi. Sei l'unico responsabile di avere un'autorizzazione scritta esplicita per ogni target. Testare sistemi che non possiedi può violare il Computer Fraud and Abuse Act, il Computer Misuse Act 1990, l'Articolo 32 del GDPR e gli equivalenti altrove.

La prima esecuzione richiede l'accettazione dell'AUP e la persiste. Imposta PENTEST_AI_AUP_ACCEPTED=1 in CI. Gli host fuori scope vengono rifiutati al momento dell'invocazione dello strumento. Tre protezioni sono disattivate per impostazione predefinita e vale la pena attivarle: intensity=safe salta le probe che mutano lo stato, respect_rate_limits onora 429/Retry-After, e strict_scope rifiuta richieste fuori host.

Callback out-of-band (OAST) — privacy

Le classi cieche (blind SSRF/SQLi/XXE, stored XSS, SSTI, Log4Shell) vengono rilevate tramite callback che per impostazione predefinita instradano al oast.fun pubblico di ProjectDiscovery.

Ogni engagement genera una nuova coppia di chiavi RSA-2048 localmente. I payload di interazione sono crittografati AES-CTR-256 a riposo con la chiave avvolta in RSA-OAEP-SHA256 verso la tua chiave pubblica, quindi solo il tuo processo locale può decrittarli. Ma i metadati sono visibili al server: che un'interazione è avvenuta, l'IP sorgente del target, il timestamp e il protocollo.

PortSwigger vieta l'uso del collaborator pubblico nelle loro regole di bug bounty, e i programmi grandi richiedono sempre più infrastruttura di callback controllata dal tester. Per gli engagement a pagamento, self-hosta Interactsh:

ptai start http://target --oast-server https://oast.example.com --oast-token <T>
ptai start http://target --no-oast          # oppure disabilita del tutto

FAQ

Mi serve una API key? No sul percorso MCP — il tuo abbonamento Claude Code / Cursor / Codex è l'LLM. Solo la CLI standalone ne ha bisogno, e anche lì Ollama viene eseguito completamente in locale.

È autonomo? No, e non pretende di esserlo. Le probe rilevano, l'LLM coordina, tu decidi. Ctrl+C due volte prende il controllo a metà esecuzione.

Sicuro per la produzione? Solo con autorizzazione scritta e le tre protezioni sopra attivate.

Fa telefonate a casa? Nessuna telemetria; i findings restano sul tuo disco. I callback OAST sono l'unica eccezione — vedi sopra, oppure esegui --no-oast.

In cosa è diverso dal chiedere a Claude di hackerare qualcosa? Una libreria di probe deterministiche curate trova i bug e un oracle macchina li dimostra. Un LLM da solo ti dà un'ipotesi plausibile senza alcun modo di sapere se è reale.

Ecosistema

RepoCosa
pentest-aiQuesto repo. CLI + server MCP.
pentest-ai-agentsFile subagent Claude Code standalone. Opzionali.

Community: Discord · Discussioni · Issues

Cronologia stelle

Grafico cronologia stelle

Licenza

MIT. Fai quello che vuoi con esso.

Se ptai ti ha salvato una domenica, metti una stella al repo.

Categorie