Capturar o segredo antes do commit: varredura de código que nunca sai da máquina
O vazamento mais comum numa pequena empresa não é um ataque sofisticado — é uma senha ou chave de API esquecida no código, enviada ao git e, dali, para o mundo inteiro. Queríamos capturá-la no momento em que é escrita, e não duas semanas depois da violação. Mas havia uma condição inegociável.
A condição: o código nunca sai da máquina
Muitas ferramentas de varredura enviam seu código-fonte para a nuvem delas a fim de analisá-lo. Para uma empresa israelense — com seu código, seus segredos e, às vezes, dados de clientes — esse é exatamente o problema que nos propusemos a resolver, não a criar. Portanto, a primeira regra foi: a varredura roda 100% na máquina do desenvolvedor. O código e os valores dos segredos nunca chegam à nossa nuvem; apenas um achado higienizado (ID da regra, severidade, arquivo:linha, uma impressão digital mascarada do segredo — nunca o segredo em si) é enviado ao painel organizacional.
A decisão central: um motor, não dez plugins
Poderíamos ter construído um plugin separado para cada editor — um para o VSCode, um para o Cursor, um para o JetBrains, e mais. Isso é uma armadilha: dez bases de código para manter, lógica que se fragmenta e bugs diferentes por toda parte. Em vez disso, construímos um único motor — um executável estático (Rust) — que contém toda a lógica, e cada "superfície" é um invólucro fino em torno dele:
- CLI → hooks do git (pre-commit / pre-push) e CI
- LSP → sublinhados vermelhos no editor enquanto você digita (VSCode/Cursor/JetBrains)
- MCP + hook → agentes de IA (como o Claude Code) — bloqueia um segredo antes que ele seja escrito no disco
A lógica é escrita uma vez. A mesmíssima regra que protege seu commit também protege sua CI e o que quer que um agente de IA tente escrever.
O que ele captura
O núcleo combina a detecção de segredos ao estilo gitleaks (um catálogo de expressões regulares) com uma métrica de entropia de Shannon — para distinguir uma string aleatória que se parece com uma chave real de um placeholder inocente como "your-api-key-here". Chaves da AWS, tokens do GitHub, chaves privadas, senhas dentro de connection strings e mais — todos sinalizados com uma correção em linguagem simples e uma referência CWE. A seguir: varredura profunda de vulnerabilidades (Semgrep) e varredura de dependências (CVE).
O ângulo de que ninguém fala: agentes de IA que escrevem código
Cada vez mais código hoje é escrito por agentes de IA. Eles são excelentes — mas também podem "alucinar" um padrão inseguro ou embutir um segredo por engano. Nosso motor atua como um hook no agente: quando o agente tenta escrever um segredo ou uma vulnerabilidade crítica, o hook recusa — antes que o conteúdo sequer toque o disco. Transformamos um novo risco (a IA escrevendo código) num portão de defesa.
Como testamos
Rodamos a ferramenta em nossa própria base de código. Duas coisas importavam: que ela capture segredos reais (testamos com amostras sintéticas — AWS, Stripe, connection strings — e todas foram capturadas) e que ela não faça barulho em código válido (os placeholders foram corretamente rejeitados). O resultado em nosso próprio código: 100/100 — zero segredos embutidos, porque todos vivem no lugar certo (um gerenciador de segredos), exatamente como recomendamos aos nossos clientes.
Como continuamos aprimorando — controle de qualidade contínuo
A ferramenta roda sobre si mesma a cada alteração de código que fazemos (um portão de CI), incluindo a varredura de dependências (SCA) que sinaliza quando uma biblioteca da qual dependemos se torna vulnerável. Próximos passos: a superfície do editor (LSP) e a superfície do agente (MCP) para cada cliente, um motor de diff que alerta apenas sobre o que é novo (não o ruído antigo) e uma percepção de IA opcional que explica cada achado. A mesma filosofia: uma ferramenta, local, transparente — o conhecimento é exposto, o código fica com você.
Este artigo descreve a abordagem em nível de princípio. Ele não contém assinaturas de detecção sensíveis, chaves ou detalhes que ajudariam um atacante — pelo contrário, a transparência do modelo é um ponto de força.
← Todos os artigos