Ir al contenido

Por qué los secretos filtrados cuestan más de lo que crees

Por Equipo Gerion 6 min de lectura

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× (el valor por defecto, configurable por organización). Con la configuración por defecto, un secreto de severidad CRITICAL se estima en media hora de trabajo a 80 € la hora: 0,5 h × 80 € = 40 € de coste de desarrollo. Si esa API key de un proveedor de pagos está committeada en una rama de feature, cuenta como 40 € de deuda y 40 € × 10 = 400 € de riesgo de pipeline. La misma clave en main cuenta como 400 € de deuda — porque el modelo asume que resolverlo en producción cuesta diez veces más: rotarla en un entorno en vivo exige coordinar servicios y, a veces, tiempo de inactividad.

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 estimado dado dónde vive en tu codebase”.

Cómo funciona Gitleaks en Gerion

Gerion usa Gitleaks como escáner de secretos. La CLI de Gerion ejecuta Gitleaks en tu CI sobre los ficheros actuales del repositorio; no analiza el historial de git.

Es una distinción que conviene tener presente, porque 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 recuperarlo. Si un secreto llegó a confirmarse alguna vez, hay que darlo por comprometido y rotarlo, aunque ya no aparezca en la rama. Para revisar el historial puedes ejecutar gitleaks git en local o en un job aparte.

Lo que hace Gerion encima de Gitleaks:

  1. Contextualización: un secreto en main cuenta como deuda por su coste de producción (10×); en una rama de feature, ese coste queda como riesgo de pipeline
  2. Deduplicación: el mismo hallazgo en escaneos sucesivos cuenta una sola vez, y deja de contar cuando desaparece (se cierra solo, por automitigación)
  3. Impacto financiero: según la severidad del hallazgo, la plataforma estima un coste de producción de 200 € (MEDIUM o LOW) a 400 € (CRITICAL) con los valores por defecto
  4. Valor redactado: el valor del secreto llega a la plataforma redactado, y tu código no sale de tu CI

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. Escanea en pre-commit con un hook local de Gitleaks, en CI en cada push y, de forma periódica, sobre el historial completo del repositorio (con gitleaks git). Si un secreto se cuela en la primera línea, atrápalo antes de que llegue a main. Si llega a main, atrápalo antes de que llegue a exposición pública.

Gerion cubre la segunda línea: la CLI ejecuta Gitleaks en tu CI en cada push, y cuando algo se cuela, el Financial Impact Engine te da una estimación de su coste en euros. La primera y la tercera dependen de tu equipo.