Análisis de secretos y credenciales codificadas
Evite incluir claves de API y contraseñas en los commits mediante git-secrets, gitleaks y hooks de pre-commit.
Análisis de secretos y credenciales codificadas es una lección gratuita de Cyber Security Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cyber Security Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cyber Security Academy incluye 4 lecciones en total.
El problema de los secretos codificados directamente
Los desarrolladores confirman accidentalmente claves de API, contraseñas, claves privadas y tokens en los repositorios de código fuente. Una vez que llegan al historial de git, permanecen allí incluso después de eliminarlos. Los bots rastrean los repositorios públicos en cuestión de segundos después de una publicación.
Qué se confirma
Secretos habituales encontrados en repositorios:
- Claves de acceso de AWS (
AKIA...) - Tokens de acceso personal de GitHub
- Contraseñas de bases de datos en archivos de configuración
- Claves de API de Stripe y de pagos
- Claves privadas de TLS/SSH
- URL de webhooks de Slack
Hooks previos al commit para prevenirlo
Evite que los secretos lleguen a git desde el principio:
# Install gitleaks as a pre-commit hook:
pip install pre-commit
# .pre-commit-config.yaml:
repos:
- repo: https://github.com/zricethezav/gitleaks
rev: v8.18.1
hooks:
- id: gitleaksAnálisis de repositorios existentes
Analice los repositorios existentes en busca de secretos:
# gitleaks: scan entire git history
gitleaks detect --source . --log-opts="--all"
# truffleHog: high-entropy string + regex detection
trufflehog git file://.
# GitHub secret scanning (automatic for public repos)
# Alerts under Security → Secret scanning alertsAnálisis de secretos de GitHub
GitHub analiza automáticamente los repositorios públicos en busca de patrones conocidos de secretos (claves de AWS, tokens de GitHub, etc.) y notifica al proveedor. En los repositorios privados, GitHub Advanced Security amplía esta capacidad. Proveedores como AWS revocan automáticamente las claves cuando las detectan.
La solución de .gitignore (y sus límites)
Añadir .env a .gitignore evita confirmaciones accidentales. Sin embargo, los desarrolladores siguen confirmando secretos en otros archivos, y .gitignore no sirve de ayuda si el archivo ya se había confirmado. Defensa en profundidad: gitignore + hooks previos al commit + análisis en CI.
Uso de variables de entorno
Los secretos nunca deben aparecer en el código. Utilice variables de entorno cargadas en tiempo de ejecución:
# Python:
import os
api_key = os.environ["API_KEY"]
# Node.js with dotenv (for local dev only):
require("dotenv").config()
const apiKey = process.env.API_KEY
# Never commit .env to gitGestores de secretos
Las aplicaciones de producción deben utilizar gestores de secretos específicos:
- AWS Secrets Manager: rotación automática y acceso controlado mediante IAM
- HashiCorp Vault: código abierto, empresarial y compatible con muchos backends
- Azure Key Vault / GCP Secret Manager
Los secretos nunca deben almacenarse en el código ni en variables de entorno en disco.
Rotación de secretos comprometidos
Si un secreto queda expuesto:
- Revoque el secreto inmediatamente (antes de investigar)
- Compruebe los registros de acceso para detectar usos no autorizados
- Genere un secreto nuevo
- Actualice todos los sistemas que utilizan el secreto antiguo
- Elimínelo del historial de git con
git-filter-repoo BFG Repo Cleaner
Eliminación de secretos del historial de Git
Después de revocarlo, elimínelo del historial:
# BFG Repo Cleaner (faster than filter-branch):
java -jar bfg.jar --delete-files .env repo.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push --force
# Note: force push rewrites history - coordinate with teamSecretos en las canalizaciones de CI/CD
Los sistemas de CI/CD tienen su propia gestión de secretos:
- GitHub Actions: secretos almacenados en la configuración del repositorio o de la organización → se accede a ellos como
${{ secrets.API_KEY }} - GitLab CI: variables de CI/CD
- Jenkins: complemento Credentials
Oculte los secretos en los registros. Nunca los muestre en la salida de depuración.
Comprobación rápida: análisis de secretos
¿Cuál es la primera línea de defensa más eficaz para evitar que los secretos entren en un repositorio?
Repaso de la lección
Los secretos codificados directamente en git representan un riesgo crítico: los bots rastrean los repositorios públicos en cuestión de segundos. Prevención: hooks previos al commit (gitleaks) y gitignore. Detección: truffleHog y el análisis de secretos de GitHub. Almacene los secretos en variables de entorno o en gestores de secretos específicos (Vault, AWS Secrets Manager). Rótelos inmediatamente cuando queden expuestos y elimínelos del historial de git con BFG Repo Cleaner.
Preguntas frecuentes
¿La lección «Análisis de secretos y credenciales codificadas» es gratis?
Sí — el texto completo de «Análisis de secretos y credenciales codificadas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cyber Security Academy, actualiza a CoddyKit PRO. El curso de Cyber Security Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Análisis de secretos y credenciales codificadas»?
Evite incluir claves de API y contraseñas en los commits mediante git-secrets, gitleaks y hooks de pre-commit. Practicas Cyber Security Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cyber Security Academy?
No se requiere experiencia previa. Cyber Security Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Análisis de secretos y credenciales codificadas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cyber Security Academy?
Sí. Cada lección de Cyber Security Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- SAST y DAST en pipelines de CI/CD
- Análisis de composición de software (SCA)
- Análisis de secretos y credenciales codificadas
- Security Champions y modelado de amenazas