O painel do projeto
Segurança
Segurança procura o que pode expor dados, dinheiro ou a conta de alguém: chaves e senhas no código, pacotes com falhas conhecidas, um banco aberto para qualquer visitante, uma rota que deixa um usuário ver os dados de outro.
Duas camadas
| Camada | Quando | O que olha |
|---|---|---|
| Checagem sem IA | Sozinha: completa no início da sessão e nos arquivos editados no fim de cada resposta. Uma vez por semana também procura chaves no histórico do git, e todo dia o Faundr confere se surgiu falha nova nos pacotes que o projeto usa. | Chaves e senhas, pacotes, regras do banco, padrões perigosos no código, configuração, limites e cabeçalhos. |
| Revisão com IA | Quando você pede: /faundr:security | O agente lê a lógica: quem pode chamar cada rota, se a pessoa é dona do dado que pede, o que entra sem validação, limites de pedidos, pagamento, regras do banco. |
As duas camadas rodam no seu computador. Para o painel vão só os resultados, com o trecho do código mascarado. Veja O que sai do seu computador.
O que a checagem sem IA procura
- Chaves e senhas escritas no código, o
.envenviado ao git e segredos em variáveis que vão para o navegador. - Pacotes com falhas conhecidas. O Faundr lê as listas de pacotes do projeto (de npm, pnpm, yarn e bun a Python, Rust, Go, PHP, Flutter, Ruby, .NET, Java, Kotlin e C/C++ com Conan) e consulta a base pública OSV.dev, para onde vão só os nomes e as versões dos pacotes.
- Banco de dados: nas migrações do Supabase, tabela sem RLS (a regra que diz quem pode ler cada linha), política que libera tudo e arquivo público.
- Código e configuração: rotas sem limite de pedidos, cabeçalhos de segurança, regras do Firebase,
.envlocal apontando para o banco da nuvem. - Histórico do git: chaves que já foram apagadas do código, mas continuam no histórico.
Um filtro de ruído rebaixa ou esconde achados que não são risco real (uma chave de exemplo num teste, um pacote usado só no desenvolvimento) e sempre diz o porquê.
Em que linguagens
A checagem sem IA funciona sem instalar nada:
- Código: JavaScript e TypeScript (com React Native, Vue, Angular, Svelte e Astro), Python, Flutter e Dart, PHP, Go, Java, Kotlin, C#, Rust, C, C++, Dockerfile e HTML.
- Chaves e senhas: qualquer arquivo de texto do projeto, em qualquer linguagem.
- Pacotes: todas as linguagens acima, menos as imagens do Docker (não existe base pública de falhas para elas). Em C e C++, só com Conan.
A tabela completa está em Linguagens suportadas.
O que a revisão com IA faz
O agente percorre as portas de entrada do app (rotas, funções do servidor, regras do banco, CI) e, para cada uma, pergunta: quem pode chamar? É dono do dado? O que entra? Tem limite? O que sai? E depois: apagar, tirar alguém do time, convite e export seguem a mesma regra? Cada chave, papel e função tem só o poder que precisa (menor privilégio)? Ações importantes ficam registradas? Também confere MFA (e se dá para pulá-lo) e dado muito sensível guardado sem criptografia. Se o projeto usa Supabase, ele também roda o Security Advisor do próprio Supabase. Da segunda revisão em diante, ele começa pelo que mudou desde a última.
Na revisão completa, mais dois agentes leem o projeto ao mesmo tempo: um confere a lista do óbvio (chave no código, rota de debug aberta, .env no git) e o outro procura o que as categorias comuns não pegam (código estranho, recurso pela metade, checagem removida no histórico). No fim, um terceiro aponta o que ficou de fora, e essas lacunas também são revisadas.
Cada suspeita termina confirmada, descartada (com o controle que a impede) ou a conferir. Antes de entrar no painel, cada problema confirmado passa por um verificador independente: outro agente, que não viu o raciocínio, relê o código e tenta derrubá-lo (na revisão rápida, só os altos e críticos). Só entra o que sobrevive, com o que pode acontecer e como corrigir. Ele não corrige nada sem você pedir.
O método do verificador, do "a conferir" e das passadas extras veio da security-audit-skill da Cloudflare.
O card de estado
Quantos problemas graves estão abertos, quando foi a última checagem e quanto ela cobriu (arquivos, pacotes, tabelas), os contadores (Críticos e altos, Abertos, Corrigidos) e a linha da última revisão com IA. Os botões:
- Exportar relatório: baixa um relatório em Markdown, para mostrar a um sócio, colar numa IA ou abrir uma tarefa;
- Checar agora: copia
/faundr:security-scan.
Abas
Problemas
Os achados S-n. Filtre pela origem (Chaves e senhas, Pacotes, Banco de dados, e também Histórico do git, Código, Configuração e Revisão com IA quando houver), pela situação (Abertos, Corrigidos, Ignorados) e com Mostrar suprimidos para ver o que o filtro de ruído escondeu.
A gravidade aparece pela intensidade da etiqueta: Crítica, Alta, Média, Baixa.
O detalhe explica O que é, O que pode acontecer e Como resolver, com o arquivo, a linha e o trecho mascarado. Num pacote, mostra a versão que corrige e de onde ele vem. Quando há, traz o código público da falha (CVE) e o link do aviso. Os botões:
- Corrigir com a IA (
/faundr:security-fix S-n); - Ignorar, com o motivo (Não é problema ou Aceito o risco por enquanto) e o prazo (7, 30 ou 90 dias). Quando o prazo vence, o problema volta.
A conferir
Suspeitas da revisão com IA em que o caminho está no código, mas o que decide não está nele: uma configuração no painel do Supabase, uma variável de produção, uma regra do provedor. Elas não entram na contagem de problemas até alguém conferir. Cada uma diz o que falta saber e como conferir (onde clicar, o que olhar), e mostra a gravidade se confirmado.
O botão Conferir com a IA copia /faundr:security S-n: o agente confere o que faltava (pelo MCP do Supabase, ou perguntando a você o que aparece na tela) e transforma em problema de verdade ou ignora como "não é problema", dizendo o controle que viu.
Pacotes
Os pacotes com falhas, agrupados pela ação que resolve: "Atualizar para a versão X resolve N problemas". Quando o pacote veio junto com outro (você não o instalou direto), o detalhe explica de onde ele vem e como resolver.
Corrigir
/faundr:security-fix corrige um problema, ou todos os graves, se você não disser qual:
- Chave no código: vai para o
.env. E o agente explica como trocar a chave no provedor, porque a antiga continua no histórico do git. - Pacote com falha: é atualizado na ordem mais segura. Saltos grandes de versão só com o seu OK.
- Banco aberto: ganha uma migração nova com RLS e regras de dono.
- Código: recebe a correção mínima.
O problema só fecha quando a checagem não o encontra mais. Marcar como resolvido à mão não vale para achados automáticos.
Outras ferramentas
Se o time já usa outra ferramenta de segurança, dá para trazer os resultados para o mesmo painel com !faundr security-import <arquivo>. Funciona com Snyk, qualquer ferramenta que gere SARIF (Semgrep, CodeQL, Gitleaks, Trivy…) e o Security Advisor do Supabase. Cada ferramenta só fecha os próprios achados.
Achados de outras skills
Se você já usa uma skill de segurança que não é do Faundr (de auditoria, pentest, segredos…), dá para conectá-la ao painel com /faundr:skills. Toda vez que ela roda, no fim da resposta o agente registra o que ela achou:
- cada problema vira um S-n aqui, com a etiqueta via /nome, e conta no Lançamento e no Impacto como os outros;
- quando ela roda de novo e o problema sumiu, ele fecha sozinho;
- cada skill só fecha os próprios achados, e só nos arquivos que olhou.
Veja como conectar em Workflows.
O teste do banco
O teste do banco como visitante fica em Lançamento e LGPD. Cada porta aberta que ele encontra vira um S-n aqui.
Comandos
A Segurança tem duas camadas: a checagem automática, sem IA, no seu computador (chaves e senhas, pacotes com falha, regras do banco, padrões perigosos no código, limites e cabeçalhos) e a revisão com IA, feita pela sua IA, que lê a lógica (quem pode acessar o quê). As duas rodam no seu computador, e para o painel vão só os achados, com as chaves mascaradas. Use estes comandos no seu agente de IA, na pasta ligada ao projeto.
A checagem roda sozinha quando o agente abre e depois de cada resposta em que ele mexeu em arquivos; uma vez por semana ela também procura chaves no histórico do git, e o Faundr confere todo dia se surgiu falha nova nos pacotes que o projeto usa. Se a IA tentar gravar uma chave perigosa (Stripe, service_role do Supabase, AWS…) no código, o Faundr barra antes.
/faundr:security [--files <arquivos>]Revisão de segurança com IA: a IA lê rotas, login, acesso a dados, regras do banco, entrada do usuário e limites de pedidos, e registra cada problema real (S-n) com o que pode acontecer e como corrigir. Sem argumento, revisa o projeto todo.
/faundr:security-fix [S-<n> | pacote | --all]Corrige um problema (ou todos os graves, sem argumento; com --all, todos os abertos sem parar) e só dá como resolvido quando a checagem não encontra mais. Para chave vazada, também explica como trocar a chave no provedor.
ex.: /faundr:security-fix S-3
!faundr security-reportGera o relatório de segurança em Markdown (resumo, o que foi revisado, problemas abertos, ignorados e corrigidos). Também dá para baixar pelo botão "Exportar relatório" aqui no painel.
!faundr security-import <arquivo>Importa resultados de outra ferramenta: Snyk (snyk test --json), SARIF de qualquer ferramenta (Semgrep, CodeQL, Gitleaks, Snyk Code…) ou o Security Advisor do Supabase. Cada ferramenta só fecha os próprios problemas.
ex.: !faundr security-import snyk.json
!faundr security-supabaseRoda o Security Advisor do próprio Supabase no banco de verdade (pega o que foi configurado direto no painel). Precisa do seu token pessoal do Supabase na variável SUPABASE_ACCESS_TOKEN; ele fica só no seu computador.
/faundr:security-scanRoda a checagem completa agora e mostra os problemas encontrados.
!faundr security-scan [--files a,b] [--history]A mesma checagem completa, direto no terminal. --history também procura chaves no histórico do git, o que demora mais.
ex.: !faundr security-scan --history
!faundr security-show [S-<n> | <pacote>]Sem nada, lista os problemas abertos por gravidade e, à parte, os "A conferir". Com S-n, mostra os detalhes e como resolver. Com o nome de um pacote, mostra todos os problemas dele.
ex.: !faundr security-show S-3
!faundr security-resolve S-<n> [--verified "<como>"]Refaz a checagem e só fecha o problema se ele sumiu de verdade. Achado da revisão com IA pede --verified dizendo como foi conferido.
ex.: !faundr security-resolve S-3
!faundr security-ignore S-<n> --reason nao-e-problema|aceito-o-risco [--note "<por quê>"] [--days N | --days sempre]Tira da lista com um motivo. O padrão é por 30 dias: depois disso, o achado volta.
ex.: !faundr security-ignore S-3 --reason aceito-o-risco --note "ferramenta só interna"