El problema no era el código. Era lo que Git guardaba.
Hay un error que aparece con demasiada frecuencia cuando hacemos auditorías. Un desarrollador detecta que tiene una API Key expuesta dentro del código, la elimina y hace commit. La aplicación parece limpia. El problema queda resuelto, o eso cree.
Pero Git no olvida. Si esa credencial estuvo en algún momento dentro del repositorio, sigue ahí, enterrada en commits anteriores y perfectamente accesible para quien sepa dónde mirar.
Una de las herramientas que empleamos para detectar esta situación es TruffleHog. Aplicada sobre un repositorio autorizado, por ejemplo así:
tss@kali:~$ trufflehog git file:///home/tss/proyecto
Permite localizar elementos como:
API Keys, tokens, credenciales cloud, claves privadas, secretos de aplicaciones y credenciales que alguien dio por eliminadas pero que siguen presentes en el historial.
Y aquí está la parte que más importa: borrar el secreto del fichero no resuelve el problema por sí solo. Si esa información llegó a estar publicada en el repositorio, aunque fuese durante unos pocos minutos, nuestra recomendación es tratarla directamente como comprometida.
El protocolo en estos casos pasa por: revocar → regenerar → revisar el uso → investigar accesos → limpiar el historial si corresponde.
El error más habitual es pensar «ya lo he quitado del código». Pero un atacante no está mirando el estado actual del repositorio. Está mirando su historial.
La herramienta está disponible en la página oficial de descarga de TruffleHog.
Las herramientas hacen la parte de la búsqueda. El trabajo del auditor viene después: determinar si esos secretos siguen siendo válidos, qué permisos tienen asociados y qué impacto real tendría que alguien los utilizase.
TSS Ciberseguridad — Pentesting | Auditoría | DFIR | SOC | AI Security — info@tssciberseguridad.com
TruffleHog y la exposición de secretos en el historial de Git: lo que el código limpio no garantiza
Resumen técnico
El problema central es la persistencia de credenciales en el historial de Git tras su eliminación del código fuente. La herramienta TruffleHog permite analizar repositorios completos mediante el comando trufflehog git file:///ruta/proyecto, detectando API Keys, tokens de autenticación, credenciales cloud, claves privadas y secretos de aplicación embebidos en commits anteriores. Un secreto eliminado del fichero activo sigue siendo recuperable desde cualquier commit previo. El protocolo recomendado ante una exposición confirmada es secuencial: revocar → regenerar → revisar permisos → investigar accesos → limpiar historial. La ventana de exposición, aunque sea de minutos, obliga a tratar la credencial como comprometida.
Análisis de implicaciones
La eliminación de un secreto mediante un nuevo commit no borra el objeto en el grafo de Git: el blob original permanece referenciado en el historial. Esto implica que cualquier actor con acceso de lectura al repositorio, incluso en modalidad bare clone, puede recuperar la credencial con comandos estándar como git log -p o git show. El impacto se amplifica en repositorios migrados a plataformas públicas o compartidos entre equipos sin auditoría previa. La limpieza efectiva requiere herramientas como git filter-repo o BFG Repo Cleaner, seguidas de un force push coordinado y la invalidación inmediata de la credencial afectada.
Aplicación práctica
Durante una auditoría de seguridad sobre repositorios autorizados, la ejecución de TruffleHog sobre el historial completo permite identificar secretos con contexto: commit exacto, autor, timestamp y entropía de la cadena detectada. El auditor debe validar si la credencial sigue activa consultando las APIs del proveedor correspondiente, por ejemplo AWS IAM, GitHub Tokens o GCP Service Accounts. En entornos DevSecOps, la integración de TruffleHog en pipelines de CI/CD como pre-receive hook previene que el secreto llegue a registrarse. El análisis post-exposición incluye revisar los logs de uso de la credencial para determinar si fue explotada.
Contexto del sector
La exposición accidental de credenciales en repositorios es uno de los vectores de compromiso más frecuentes según los informes de threat intelligence actuales. Alternativas como GitLeaks, detect-secrets o Semgrep cubren casos similares, pero TruffleHog destaca por su análisis de entropía y sus detectores específicos por proveedor. La tendencia del sector se orienta hacia Secrets Management centralizado con herramientas como HashiCorp Vault o AWS Secrets Manager, eliminando la necesidad de almacenar secretos en el código fuente.

