Escanear secretos en texto — Detector

Escanea texto pegado en busca de patrones de secretos (claves AWS, PAT de GitHub, PEM, etc.). Subconjunto documentado, no es un escáner de repositorio tipo gitleaks.

…
Escaneo de secretos (pegado)
Encuentra patrones similares a secretos en texto pegado. La lista de detectores es fija y está documentada, y no equivale a gitleaks.

Notas para desarrolladores

Detectores v1: pem_private_key, aws_access_key_id, github_pat, slack_token, generic_assignment, jwt_compact (opt-in), high_entropy_string (opt-in). Enmascarado: 4 primeros + 4 últimos caracteres (máscara completa si length < 12) en match y excerpt; Copiar usa solo columnas enmascaradas. validate-env (DevOps) avisa sobre todo por nombres de claves .env con pinta de secreto — complementario. Límite 512 KB.

Opciones

Umbral de severidad
all = todos los hits; high = solo detectores de severidad high.
Pistas de entropía
Activa heurísticas de entropía ruidosas. Desactivado por defecto.
Incluir JWT
Detecta tokens JWT compactos (severidad low). Prefiere jwt-decode para leer un JWT.

Cuándo elegir esta herramienta

Comprobación rápida de un pegado antes de publicarlo en un ticket. Detectar un PAT de GitHub o una clave de acceso AWS evidentes. Reducir ruido con umbral de severidad solo high.

Ejemplos prácticos

Fragmento .env de staging

Antes

# Staging deploy — fake secrets for demo only APP_NAME=payments-api NODE_ENV=staging LOG_LEVEL=info # AWS (fake AKIA from AWS documentation) AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE AWS_REGION=eu-central-1 # GitHub Actions deploy GITHUB_TOKEN=ghp_TESTONLYabcdefghijklmnopqrstuv # Slack alert bot SLACK_BOT_TOKEN=xoxb-0000000000-0000000000000-abcdefghijklmnopqrstuvwx # Database DATABASE_HOST=db.internal.example DATABASE_PORT=5432 password=notarealsecret123 # Auth callback (JWT — toggle Include JWT) AUTH_JWT=eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiJkZW1vIn0.sig # High-entropy blob (Entropy — toggle Entropy) Aa1!xY9zxY9zxY9zxY9zxY9zxY9zxY9zxY9z # Health — no secrets HEALTHCHECK_PATH=/health

Después (hits)

4 hits por defecto: aws_access_key_id (L7) · github_pat (L11) · slack_token (L14) · generic_assignment (L19, medium). Activa Incluir JWT (+ jwt_compact L22) y Entropía (+ high_entropy_string L25) para 6 hits en total.

severityFloor=high

Antes

password=notarealsecret123 AKIAIOSFODNN7EXAMPLE

Después (hits)

Solo aws_access_key_id (high); generic_assignment omitido

Herramientas relacionadas

Para avisos sobre nombres de claves .env, usa validate-env. Para un JWT compacto, usa jwt-decode. Vuelve al hub herramientas de seguridad.

FAQ de escanear secretos

Subconjunto documentado

¿Cuándo debo usar validate-env?

validate-env comprueba la estructura .env y marca nombres de claves sospechosos. scan-secrets busca patrones de valores similares a secretos en cualquier texto pegado. Un resultado vacío de validate-env no es la misma señal que «soft-empty» aquí.

¿Cuándo debo usar jwt-decode?

Para leer el header/payload de un JWT, usa jwt-decode. La opción includeJwt de este escáner está desactivada por defecto para evitar falsos positivos.

¿Es un escáner de secretos de repositorio completo?

No. Es un subconjunto documentado de patrones para texto pegado, no un recorrido de repositorio ni un pack de reglas empresarial.

¿Qué detectores están incluidos?

pem_private_key, aws_access_key_id, github_pat, slack_token, generic_assignment; jwt_compact y high_entropy_string son opt-in.

JWKS, certificados X.509 y escaneo de secretos — en local en el navegador.