Encuentra credenciales y secretos con más de 170 reglas que abarcan código fuente, URL web y CI/CD, los verifica contra las API de los proveedores y genera informes en SARIF, JSONL, HTML, PDF o Excel.
Escáner de secretos DAST + SAST con verificación en vivo, análisis de source maps e informes nativos de CI, además de un motor de vulnerabilidades y configuraciones incorrectas SAST.
Encuentra credenciales filtradas en árboles de código fuente, aplicaciones web en ejecución y registros de CI. Verifícalas en vivo contra las API de los proveedores. Escanea los mismos árboles de código fuente en busca de vulnerabilidades de código y configuraciones incorrectas. Genera SARIF para paneles de code-scanning, JSONL para pipelines SOAR, o Excel/PDF/HTML para informes de clientes.
El saturado panorama (gitleaks, trufflehog, detect-secrets) es excelente para SAST en árboles de git, pero se detiene ahí, y solo escanean en busca de secretos. scan4secrets cubre los huecos que ellos no cubren, añadiendo DAST web en vivo, verificación en vivo con proveedores y un motor de vulnerabilidades de código / configuraciones incorrectas sobre la detección de secretos:
| Capacidad | gitleaks | trufflehog | detect-secrets | scan4secrets |
|---|---|---|---|---|
| Detección de secretos SAST | Y | Y | Y | Y |
| Rastreo web DAST en vivo | - | - | - | Y |
| Análisis de source maps de JS | - | - | - | Y |
| Extracción de endpoints de JS | - | - | - | Y |
| Escaneo de secretos en cabeceras HTTP | - | - | - | Y |
| Verificación de tokens en vivo | - | Y | - | Y |
| Salida SARIF | Y | - | - | Y |
| Informes Excel / PDF / HTML | - | - | - | Y |
| Puerta de entropía + allowlist | Y | Y | Y | Y |
| Esquema de reglas YAML | - (TOML) | - | - | Y |
| DAST autenticado (cookie/header/proxy) | n/a | n/a | n/a | Y |
| Detección de vulnerabilidades / configuraciones incorrectas SAST | - | - | - | Y |
Es un complemento de gitleaks, no un reemplazo. Usa ambos: gitleaks en pre-commit + CI para SAST del historial de git, scan4secrets para DAST en vivo contra staging/producción.
# 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
Tras la instalación, el comando scan4secrets está en tu 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)Más allá de los secretos, scan4secrets incluye un motor SAST para vulnerabilidades de código y configuraciones incorrectas. Añade --misconfig para escanear tanto secretos como vulnerabilidades, o --misconfig-only para escanear solo vulnerabilidades:
scan4secrets --path ./src --misconfig # secrets + vulnerabilities
scan4secrets --path ./src --misconfig-only # vulnerabilities only
scan4secrets --path . --misconfig --report html --output report
Detecta, con control de taint/contexto para mantener bajos los falsos positivos, inyección SQL, inyección NoSQL, inyección de comandos del SO, inyección de código (eval), SSTI, XXE, deserialización insegura, LFI / path traversal, inyección LDAP y XPath, SSRF, open redirect, configuración incorrecta de CORS, CSRF deshabilitado, prototype pollution, XSS (reflejado/almacenado/DOM en 11 motores de plantillas: EJS, Handlebars, Pug, Jinja, Thymeleaf, Razor, Blade, ERB, Vue, Angular, React), criptografía débil (DES/RC4/ECB/IV estático/RSA débil), aleatoriedad insegura, fallos de JWT (alg:none, confusión de algoritmos, secreto de firma hardcodeado, verificación deshabilitada), bypasses de TLS, comparaciones de secretos no seguras frente a timing, SAML sin firma requerida, credenciales hardcodeadas, registro de datos sensibles y configuraciones incorrectas de IaC/config (Terraform, Kubernetes, Dockerfile, GitHub Actions, ASP.NET web.config, WCF/SOAP).
Lenguajes cubiertos: python, node, javascript, typescript, react, php, ruby, go, java, kotlin, csharp/.NET, sql, además de XML/WSDL, JSP, Terraform/HCL, Kubernetes YAML y Dockerfile.
Cada hallazgo de vulnerabilidad incluye un registro enriquecido: Nombre de la vulnerabilidad, Severidad, Descripción, Evidencia (archivo:línea), Código vulnerable, Código seguro, Remediación, Impacto técnico, Impacto de negocio y mapeo CWE + OWASP Top-10.
Más allá del motor línea por línea, una pasada sobre el archivo completo captura secretos que los escáneres de línea pasan por alto: etiquetas XML anidadas (<SMS_API_KEY><value>…</value></SMS_API_KEY>), pares <key>/<value> divididos, objetos clave/valor JSON, YAML/properties multilínea y secretos codificados en Base64. También cierra un punto ciego de la puerta de entropía: las asignaciones con nombres de credenciales (p. ej. AM_CLIENT_SECRET=…) se marcan por la señal del nombre sin umbral de entropía, de modo que los secretos reales de baja entropía ya no se descartan silenciosamente.
416 reglas en total — 193 reglas de secretos + 223 reglas de vulnerabilidades / configuraciones incorrectas.
Las reglas de secretos cubren: