Firebreak

Servidor MCP de segurança que transforma sua IA em um testador de penetração.

Documentação

Firebreak

O servidor MCP de segurança que transforma sua IA em um testador de penetração.

Início Rápido · Como Funciona · Referência de Ferramentas · Contribuindo · Licença

CI License Rust MCP Protocol 20 Tools 32 Checks 47 VCVD Patterns


Conecte o Firebreak ao Claude, Cursor ou qualquer cliente compatível com MCP. Depois é só perguntar:

You:    "Is my app secure?"
Claude: [calls firebreak tools] Found 6 vulnerabilities. 1 high (CORS misconfiguration),
        5 medium (missing security headers). Security score: B. Want me to fix them?

Sem CLI para aprender. Sem relatórios para ler. A IA executa os scans, interpreta os resultados e te guia pelas correções.


Por que Firebreak

Código gerado por IA vem com vulnerabilidades previsíveis: middleware de autenticação inconsistente, políticas RLS permissivas, IDOR em cada endpoint, segredos no bundle JS. Desenvolvedores que usam IA para construir nem sempre sabem como testar o que ela constrói.

O Firebreak inverte o problema. Em vez de esperar que os desenvolvedores aprendam ferramentas de segurança, ele dá à IA as ferramentas de segurança. A mesma IA que escreveu o código agora pode testá-lo, encontrar as falhas e corrigi-las.

O que o torna diferente:

  • Nativo MCP — não é um wrapper de CLI. Construído do zero para chamadas de ferramentas de IA.
  • VCVD — 47 padrões de vulnerabilidade específicos para código gerado por IA que scanners tradicionais não detectam.
  • Prova em vez de teoria — cada achado inclui a requisição/resposta HTTP real que comprova a vulnerabilidade.
  • Seguro por design — com limite de taxa, escopo bloqueado, não destrutivo. Não pode acidentalmente DROPAR seu banco de dados.

Início Rápido

Opção 1: Compilar a partir do código-fonte

git clone https://github.com/protonese3/Firebreak.git
cd Firebreak
cargo build --release
./target/release/firebreak

Opção 2: Docker

git clone https://github.com/protonese3/Firebreak.git
cd Firebreak
docker compose up -d

De qualquer forma, o Firebreak inicia na porta 9090.

Conectar ao Claude Desktop

Adicione isso ao seu claude_desktop_config.json:

{
  "mcpServers": {
    "firebreak": {
      "url": "http://localhost:9090/mcp"
    }
  }
}

Reinicie o Claude Desktop. Agora você tem 20 ferramentas de segurança disponíveis.

Conectar ao Cursor / Windsurf / Qualquer Cliente MCP

Aponte a configuração MCP do seu cliente para http://localhost:9090/mcp. O servidor fala MCP padrão (JSON-RPC 2.0 sobre HTTP).

Verifique se funciona

Pergunte à sua IA: "Quais ferramentas de segurança você tem disponíveis?"

Ela deve listar as ferramentas do Firebreak. Depois tente: "Escanear https://httpbin.org em busca de problemas de segurança"


Como Funciona

How Firebreak Works

A IA é a orquestradora. O Firebreak não decide o que testar — ele fornece as ferramentas. A IA escolhe a estratégia com base no que o usuário pede e no que encontra pelo caminho.

Fluxo típico

1. User: "Test my app at https://myapp.com"

2. AI calls firebreak_scan_quick({ target_url: "https://myapp.com" })
   └── Firebreak probes headers, paths, CORS, TLS
   └── Returns: 4 findings, score B

3. AI explains results in plain language
   └── "Found a CORS misconfiguration and 3 missing headers..."

4. User: "Fix the CORS issue"

5. AI calls firebreak_finding_fix({ finding_id: "...", framework: "express" })
   └── Returns: before/after code diff for Express

6. User applies fix

7. AI calls firebreak_replay({ finding_id: "..." })
   └── Returns: "Fixed. Server no longer reflects arbitrary origins."

Referência de Ferramentas

Ferramentas de Conhecimento

Elas não acessam nenhum serviço externo. Consultam a base de conhecimento de segurança integrada do Firebreak.

FerramentaDescriçãoExemplo
firebreak_best_practiceMelhores práticas de segurança para um tópico{ topic: "jwt-auth" }
firebreak_check_patternEscanear código em busca de padrões inseguros{ code: "...", language: "javascript" }
firebreak_explain_vulnExplicar um tipo de vulnerabilidade{ vuln_id: "IDOR" }
firebreak_security_checklistGerar uma lista de verificação de segurança{ stack: ["nextjs", "supabase"] }
firebreak_owasp_checkMapear um achado para o OWASP Top 10{ description: "SQL injection in login" }
firebreak_analyze_rlsAnalisar SQL para problemas de política RLS{ sql: "CREATE POLICY..." }

Ferramentas de Escaneamento

Elas fazem requisições HTTP ao alvo. Com limite de taxa e escopo bloqueado.

FerramentaDescriçãoExemplo
firebreak_scan_quickEscaneamento rápido, apenas crítico+alto (2-3 min){ target_url: "https://myapp.com" }
firebreak_scan_fullTeste de penetração completo (caixa preta/cinza/branca){ target_url: "...", mode: "gray", credentials: [...] }
firebreak_scan_targetEscaneamento focado em uma área{ target_url: "...", focus: "auth" }
firebreak_scan_statusVerificar o progresso de um escaneamento em andamento{ scan_id: "..." }
firebreak_scan_stopParar um escaneamento, manter resultados parciais{ scan_id: "..." }

Ferramentas de Análise

Elas trabalham com resultados de escaneamento armazenados. Sem requisições externas.

FerramentaDescrição
firebreak_resultsResumo do escaneamento com pontuação de segurança (A-F)
firebreak_finding_detailEvidência completa para um achado específico
firebreak_finding_fixGerar código de correção para um achado
firebreak_replayRe-testar um achado para verificar se foi corrigido
firebreak_compareComparar dois escaneamentos (corrigido / novo / inalterado)
firebreak_scan_historyListar escaneamentos anteriores para um alvo
firebreak_attack_chainCadeias de ataque em várias etapas
firebreak_report_generateExportar relatório (JSON, Markdown, HTML)
firebreak_report_executiveResumo executivo não técnico

Verificações de Escaneamento — 32 Verificações de Segurança

Cada escaneamento executa um subconjunto dessas verificações dependendo do tipo de escaneamento (rápido, completo, direcionado). Cada verificação produz achados com evidência HTTP completa.

Cabeçalhos e TLS

VerificaçãoO que testa
Cabeçalhos de segurançaPresença de HSTS, X-Content-Type-Options, X-Frame-Options, CSP
Análise de qualidade CSPunsafe-inline, unsafe-eval, fontes curinga
Permissions-PolicyPresença e configuração do cabeçalho de política de recursos
Divulgação de versão do servidorCabeçalhos Server, X-Powered-By, X-AspNet-Version
Vazamentos de cabeçalhos de informaçãoX-Debug-Token, X-Backend-Server, Via, X-Request-ID
Aplicação de HTTPSAnálise da cadeia de redirecionamento HTTP para HTTPS
Qualidade do HSTSValor de max-age, includeSubDomains, diretivas de preload
Cabeçalhos avançadosCross-Origin-Opener-Policy, Cross-Origin-Resource-Policy, Cross-Origin-Embedder-Policy

Autenticação e Sessão

VerificaçãoO que testa
Segurança de cookiesFlags HttpOnly, Secure, SameSite em cookies de sessão
Autenticação ausente em endpoints de APIAcesso não autenticado a rotas protegidas
Detecção de limite de taxaLimitação de login e endpoints de API
Enumeração de métodos HTTPTRACE, PUT, DELETE habilitados em endpoints que não deveriam permiti-los
Injeção de cabeçalho HostCabeçalho Host manipulado refletido em respostas ou redirecionamentos

Dados e API

VerificaçãoO que testa
Descoberta de API não autenticadaCaminhos comuns de API acessíveis sem credenciais
Detecção de ID sequencialRisco de IDOR a partir de identificadores de recursos previsíveis
Configuração incorreta de CORSReflexão de origem, aceitação de origem nula, curinga com credenciais
Teste de redirecionamento abertoParâmetros de redirecionamento não validados em URLs

Conteúdo e Frontend

VerificaçãoO que testa
Identificação de tecnologiaDetecção de CMS, identificação de framework, software de servidor
Bibliotecas JS vulneráveisjQuery, Angular, Bootstrap, Lodash com CVEs conhecidos
Exposição de source mapsArquivos .map acessíveis em produção
Segredos em bundles JSChaves de API, tokens, credenciais em JavaScript do lado do cliente
Detecção de conteúdo mistoRecursos HTTP carregados em páginas HTTPS
Análise de CSRF em formuláriosFormulários sem tokens CSRF ou usando GET para mudanças de estado

Reconhecimento e Descoberta

VerificaçãoO que testa
Rastreador webLinks HTML, endpoints JS, sitemap, robots.txt (profundidade recursiva 3)
Sondagem de caminhos sensíveisPainéis de administração, arquivos de configuração, backups (com validação de conteúdo para eliminar falsos positivos)
robots.txt / sitemap.xmlAnálise de caminhos desautorizados e endpoints de sitemap
security.txtConformidade com RFC 9116 e informações de contato
Divulgação de página de erroStack traces, informações de depuração, caminhos internos em respostas de erro
Descoberta de referências a subdomíniosSubdomínios referenciados em HTML, JS e cabeçalhos
Segurança de cabeçalhos de cacheCache-Control, Pragma, Expires em respostas sensíveis

VCVD — Banco de Dados de Vulnerabilidades de Vibe Coding

47 padrões de vulnerabilidade que o código gerado por IA erra. Scanners tradicionais não procuram por eles porque são específicos de como LLMs escrevem código.

Autenticação e Identidade

IDPadrãoSeveridade
VC-AUTH-001Middleware de autenticação inconsistente — IA aplica autenticação a algumas rotas, mas não a outrasCRÍTICO
VC-AUTH-002Validação apenas no cliente — verificações de papel existem no React, mas não na APICRÍTICO
VC-AUTH-003JWT decodificado sem verificação — jwt.decode() em vez de jwt.verify()CRÍTICO
VC-AUTH-004Chave de serviço no código do cliente — chave service_role do Supabase no bundle JSCRÍTICO
VC-AUTH-005Expiração de token >30 dias — "por conveniência"ALTO
VC-AUTH-006OAuth sem parâmetro de estadoALTO
VC-AUTH-007Senha na string de consulta da URLALTO
VC-AUTH-008Sessão não regenerada após loginMÉDIO

Acesso a Dados

IDPadrãoSeveridade
VC-DATA-001IDOR — IDs sequenciais sem verificação de propriedadeCRÍTICO
VC-DATA-002USING (true) em RLS — política "temporária" da IA que vai para produçãoCRÍTICO
VC-DATA-003Tabela criada sem habilitar RLSCRÍTICO
VC-DATA-004SELECT * expondo hashes de senha e PIIALTO
VC-DATA-005...req.body espalhado em inserção de banco sem lista branca de camposALTO
VC-DATA-006Introspecção GraphQL habilitada em produçãoMÉDIO
VC-DATA-007Consultas N+1 sem limite como vetor de DoSMÉDIO
VC-DATA-008Consultas multi-tenant sem filtro tenant_idCRÍTICO

Injeção

IDPadrãoSeveridade
VC-INJ-001Template literals em consultas SQLCRÍTICO
VC-INJ-002innerHTML com entrada do usuárioALTO
VC-INJ-003Conteúdo do usuário armazenado e renderizado sem sanitizaçãoCRÍTICO
VC-INJ-004Entrada do usuário em exec() / spawn()CRÍTICO
VC-INJ-005Caminhos de arquivo construídos a partir de entrada do usuárioALTO
VC-INJ-006Fetch no servidor com URL fornecida pelo usuário (SSRF)ALTO
VC-INJ-007Entrada do usuário passada como fonte de templateALTO
VC-INJ-008Operadores MongoDB em entrada JSONALTO

Infraestrutura

IDPadrãoSeveridade
VC-INFRA-001Modo de depuração / stack traces em produçãoALTO
VC-INFRA-002Access-Control-Allow-Origin: * com credenciaisALTO
VC-INFRA-003Ausência de HSTS, X-Frame-Options, CSPMÉDIO
VC-INFRA-004Portas Docker desnecessárias expostasMÉDIO
VC-INFRA-005Uploads de usuários armazenados sem criptografiaMÉDIO
VC-INFRA-006TLS 1.0/1.1 ainda habilitadoMÉDIO
VC-INFRA-007Painel de administração acessível pela internet públicaALTO
VC-INFRA-008Credenciais padrão inalteradasCRÍTICO

Frontend

IDPadrãoSeveridade
VC-FE-001Chaves de API no bundle JavaScriptCRÍTICO
VC-FE-002Guarda de autenticação apenas no React Router, não na APIALTO
VC-FE-003JWT armazenado em localStorageMÉDIO
VC-FE-004Formulários sem proteção CSRFALTO
VC-FE-005URL de redirecionamento de parâmetro de consulta sem validaçãoMÉDIO
VC-FE-006Handler postMessage sem verificação de origemMÉDIO
VC-FE-007Source maps acessíveis em produçãoBAIXO
VC-FE-008Campos sensíveis sem autocomplete="off"BAIXO

Pontuação de Segurança

Cada escaneamento produz uma nota com base no que foi encontrado:

