Doogree
DevSec · shift-left

Capturar o segredo antes do commit: varredura de código que nunca sai da máquina

02/07/2026 · leitura de ~7 min
Varredura de códigoSegredoslocal-firstCIagente de IA

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.

Uma promessa que você pode explicar ao seu contador: "Suas chaves e seu código-fonte nunca saem do seu computador — fazemos a varredura localmente, no editor e no git, antes que um segredo ou vulnerabilidade sequer chegue a um commit."

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:

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).

Por que isso é crítico: um segredo enviado ao git permanece no histórico para sempre — mesmo que você o apague no commit seguinte. A única forma de mantê-lo limpo é capturá-lo antes que ele entre. É aí que reside todo o valor.

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