criticalCWE-540A02:2021

Secretos en .env Commiteado

Un archivo .env con credenciales reales commiteado a git, haciendo todos los secretos permanentemente accesibles para cualquiera con acceso al repo — incluso a través del historial de git.

Cómo Funciona

git rastrea cada versión de cada archivo. Cuando haces commit de un .env con secretos reales y después lo borras, los secretos permanecen en cada commit anterior. Cualquiera que clone el repo puede correr `git log -p` y recuperar los secretos. Para repos públicos, GitHub también indexa el contenido para búsqueda.

Código Vulnerable
# MAL: .env commiteado a git (nunca hagas esto)
DATABASE_URL=postgresql://user:contrasenareal@db.host/prod
STRIPE_SECRET_KEY=sk_live_abc123
ANTHROPIC_API_KEY=sk-ant-key-real-aqui
Código Seguro
# BIEN: .env.example solo con placeholders
DATABASE_URL=postgresql://user:password@localhost/mydb
STRIPE_SECRET_KEY=sk_live_tu_key_aqui
ANTHROPIC_API_KEY=sk-ant-tu-key-aqui
# Los valores reales van en .env (gitignoreado) o en tu plataforma de deployment

Ejemplo Real

El breach de Twitch en 2021 incluyó secretos de herramientas internas que habían sido commiteados a repos internos años antes. Incluso los repos 'privados' pueden exponerse por amenazas internas, empresas adquiridas o controles de acceso mal configurados.

Cómo Prevenirlo

  • Agrega .env y .env.local al .gitignore antes de tu primer commit
  • Solo haz commit de .env.example con valores placeholder, nunca credenciales reales
  • Si ya commiteaste secretos, rota todas las credenciales expuestas de inmediato
  • Usa git filter-repo o BFG Repo-Cleaner para purgar secretos del historial de git
  • Usa truffleHog o git-secrets como pre-commit hook para bloquear futuros commits con secretos

Tecnologías Afectadas

nodejsNext.jsReactPythonGoPHP

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas