En diciembre de 2022, una empresa de SaaS con 200 empleados recibió una factura de AWS de 47.000 dólares en un solo fin de semana. La causa: una clave de API había estado expuesta en un repositorio público de GitHub durante 11 horas.
No era una empresa descuidada. Tenían revisiones de código, tests de CI y un equipo de seguridad. Pero nadie estaba escaneando sus repositorios en busca de secretos. La clave había sido committeada durante una sesión nocturna de debugging, marcada como “temporal” y nunca rotada.
El problema de escala
Los secretos se filtran más de lo que la gente cree. No solo en repos públicos — también en:
- Repositorios privados a los que tienen acceso ex-empleados
- Ramas temporales que nunca se limpian
- Comentarios de código en archivos de configuración
- Variables de entorno hardcodeadas durante un hotfix a las 2 de la madrugada
Las investigaciones de GitGuardian encontraron que 1 de cada 10 commits en repositorios privados contiene algún tipo de secreto. En repositorios públicos, el ratio es todavía mayor. Y a diferencia de la mayoría de vulnerabilidades, los secretos tienen una ventana de explotación casi inmediata.
Por qué el coste es tan alto
El problema no es solo la exposición inmediata. El coste real viene de tres factores:
1. Tiempo de detección
El promedio de tiempo entre que un secreto se filtra y se detecta es de 23 días según IBM. En ese tiempo, el secreto puede haber sido scrapeado por bots automáticos (que monitorizan GitHub en tiempo real), vendido en marketplaces de credenciales, o ya usado para acceder a infraestructura. Para cuando el equipo se entera, el atacante lleva tres semanas con acceso no detectado.
2. Radio de explosión
Un secreto no es una sola cuenta. Una clave de AWS comprometida puede dar acceso a:
- Buckets S3 con datos de clientes
- Instancias EC2 para minería de criptomonedas
- Servicios de email para spam o phishing
- Roles IAM que pueden provisionar recursos adicionales
La credencial inicial rara vez es el final de la cadena. Los atacantes se mueven lateralmente usando el acceso concedido por el primer secreto que encuentran.
3. Coste de remediación
Rotar un secreto en producción no es trivial. Implica:
- Identificar todos los servicios y sistemas que lo usan
- Coordinar una rotación sincronizada para evitar tiempo de inactividad
- Auditoría forense del log de acceso para entender qué se accedió durante la ventana de exposición
- Posible notificación a clientes si se vio afectada información personal
El coste medio de una brecha relacionada con credenciales es de 4,5 millones de dólares (IBM Cost of a Data Breach Report). La mayor parte de ese coste no es el exploit inicial — es la remediación, la notificación y el daño reputacional.
El multiplicador de producción
No todos los secretos expuestos tienen el mismo peso financiero. Un secreto hardcodeado en una rama de feature que nunca llega a producción tiene un perfil de riesgo diferente al mismo secreto en main.
El Financial Impact Engine de Gerion refleja esta realidad: los secretos detectados en ramas de producción (main, master, release/*) tienen un multiplicador de coste de 10×. Una API key de un proveedor de pagos committeada en una rama de feature puede representar 400€ en coste estimado de remediación. La misma clave en producción representa 4.000€ — porque rotarla en un entorno en vivo requiere tiempo de inactividad coordinado, comunicación con clientes y revisión forense.
Este modelo de coste por rama cambia qué secretos corriges primero. No “el commit más reciente” ni “la puntuación CVSS más alta” — sino “el secreto con mayor coste real de exposición dado dónde vive en tu codebase”.
Cómo funciona Gitleaks en Gerion
Gerion usa Gitleaks como escáner de secretos. Gitleaks analiza el historial completo de git — no solo el estado actual del repositorio — para detectar secretos que fueron añadidos y luego “eliminados” con otro commit.
Eliminarlo no equivale a remediarlo. Un secreto borrado en el commit abc123 sigue presente en el historial de git y cualquiera con acceso al repositorio puede acceder a él. Gitleaks lo encuentra.
Lo que hace Gerion encima de Gitleaks:
- Contextualización: un secreto en
maintiene un multiplicador de riesgo 10× versus uno en una rama de feature - Deduplicación: el mismo secreto en múltiples commits cuenta como un solo hallazgo, sin inflación de ruido
- Impacto financiero: basado en el tipo de servicio (AWS, Stripe, GitHub, credenciales de base de datos), la plataforma estima el rango de coste potencial de remediación
- Escaneo del historial completo: cada análisis cubre el log completo de git, no solo el diff del push actual
La regla de los tres minutos
Si un secreto llega a un repositorio público, asume que está comprometido en menos de tres minutos. Los bots de scraping de GitHub son más rápidos que cualquier proceso de respuesta manual. Investigadores de seguridad, escáneres automáticos y actores maliciosos monitorizan los commits públicos casi en tiempo real.
La única solución correcta: que nunca llegue. Escaneado en pre-commit con un hook local de Gitleaks, en CI en cada push y como análisis periódico del historial completo del repositorio. Si un secreto se cuela en la primera línea, atraparlo antes de que llegue a main. Si llega a main, atraparlo antes de que llegue a exposición pública.
Gerion hace los tres — y cuando algo pasa, el Financial Impact Engine te dice exactamente cuánto te está costando en este momento.