Encontre credenciais e segredos com mais de 170 regras abrangendo código-fonte, URL da Web e CI/CD, verifica-os em relação às APIs dos fornecedores e gera relatórios em SARIF, JSONL, HTML, PDF ou Excel.
Scanner de segredos DAST + SAST com verificação em tempo real, análise de source maps e relatórios nativos de CI, além de um motor de vulnerabilidades e configurações incorretas SAST.
Encontre credenciais vazadas em árvores de código-fonte, aplicações web em execução e logs de CI. Verifique-as em tempo real contra APIs de fornecedores. Faça a varredura das mesmas árvores de código-fonte em busca de vulnerabilidades de código e configurações incorretas. Gere SARIF para dashboards de code-scanning, JSONL para pipelines SOAR, ou Excel/PDF/HTML para relatórios de clientes.
O cenário concorrido (gitleaks, trufflehog, detect-secrets) é ótimo em SAST em árvores git, mas para por aí — e eles procuram apenas segredos. scan4secrets preenche as lacunas que eles não cobrem, adicionando DAST web em tempo real, verificação em tempo real junto ao fornecedor e um motor de vulnerabilidades de código / configurações incorretas sobre a detecção de segredos:
| Capacidade | gitleaks | trufflehog | detect-secrets | scan4secrets |
|---|---|---|---|---|
| Detecção de segredos SAST | Y | Y | Y | Y |
| Crawl web DAST em tempo real | - | - | - | Y |
| Análise de source-map JS | - | - | - | Y |
| Extração de endpoints JS | - | - | - | Y |
| Varredura de segredos em cabeçalhos HTTP | - | - | - | Y |
| Verificação de token em tempo real | - | Y | - | Y |
| Saída SARIF | Y | - | - | Y |
| Relatórios Excel / PDF / HTML | - | - | - | Y |
| Portão de entropia + allowlist | Y | Y | Y | Y |
| Esquema de regras YAML | - (TOML) | - | - | Y |
| DAST autenticado (cookie/header/proxy) | n/a | n/a | n/a | Y |
| Detecção de vulnerabilidades / configurações incorretas SAST | - | - | - | Y |
É um complemento ao gitleaks, não um substituto. Use ambos: gitleaks no pre-commit + CI para SAST de histórico git, scan4secrets para DAST em tempo real contra staging/produção.
# from source
git clone https://github.com/m14r41/scan4secrets
cd scan4secrets
pip install -e .
# OR via pipx
pipx install git+https://github.com/m14r41/scan4secrets
# OR Docker
docker run --rm -v $(pwd):/scan ghcr.io/m14r41/scan4secrets:latest --path /scan
Após a instalação, o comando scan4secrets estará no seu PATH.
# SAST: scan a local directory
scan4secrets --path /code
# DAST: crawl a live target
scan4secrets --url https://staging.example.com --threads 32
# DAST runs ALL bundled wordlists by default (1279 paths: /.env, /wp-config.php, /backup.zip, ...)
scan4secrets --url https://target.com
# Use YOUR OWN wordlist file (replaces the bundled set)
scan4secrets --url https://target.com --wordlist /path/to/my-paths.txt
# Combine multiple custom wordlist files
scan4secrets --url https://target.com --wordlist seclists/Common.txt internal-paths.txt
# Restrict to specific bundled wordlists by stem
scan4secrets --url https://wp.example.com --wordlist-only wordpress common env
# Turn wordlist seeding off entirely (only follow live links)
scan4secrets --url https://target.com --no-wordlist
# Full audit with verification + HTML report
scan4secrets --path . --url https://app.example.com \
--verify --report html sarif json \
--output reports/audit-$(date +%F)
# Authenticated DAST with proxy (works with Burp / ZAP)
scan4secrets --url https://app.example.com \
--cookie "session=abc123" \
--header "X-Tenant: acme" \
--proxy http://127.0.0.1:8080
# CI gate (exit 1 if anything >= high)
scan4secrets --path . --report sarif --fail-on high \
--output reports/scan
# SAST: secrets + code vulnerabilities / misconfigurations
scan4secrets --path ./src --misconfig
# SAST: vulnerabilities / misconfigurations only (skip secret detection)
scan4secrets --path ./src --misconfig-only
--misconfig)Além de segredos, o scan4secrets inclui um motor SAST para vulnerabilidades de código e configurações incorretas. Adicione --misconfig para procurar tanto segredos quanto vulnerabilidades, ou --misconfig-only para procurar apenas vulnerabilidades:
scan4secrets --path ./src --misconfig # secrets + vulnerabilities
scan4secrets --path ./src --misconfig-only # vulnerabilities only
scan4secrets --path . --misconfig --report html --output report
Ele detecta — com controle de taint/contexto para manter os falsos positivos baixos — injeção de SQL, injeção de NoSQL, injeção de comando de SO, injeção de código (eval), SSTI, XXE, desserialização insegura, LFI / path traversal, injeção de LDAP e XPath, SSRF, open redirect, configuração incorreta de CORS, CSRF desabilitado, prototype pollution, XSS (refletido/armazenado/DOM em 11 motores de template: EJS, Handlebars, Pug, Jinja, Thymeleaf, Razor, Blade, ERB, Vue, Angular, React), criptografia fraca (DES/RC4/ECB/IV estático/RSA fraco), aleatoriedade insegura, falhas de JWT (alg:none, confusão de algoritmo, segredo de assinatura embutido no código, verificação desabilitada), bypass de TLS, comparações de segredos não seguras contra timing, SAML sem exigência de assinatura, credenciais embutidas no código, registro de dados sensíveis e configurações incorretas de IaC/config (Terraform, Kubernetes, Dockerfile, GitHub Actions, ASP.NET web.config, WCF/SOAP).
Linguagens cobertas: python, node, javascript, typescript, react, php, ruby, go, java, kotlin, csharp/.NET, sql, além de XML/WSDL, JSP, Terraform/HCL, Kubernetes YAML e Dockerfile.
Cada achado de vulnerabilidade carrega um registro rico: Nome da Vulnerabilidade, Severidade, Descrição, Evidência (arquivo:linha), Código Vulnerável, Código Seguro, Remediação, Impacto Técnico, Impacto de Negócio e mapeamento CWE + OWASP Top-10.
Além do motor linha a linha, uma passagem pelo arquivo inteiro captura segredos que scanners de linha deixam passar: tags XML aninhadas (<SMS_API_KEY><value>…</value></SMS_API_KEY>), pares <key>/<value> divididos, objetos JSON chave/valor, YAML/properties multilinha e segredos codificados em Base64. Também fecha um ponto cego do portão de entropia — atribuições com nomes de credenciais (por exemplo, AM_CLIENT_SECRET=…) são sinalizadas com base no sinal do nome, sem piso de entropia, de modo que segredos reais de baixa entropia não são mais descartados silenciosamente.
416 regras no total — 193 regras de segredos + 223 regras de vulnerabilidades / configurações incorretas.
As regras de segredos cobrem: