跳到正文
GitHub·· 9 天前AI 评分38

pentest-ia:面向 vibe-coded 应用的 AI 辅助渗透测试工具

Dsguedes0/pentest-ia

AI 导读

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 separar anon (médio) de service_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ó em 127.0.0.1, teardown automático.
  • Sonda de ataque ao vivo (recon/live_http.py): .env/.git expostos, diretórios sem controle de acesso. CONFIRMED só 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. Veja examples/.
  • 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