Scanner de segredos vazados
Um scanner de segredos vazados verifica se ficheiros e credenciais que nunca deveriam ser públicos podem ser obtidos por qualquer pessoa a partir do seu site: um ficheiro .env com senhas de bases de dados, uma pasta .git que entrega todo o seu histórico de código, um arquivo de cópia deixado na raiz web, ou uma chave de API real dentro de um pacote JavaScript. Insira um URL e este scanner sonda os caminhos de exposição conhecidos, verifica o conteúdo do que responder e analisa a página e os seus scripts em busca de padrões de segredos conhecidos — mostrando apenas valores mascarados, nunca o segredo em si. O guia complementar, ficheiros .env expostos e chaves vazadas, explica como estas exposições acontecem e porque apagar o ficheiro nunca chega por si só. Combine-o com a verificação de cabeçalhos de segurança para o endurecimento de respostas e a auditoria de scripts de terceiros para os scripts que carrega de outros.
Última atualização:
Quer vigiar isto continuamente? Vigie grátis com o myeventwatch — alertas de expiração e de indisponibilidade, sem cartão.
O que conta como exposto — e o que não conta
O scanner sonda uma lista publicada de caminhos conhecidos —/.env e as suas variantes habituais, /.git/HEAD e /.git/config, ficheiros de configuração, arquivos de cópia e ficheiros de chaves— com simples pedidos GET públicos, exatamente os que um atacante, um motor de busca ou um visitante curioso poderia fazer. Um caminho só conta como exposto quando o conteúdo da resposta corresponde ao que esse ficheiro deveria ser: um ficheiro env tem de poder ser analisado como linhas chave–valor, um HEAD do Git tem de parecer uma referência do Git. Muitos servidores respondem 200 a cada caminho —fallbacks de aplicações de página única, páginas de erro personalizadas, reescritas apanha-tudo— e um 200 com o HTML da sua página inicial não é um vazamento. Esses caminhos são listados à parte no resultado como responderam mas sem confirmação, para que julgue você mesmo; esta ferramenta nunca chama vazamento a um 200 sem confirmação, e nenhum scanner que use deveria fazê-lo.
Além das sondagens de ficheiros, o scanner obtém a própria página e até cerca de quinze dos seus pacotes JavaScript e procura neles formas de segredos conhecidos: identificadores de chaves de acesso à nuvem, cabeçalhos de chave privada, atribuições genéricas de chaves de API e tokens, cadeias de ligação a bases de dados e padrões semelhantes de sinal forte. O código do lado do cliente é público por definição — tudo o que é enviado para um navegador pode ser lido por cada visitante —, por isso uma credencial real encontrada num pacote está exposta mesmo que nenhum ficheiro estivesse mal configurado. Os achados são relatados por tipo, por ficheiro de origem e por número de ocorrências, com o valor mascarado até um máximo dos seus quatro primeiros caracteres: suficiente para reconhecer que chave é, nunca suficiente para quem leia o relatório a usar. O segredo completo nunca é obtido, guardado ou mostrado neste relatório.
Limites, ditos com clareza
Isto é uma sondagem pública e só de leitura de caminhos conhecidos, e os seus limites fazem parte do resultado. Só pede os caminhos da lista publicada — um segredo num ficheiro com um nome invulgar não será encontrado. Analisa a página de chegada e cerca de quinze pacotes de scripts, não cada recurso de um site grande, e não inicia sessão, não rastreia após autenticação, não força nomes de ficheiros nem testa nada que já não seja alcançável por um GET sem autenticação. As análises estão limitadas a 5 por hora e visitante e os resultados ficam em cache 10 minutos, por isso uma nova análise dentro dessa janela pode mostrar o veredito em cache. Uma análise também tem um orçamento de tempo: quando um alvo lento o esgota, o resultado é marcado como parcial e diz isso mesmo — trate um resultado limpo parcial como «não verificado por completo», não como «limpo».
Se a análise encontrar alguma coisa, a ordem do trabalho importa mais do que a rapidez a apagar. Rode primeiro a credencial — revogue a chave exposta e emita uma nova — porque já pode haver cópias em caches, arquivos e mãos alheias; apagar o ficheiro para os novos downloads mas não faz nada por uma chave que já saiu. Depois retire ou bloqueie o ficheiro no servidor, limpe as caches de CDN e proxies que possam guardar uma cópia e reveja os seus registos de acesso à procura de pedidos anteriores ao mesmo caminho. O artigo complementar, ficheiros .env expostos e chaves vazadas, percorre o manual da primeira hora que os atacantes usam e a sequência completa de recuperação, por ordem.
As verificações vizinhas completam o quadro: a auditoria de scripts de terceiros cobre os scripts externos que as suas páginas carregam — um risco de cadeia de fornecimento distinto do dos seus próprios ficheiros vazados — e a verificação de cabeçalhos de segurança classifica as proteções de navegador que as suas respostas transportam. Uma nota sobre o método: um resultado limpo significa que nenhum dos caminhos sondados respondeu com conteúdo correspondente e que nenhum padrão de segredo conhecido apareceu nos ficheiros analisados, no momento da análise e a partir da posição de rede do verificador. É evidência sobre esses caminhos e ficheiros, não uma garantia sobre todo o servidor — mantenha os ficheiros fora da raiz web desde o início e volte a analisar após cada alteração de implementação que toque no que o seu servidor publica.
A lista de sondagem, publicada
| /.env e variantes | Ficheiros de ambiente (.env, .env.local, .env.production e semelhantes) com senhas de bases de dados, credenciais de correio e chaves de API. Confirma-se apenas quando o corpo se analisa como linhas chave–valor. |
| /.git/HEAD e /.git/config | Uma pasta .git servida revela o repositório: o HEAD prova a estrutura, o config costuma nomear o remoto. Com ambos, o histórico completo do código costuma poder ser reconstruído. |
| Ficheiros de configuração | Caminhos de configuração conhecidos (por exemplo cópias de wp-config, de config.php e ficheiros de configuração de frameworks) que transportam credenciais em texto simples. |
| Ficheiros de cópia e arquivo | Despejos de bases de dados, arquivos .zip / .tar.gz do site e cópias de editor deixadas na raiz web — muitas vezes uma cópia completa do site, credenciais incluídas. |
| Ficheiros de chaves e certificados | Ficheiros com forma de chave privada (.pem, .key, nomes tipo id_rsa) que nunca deveriam ser acessíveis por web; uma chave privada servida é, por si só, um achado crítico. |
| Pacotes JavaScript | A página mais até cerca de 15 pacotes de scripts, procurados por identificadores de chaves na nuvem, cabeçalhos de chave privada, atribuições de tokens e cadeias de ligação. Os valores são mascarados até um máximo de quatro caracteres iniciais. |
| Regra de confirmação | Uma sondagem só conta como exposta quando o conteúdo da resposta corresponde à forma esperada do ficheiro. Um 200 nu é listado como respondido-sem-confirmação e nunca é relatado como vazamento. |
| Orçamento e cache | Apenas sondagens GET públicas, só de leitura, 5 análises por hora e visitante, resultados em cache 10 minutos. Uma análise que esgota o seu orçamento de tempo é marcada parcial. |
Perguntas frequentes
A análise diz que um caminho «respondeu mas sem confirmação». É um vazamento?
Com esta evidência, não. Significa que o caminho respondeu com HTTP 200 mas o conteúdo não correspondeu à forma do ficheiro sondado — a causa habitual é uma rota apanha-tudo ou uma página de fallback que responde a cada URL com a sua página inicial ou aplicação. Abra você mesmo o caminho numa janela privada e veja o que volta de facto: se vir o conteúdo real do ficheiro, trate-o como exposto; se vir o seu site normal, é o fallback.
O scanner encontrou uma das minhas chaves. O que faço primeiro?
Rode-a — revogue a credencial exposta e emita uma substituta — antes de qualquer outra coisa. As cópias de um ficheiro público escapam depressa para caches, arquivos e bases de dados de scanners, por isso apagar o ficheiro não «desvaza» uma chave. Depois retire ou bloqueie o ficheiro, limpe as caches de CDN e proxies, reveja os registos de acesso do caminho e verifique onde mais a mesma credencial foi usada.
O scanner guarda ou mostra os segredos completos que encontra?
Não. O verificador relata o tipo de segredo, o ficheiro onde foi encontrado e uma contagem de ocorrências, com o valor mascarado até um máximo dos seus quatro primeiros caracteres — suficiente para identificar que credencial é, nunca suficiente para a usar. O relatório não contém nada que valha a pena roubar, de propósito: um relatório de vazamento não deveria tornar-se um segundo vazamento.
Pode analisar o meu site de teste ou uma página após início de sessão?
Não. O scanner só faz pedidos GET públicos sem autenticação, por isso tudo o que está atrás de um início de sessão, de uma VPN ou de uma lista de IPs permitidos fica fora de alcance — de propósito, porque a pergunta a que responde é o que um estranho na internet pode obter. Os alvos bloqueados, incluindo os endereços de infraestrutura deste próprio site, são recusados de imediato.
Porque é que o meu resultado está em cache ou é parcial?
Os resultados ficam em cache 10 minutos para tornar as verificações repetidas baratas e para ser um convidado educado no servidor alvo; o resultado indica quando está em cache. Um resultado parcial significa que a análise atingiu o seu orçamento de tempo — normalmente um alvo lento ou muitos pacotes grandes — antes de terminar cada sondagem; o aviso diz isso, e um resultado limpo parcial deve ser repetido em vez de confiado como totalmente limpo.