NotaCritériosInterpretação
AZero crítico ou alto. Máximo 2 médios.Pode lançar.
BZero crítico. Alguns altos ou médios.Corrija os altos em breve.
CMúltiplos problemas de alta gravidade.Precisa de trabalho antes da produção.
D1-2 críticos ou >5 altos.Risco significativo. Priorize correções.
F3+ críticos ou uma cadeia completa de comprometimento.Não faça deploy.

Salvaguardas de Segurança

O Firebreak é projetado apenas para testes autorizados.

SalvaguardaComo funciona
Limitação de taxa10 requisições/segundo ao alvo (configurável). Janela deslizante.
Bloqueio de escopoAtaca apenas a URL alvo especificada. Sem movimento lateral, sem enumeração de subdomínios.
Não destrutivoSem requisições DELETE, DROP, UPDATE ou POST que modifiquem dados. Apenas sondagem.
ConsentimentoA IA pede confirmação antes da primeira varredura.
Trilha de auditoriaCada requisição HTTP é registrada com timestamp, alvo e motivo.

Configuração

Variáveis de ambiente:

VariávelPadrãoDescrição
FIREBREAK_HOST0.0.0.0Endereço de bind
FIREBREAK_PORT9090Porta
RUST_LOGfirebreak=infoNível de log

Copie .env.example para .env e edite conforme necessário.


Estrutura do Projeto

firebreak/
├── src/
│   ├── main.rs                 # Axum HTTP server, AppState, routing
│   ├── types.rs                # Shared types: Scan, Finding, Evidence, ScanSummary
│   │
│   ├── mcp/                    # MCP protocol implementation
│   │   ├── protocol.rs         #   JSON-RPC 2.0 types
│   │   └── handler.rs          #   Request dispatch (initialize, tools/list, tools/call)
│   │
│   ├── tools/                  # MCP tool implementations
│   │   ├── knowledge/          #   Knowledge tools (best practices, pattern check, OWASP)
│   │   ├── scan.rs             #   Scan tools (quick, full, targeted, status, stop)
│   │   └── analysis.rs         #   Analysis tools (results, fix, replay, compare, reports)
│   │
│   ├── engine/                 # HTTP scanning engine
│   │   ├── mod.rs              #   Scan orchestration (quick/full/targeted/replay)
│   │   └── checks.rs           #   32 security checks (headers, TLS, auth, CORS, cookies, IDOR...)
│   │
│   ├── vcvd/                   # Vibe Coding Vulnerability Database
│   │   └── data.rs             #   47 patterns with descriptions, detection, fixes
│   │
│   ├── store/                  # SQLite persistence
│   │   └── mod.rs              #   CRUD for scans, findings, audit log
│   │
│   ├── safety/                 # Safety guardrails
│   │   └── mod.rs              #   Rate limiter, scope lock, consent, audit trail
│   │
│   ├── rls/                    # RLS policy analyzer
│   │   └── mod.rs              #   SQL parsing with sqlparser-rs
│   │
│   └── report/                 # Report generation
│       └── mod.rs              #   JSON, Markdown, HTML, executive summary
│
├── knowledge/
│   └── best-practices/         # 100 security guides (JWT, RLS, CORS, uploads, CSP...)
│
├── frontend/                   # React dashboard (Vite + TypeScript + Tailwind)
│
├── Dockerfile                  # Multi-stage build, non-root user
├── docker-compose.yml          # Firebreak + headless Chromium
└── .github/workflows/ci.yml   # Build, test, lint, artifacts

Pilha Tecnológica

ComponenteTecnologiaPorquê
LinguagemRustBinário único, sem runtime, seguro em memória, rápido
Servidor HTTPAxumAssíncrono, ecossistema de middleware tower
Cliente HTTPreqwestMaduro, suporte a TLS, controle de redirecionamento
Banco de dadosSQLite (rusqlite)Zero configuração, embutido, suficiente para varreduras locais
Parser SQLsqlparser-rsAnálise de políticas RLS sem banco de dados em execução
Runtime assíncronotokioPadrão da indústria
Serializaçãoserde + serde_jsonRápido, macros derivadas
DashboardReact + TypeScript + Vite + TailwindModerno, servidor de desenvolvimento rápido, CSS utilitário

O binário de release tem ~8 MB sem dependências de runtime.


Contribuindo

Contribuições são bem-vindas. Veja como participar:

Começando

git clone https://github.com/protonese3/Firebreak.git
cd Firebreak
cargo build
cargo test

O servidor roda em http://localhost:9090/mcp por padrão.

Áreas onde ajuda é necessária

Novos padrões VCVD — Encontrou um padrão de vulnerabilidade que a IA gera consistentemente? Adicione-o em src/vcvd/data.rs. Cada padrão precisa de um ID, descrição, severidade, dica de detecção e correção.

Verificações do mecanismo de varredura — Adicione novas verificações de vulnerabilidade em src/engine/checks.rs. Cada função de verificação recebe um cliente reqwest, URL alvo e referência de segurança. Retorne um Vec<Finding>.

Guias de melhores práticas — Adicione arquivos markdown em knowledge/best-practices/. Depois registre-os em src/tools/knowledge/best_practices.rs.

Correções específicas de framework — A ferramenta finding_fix gera código de correção. Adicione suporte a frameworks em src/tools/analysis.rs na função framework_fix_example.

Dashboard — O frontend React fica em frontend/. Execute npm run dev para o servidor de desenvolvimento.

Enviando alterações

  1. Faça um fork do repositório
  2. Crie uma branch (git checkout -b add-new-check)
  3. Faça suas alterações
  4. Execute cargo check && cargo clippy -- -D warnings
  5. Abra um pull request com uma descrição clara do que você mudou e porquê

Estilo de código

  • Sem comentários desnecessários. Se o código diz o que faz, não adicione um comentário.
  • Cláusulas de guarda em vez de if/else aninhados.
  • Siga o estilo do código existente.
  • Cada achado deve ter evidência verificável — nada de "isso pode ser vulnerável."

Reportando problemas de segurança

Se você encontrar uma vulnerabilidade de segurança no próprio Firebreak, envie um e-mail para security@firebreak.dev em vez de abrir um issue público. Responderemos em até 48 horas.


Roadmap

Concluído

  • Servidor MCP com JSON-RPC 2.0 sobre HTTP
  • 20 ferramentas MCP (conhecimento, varredura, análise, relatório)
  • VCVD v1 — 47 padrões de vulnerabilidade
  • Mecanismo de varredura HTTP com 32 verificações de segurança
  • Persistência SQLite
  • Salvaguardas de segurança
  • Geração de relatórios (JSON, Markdown, HTML)
  • Analisador de políticas RLS (sqlparser-rs)
  • Suporte a Docker
  • Pipeline CI/CD
  • Rastreador web para descoberta de endpoints
  • Eliminação de falsos positivos (validação de conteúdo, comparação de baseline)
  • Identificação de tecnologia
  • Análise de segurança de cookies/sessões
  • Detecção de CSRF em formulários
  • Teste de redirecionamento aberto
  • Análise de qualidade de CSP
  • Detecção de limitação de taxa

Próximos

  • Dashboard web (React)
  • Varredura gray-box com sessões autenticadas
  • Navegador headless para aplicações renderizadas no frontend
  • Varreduras agendadas / recorrentes
  • Notificações via webhook (Slack, Discord)
  • Exportação de relatórios em PDF
  • Opção hospedada em nuvem (VPS gerenciado)
  • Sistema de plugins para verificações personalizadas
  • Contribuições da comunidade VCVD via PR

FAQ

Preciso ser especialista em segurança para usar isso? Não. Esse é o ponto. A IA cuida da expertise em segurança. Você só diz o que testar.

Quais clientes MCP funcionam com o Firebreak? Qualquer cliente que suporte MCP sobre HTTP: Claude Desktop, Claude Code, Cursor, Windsurf e outros.

É seguro executar contra produção? O Firebreak é não destrutivo (sondagem somente leitura), mas você deve sempre testar primeiro em staging. A limitação de taxa está ativada por padrão.

Posso adicionar minhas próprias verificações de vulnerabilidade? Sim. Adicione funções de verificação em src/engine/checks.rs e conecte-as aos métodos de varredura em src/engine/mod.rs.

Por que Rust? Binário único sem dependências de runtime. Rápido. Seguro em memória. Entregamos um arquivo e ele funciona.

Por que AGPL-3.0? Se você executar o Firebreak como um serviço para outros, deve compartilhar suas modificações. Se você usar internamente ou auto-hospedar para sua própria equipe, não precisa fazer nada de especial.


Licença

AGPL-3.0

Se você construir um serviço comercial em cima do Firebreak, a AGPL exige que você abra o código-fonte de suas modificações. Para uso interno e auto-hospedado, sem restrições além dos termos padrão da AGPL.


20 Ferramentas de Segurança · 100 Guias de Melhores Práticas · 47 Padrões de Vulnerabilidade · 32 Verificações de Varredura

FIREBREAK — Porque se você não testar, outra pessoa vai.