
Escáner de secretos rápido y configurable para sistemas de archivos, historial de git, contenedores y fuentes en la nube, con filtrado basado en Expr, validación de credenciales y análisis.
+ ○
▾
Betterleaks es un escáner de secretos configurable, rápido y exhaustivo. Está mantenido por las mismas personas que crearon Gitleaks, incluido el autor original. Consulta esta serie de publicaciones de blog para aprender cómo funciona el motor de detección: 1. Regex is all you need, 2. Rare Not Random, 3. Express YourCELf, 4. Better generic secrets detection.
El desarrollo cuenta con el apoyo de
| Característica | Descripción |
|---|---|
| Priorización sencilla | Clasifica por confianza, estado de validación y puntuaciones de severidad analizadas para que el triaje sea tan simple como 123. |
| Validación de secretos | Valida si un secreto detectado está activo realizando solicitudes HTTP asíncronas directamente desde la definición de la regla usando Expr. |
| Análisis de secretos | Enriquece las credenciales válidas con información de identidad, cuenta, capacidades y severidad neutral respecto al proveedor. |
| Revocación de secretos | Opcionalmente revoca secretos. |
| Filtrado basado en Expr | Escribe filtros de reglas contextuales que evalúan atributos de fragmentos (bloques de datos) (como el autor de git, el mensaje de commit y la ruta del archivo) y los datos del hallazgo para reducir los falsos positivos. |
| Filtrado BPE | Filtra los falsos positivos de lenguaje natural usando la tokenización BPE para medir cuán "rara" o no humana es una cadena. |
| Escaneos rápidos | Logra un rendimiento rápido mediante ajustes de paralelización predeterminados sensatos, filtros de palabras clave ahocorasick y re2. |
| Nuevas fuentes | Compatibilidad con fuentes como GitHub, GitLab, Hugging Face, S3 y más. ¡También es fácil añadir nuevas fuentes! |
| Imágenes de contenedor | Escanea todas las plataformas, capas históricas, configuración y atestaciones incrustadas, con procedencia del digest y notificación de rutas eliminadas/sobrescritas. Consulta la guía de contenedores. |
| Portabilidad | Se ejecuta en cualquier OS/Arch moderno. El pequeño binario puede integrarse en cualquier sistema. |
La rama main es para el desarrollo de la v2. El mantenimiento y la documentación de la v1 se encuentran en la rama v1.x.
¿Actualizando desde la v1? Consulta la guía de migración a la v2 para los cambios en la CLI, la configuración, los informes y el SDK.
Hasta la primera versión estable de la v2, los gestores de paquetes y la etiqueta latest de Docker
pueden seguir proporcionando la v1. Usa las instrucciones para la versión candidata
de la guía de migración para probar la v2 antes de ese momento.
# Package managers
brew install betterleaks
brew install --cask betterleaks/tap/betterleaks
# Fedora Linux
sudo dnf install betterleaks
# Containers (stable v2)
docker pull ghcr.io/betterleaks/betterleaks:v2
# Go
go install github.com/betterleaks/betterleaks/v2@latest
# Source
git clone https://github.com/betterleaks/betterleaks
cd betterleaks
make build
Las versiones estables v2 actualizan la cask betterleaks del tap y las etiquetas de Docker :v2 y :latest. Homebrew core se actualiza por separado. Para mantener v1 instalado junto a v2, use brew install --cask betterleaks/tap/betterleaks@1 (comando: betterleaks-v1) o la etiqueta de Docker :v1.
Los escaneos detectan secretos sin solicitudes al proveedor de credenciales de forma predeterminada. Use -v / --validate para verificar credenciales, o -a / --analyze para además resolver la identidad y los permisos. El análisis implica validación. Establezca BETTERLEAKS_VALIDATE=true o BETTERLEAKS_ANALYZE=true para habilitar estas etapas a través del entorno. Los flags explícitos anulan la variable correspondiente.
# Scan the filesystem
betterleaks /path/to/target
# Equivalent explicit command
betterleaks filesystem /path/to/target
# Short command alias
betterleaks fs /path/to/target
# Flags may also precede the command
betterleaks --no-banner fs /path/to/target
# Validate detected credentials
betterleaks fs /path/to/target -v
# Validate and analyze identity and permissions
betterleaks fs /path/to/target -a
# Scan a git repo
betterleaks git /path/to/repo
# Also scan merge commit patches (against the first parent)
betterleaks git /path/to/repo --include=merges
# Scan a remote PR's commits relative to its base branch
betterleaks git https://github.com/owner/repo \
--clone-ref=refs/pull/123/head --revision=main..refs/pull/123/head
# Automatically detect a remote repository and scan its history
betterleaks https://github.com/betterleaks/betterleaks
# The default command can also be named explicitly
betterleaks auto https://github.com/betterleaks/betterleaks
# Explicitly download and scan a web response (without crawling)
betterleaks url https://example.com/config.txt
# Scan GitHub org
betterleaks github https://github.com/betterleaks
# Scan GitHub user
betterleaks github https://github.com/cooluser123456789 --include issues,prs,actions,releases,gists
# Scan a PR's title, description, and comments
betterleaks github https://github.com/betterleaks/betterleaks/pull/113
# Scan GitLab group or project
betterleaks gitlab https://gitlab.com/mygroup
betterleaks gitlab https://gitlab.com/mygroup/myproject --include issues,mrs,releases,ci-jobs
# Scan a specific GitLab merge request
betterleaks gitlab https://gitlab.com/mygroup/myproject/-/merge_requests/42
# Scan Hugging Face models, datasets, Spaces, and buckets
betterleaks huggingface https://huggingface.co/myorg
betterleaks hf https://huggingface.co/datasets/myorg/mydataset
betterleaks hf --include=discussions,prs https://huggingface.co/myorg/model
betterleaks hf hf://buckets/myorg/mybucket/path
# Scan a public s3 dataset (Common Crawl).
betterleaks s3 https://commoncrawl.s3.us-east-1.amazonaws.com/crawl-data/CC-MAIN-2018-17/segments/1524125937193.1/warc/
# Enumerate and scan every bucket in a Cloudflare R2 account
betterleaks s3 'https://<account-id>.r2.cloudflarestorage.com/*'
# Scan stdin
cat some_file.txt | betterleaks stdin
# Revalidate a known credential without running detection
printf '%s\n' "$GITHUB_TOKEN" | betterleaks validate --rule github-pat
# Find rule IDs that support credential analysis
betterleaks config show ids --analysis
# Validate it and resolve identity and permissions
printf '%s\n' "$GITHUB_TOKEN" | betterleaks analyze --rule github-pat
# Print only its status (for example, VALID)
printf '%s\n' "$GITHUB_TOKEN" | betterleaks validate --rule github-pat --simple
Los escaneos de URL de Git obtienen el historial completo de ramas y etiquetas, además de las notas, en un repositorio bare temporal. Use --clone-ref para añadir refs o patrones de revisión específicos, o --clone-all-refs para obtener todas las refs anunciadas. Consulte la guía de escaneo de Git para la selección de recursos, los filtros de commits y los escaneos de cambios en staging.