pentest-ia:面向 vibe-coded 应用的 AI 辅助渗透测试工具
Dsguedes0/pentest-ia
pentest-ia 是一款面向 Lovable、Bolt、v0、Replit、Cursor 等 vibe-coded 应用的 AI 辅助渗透测试工具,聚焦巴西 LGPD 合规。
Ferramenta de pentest assistido por IA para apps "vibe-coded" (Lovable, Bolt, v0, Replit, Cursor), com foco em Brasil / LGPD. Recebe um repositório, sobe o app numa sandbox efêmera e o ataca ao vivo usando o código-fonte como mapa (gray-box).
Princípio de projeto: PRECISÃO
Nada é reportado como CONFIRMED sem PoC reproduzível. Arquitetura determinística-primeiro;
LLM entra só onde agrega (encadeamento e laudo). Zero falso-positivo confirmado > cobertura.
O que já faz (Fase 1)
- Recon determinístico de segredos (
recon/secrets.py): detecta chaves expostas e decodifica o JWT do Supabase para separaranon(médio) deservice_role(crítico — ignora RLS). - Sonda de RLS do Supabase (
recon/supabase_rls.py): enumera tabelas via PostgREST e prova leitura anônima. A sonda ativa exige--authorized(só alvo próprio/autorizado — Lei 12.737). - Sandbox Docker efêmera (
sandbox/): sobe o alvo em rede dedicada, publica só em127.0.0.1, teardown automático. - Sonda de ataque ao vivo (
recon/live_http.py):.env/.gitexpostos, diretórios sem controle de acesso.CONFIRMEDsó quando o conteúdo sensível é efetivamente recuperado. - Relatório com severidade, PoC e mapeamento LGPD (art. 46/48).
- Orquestrador + laudo (
report/generator.py): pipeline num comando, gera relatório Markdown com resumo executivo, PoC e seção LGPD. Vejaexamples/. - Camada de IA (
agent/llm.py,report/narrative.py): redige o resumo executivo via LLM gratuito (Gemini/Groq/Cerebras/OpenRouter). Sem chave, cai em fallback determinístico. A IA nunca cria achados — só redige prosa a partir do que foi comprovado. - Guardrail anti prompt-injection (
agent/guardrails.py): conteúdo do alvo é sempre DADO, nunca instrução. - Wrappers OSS (
agent/tools/): Semgrep (SAST), Trivy (deps/CVE), Nuclei (DAST) como Actions do agente. Ausência da ferramenta degrada graciosamente (achado INFO), nunca quebra o run. Resultados estáticos são POTENTIAL — só probes com PoC viram CONFIRMED.
Uso
python3 -m venv .venv && . .venv/bin/activate && pip install -r requirements.txt python scan.py <caminho-do-repo> # recon estático python scan.py <repo> --live http://127.0.0.1:PORT # + ataque ao vivo python scan.py <repo> --authorized # libera sonda ativa de RLS python scan.py <dir> --sandbox-image IMG --report reports/laudo.md # pipeline completo
Habilitar a IA (opcional, gratuito e sem cartão)
Pegue uma chave grátis no Google AI Studio (Gemini) ou Groq e exporte:
export GEMINI_API_KEY=... # ou GROQ_API_KEY / CEREBRAS_API_KEY / OPENROUTER_API_KEY
Sem chave, tudo funciona com resumo determinístico. Nunca rode código de cliente real em tier gratuito de LLM.
Testes de precisão (guardiões do projeto)
python benchmarks/run.py # regressão estática (fixtures vuln/safe) python benchmarks/live_juiceshop.py # loop gray-box completo com OWASP Juice Shop
Ética e escopo
Fase 1 opera apenas contra sandbox própria, fixtures e alvos propositalmente vulneráveis. Free tier de LLM não recebe código de cliente. Alvo vivo de terceiro exige autorização assinada.
来源:GitHub · github.com