Detecção de secrets
Encontre credenciais vazadas em disco, no histórico do git e em respostas web públicas. Um classificador de IA faz a triagem das correspondências antes da promoção. Secrets verificados ao vivo são sinalizados para rotação imediata.
A WASViking® cobre credenciais vazadas em dois lugares paralelos: onde elas se escondem em disco, dentro do ambiente do cliente, e onde elas aparecem por acidente na web pública.
A cobertura mapeia para OWASP A07:2021 (Identification and Authentication Failures) e CWE-798 (Use of Hard-coded Credentials).
Como uma detecção vira um Finding
Sentinel scans source tree
│
▼
Detector match (32 patterns)
│
▼
AI classifier (real_secret / placeholder / test_fixture)
│
├─▶ suppressed (test, doc, placeholder), kept in submission
│ for audit, not promoted to Findings
│
▼
Promoted to Findings workflow (category: token_exposure, CWE-798)
│
▼
Live verification (optional, 10 detectors)
│
▼
Findings flagged "VERIFIED LIVE" for triage priority
No ambiente do cliente: wasviking-sentinel secrets
32 detectores, 10 deles com verificação ao vivo. Os secrets em texto puro nunca saem do host. Só um hash SHA-256 e uma prévia mascarada chegam à WASViking.
Veja wasviking-sentinel secrets para a referência completa do agente.
Níveis de detectores
Os detectores são agrupados por nível (tier), o que define a severidade padrão e ajuda os operadores a priorizar:
| Nível | Os detectores incluem | Severidade padrão |
|---|---|---|
| Cloud | Chaves de acesso da AWS, chaves secretas da AWS, tokens de sessão da AWS, client secrets do Azure, JSON de service account do GCP, connection strings do Azure. | High |
| Payments | Stripe (live e test), SendGrid, Twilio. | High |
| VCS | GitHub PAT (classic e fine-grained), tokens de instalação de GitHub App, GitLab PAT, tokens de runner do GitLab. | High |
| Comms | Tokens de bot do Slack, tokens de usuário do Slack, webhooks do Slack, chaves de integração do PagerDuty. | Medium-High |
| Database | URIs de conexão de Postgres / MySQL / MongoDB / Redis com credenciais embutidas. | High |
| Keys | Chaves privadas RSA, EC e OpenSSH. | High |
| Generic | Strings de alta entropia que parecem credenciais, mas não correspondem ao padrão de um provedor específico. | Medium |
Detecção a partir da nuvem
A classe paralela de vazamento são os secrets expostos em respostas HTML,
JSON e JavaScript na web pública. A WASViking aplica o mesmo catálogo de
padrões para analisar as respostas durante uma execução de DAST. As
correspondências alimentam o mesmo pipeline de Findings token_exposure.
O classificador de IA
A correspondência de padrões, sozinha, produz ruído. A WASViking encaminha cada correspondência a um classificador de IA antes da promoção. O classificador lê a correspondência no contexto do arquivo ou da resposta em que ela está e retorna um destes vereditos:
| Veredito | O que acontece |
|---|---|
real_secret |
Promovido a Finding. A confiança é registrada. |
placeholder |
Suprimido. Contabilizado em "test / docs / placeholder". |
test_fixture |
Suprimido. |
uncertain |
Promovido, mas sinalizado para revisão do operador. |
O veredito do classificador é exibido ao lado da correspondência no portal:
AI classification:
real_secret(confidence 80%). Detectoraws_access_keymatched a provider-shaped credential. (Classificação da IA: secret real, com 80% de confiança. O detector encontrou uma credencial com o formato de um provedor.)
As supressões são mantidas no registro da submissão para que um operador possa auditar o que o classificador filtrou, mas elas não aparecem como Findings.
Garantia de privacidade
- Agente. O secret em texto puro fica em memória só pelo tempo necessário para a verificação (se solicitada) e depois é descartado. O payload da submissão traz o hash, a prévia mascarada e o resultado do verificador. Nada além disso.
- Nuvem. A substring correspondente é o único material secreto que a plataforma vê. Uma prévia mascarada é exibida no portal; a correspondência em texto puro só fica visível para operadores com o escopo adequado, mediante revelação explícita.
Controles de falso positivo
Na ordem em que atuam:
- Supressão por caminho para
*.test.*,__tests__/,/docs/e caminhos canônicos de teste semelhantes. - Supressão por padrão para placeholders canônicos
(
EXAMPLE,PLACEHOLDER,XXXX). - Classificador de IA como camada final. Ele vê a correspondência em
contexto e decide entre
real_secret/placeholder/test_fixture/uncertain. - Pontuação de qualidade por detector. Detectores de baixa qualidade são controlados por configuração e contribuem com uma severidade padrão menor.
A confidence do classificador fica exposta no portal para que o
operador possa conferir por amostragem os casos limítrofes.
No portal: Hard-coded Secrets
O inventário fica em Application Security → Hard-coded Secrets na barra lateral do portal.
Visão de lista
As estatísticas do cabeçalho resumem o estado de toda a organização:
| Indicador | Significado |
|---|---|
| Submissions | Quantas submissões de scan de secrets existem no inventário. |
| With verified-live matches | Submissões que contêm pelo menos uma credencial verificada ao vivo. |
| Open secret findings | Findings da categoria token_exposure atualmente abertos. |
Filtros:
| Filtro | O que ele faz |
|---|---|
| Target | Busca por substring no nome do alvo. |
| Verified live only | Controle de alternância. Limita a lista às submissões com pelo menos uma correspondência verificada ao vivo. |
Colunas da tabela:
| Coluna | O que ela mostra |
|---|---|
| Submitted | Timestamp da submissão. |
| Target | O ativo contra o qual o scan rodou, conforme o agente o reportou. |
| Source | A origem da submissão (sentinel_run, cloud_dast, manual_intake). |
| Files | Número de arquivos analisados nesta submissão. |
| Matches | Detecções brutas, incluindo as suprimidas. |
| Verified live | Número de credenciais verificadas ao vivo junto ao provedor. |
| Findings | Número de Findings promovidos a partir desta submissão. |
| Severity | Selos de distribuição de severidade (HIGH · 4, MEDIUM · 2). |
Detalhe da submissão
Clique em qualquer linha para abrir o detalhe da submissão. Ele traz a identidade do agente, o host que a produziu, a versão do runtime e um detalhamento.
Cartões do topo:
| Cartão | Significado |
|---|---|
| Files scanned | Total de arquivos percorridos, mais o tamanho acumulado em bytes. |
| Matches | Ocorrências brutas dos detectores (antes da supressão pela IA). |
| Verified live | Ocorrências confirmadas como ativas junto ao provedor. |
| Findings promoted | Ocorrências que viraram Findings no fluxo de trabalho. |
| Suppressed | Ocorrências que o classificador de IA julgou como placeholder ou test_fixture. |
A tabela Detector breakdown mostra, por detector:
| Coluna | Significado |
|---|---|
| Detector | Identificador do detector (aws_access_key, sendgrid_api_key, generic_high_entropy etc.). |
| Provider | Fornecedor (AWS, SendGrid, Azure, Generic). |
| Tier | A tag de categoria (CLOUD, PAYMENTS, GENERIC). |
| Matches | Contagem de correspondências deste detector nesta submissão. |
| Verified live | Subconjunto verificado ao vivo. |
| Severity | Distribuição de severidade. |
Top Findings lista as correspondências de maior risco com o contexto completo:
- Severidade, estado de verificação (VERIFIED LIVE / UNVERIFIED), selos de nível.
- Caminho do arquivo com o número da linha.
- Prévia mascarada (
AKIA••••••••••••OTAU) e a pontuação de entropia. - Um trecho de código com o secret mascarado em destaque.
- Veredito e confiança do classificador de IA.
- Mapeamento de CWE, status, contagem de ocorrências, link direto para o Finding canônico.
Manual Leak Intake
Para equipes de segurança que já assinam feeds de vazamentos, a página Manual Leak Intake permite que os operadores façam a ingestão de credenciais sabidamente vazadas e que a plataforma as compare com todo o inventário.
Escopo: sca:ioc (compartilhado com o IOC manual de SBOM). Mesmo ciclo de
vida das correspondências enviadas pelo agente: classificador de IA →
verificação opcional → fluxo de trabalho de Findings.
Onde ele fica no portal
- Application Security → Hard-coded Secrets: inventário de submissões + detalhe da submissão.
- Inventory → Manual Leak Intake: indicadores fornecidos pelo operador.
- Findings: filtre pela categoria
token_exposureoucredential_exposure. - Settings → API Keys: escopo
secrets:submitpara os agentes.
O que ele NÃO faz
- Nenhum secret em texto puro sai do ambiente do cliente. Apenas hash + prévia mascarada.
- Nenhuma rotação automática. As correspondências verificadas ao vivo são sinalizadas para que a equipe possa rotacioná-las; a WASViking não chama as APIs de rotação dos provedores.
- Nenhum crawling da web pública além da superfície de DAST configurada. A detecção a partir da nuvem roda sobre as respostas de scan que a sua configuração de scan já produz.
Configuração
A detecção a partir da nuvem roda em todo scan, sem configuração extra.
A detecção no ambiente do cliente começa quando você executa
wasviking-sentinel secrets contra um
repositório, de forma avulsa ou como um
gate de CI/CD. Os resultados ficam em
Application Security → Hard-coded Secrets.
