Introducción
El domingo 18 de mayo de 2026, un contratista de la Cybersecurity and Infrastructure Security Agency (CISA) de EE.UU. cometió uno de los errores más graves en la historia reciente de la ciberseguridad gubernamental: mantuvo un repositorio público en GitHub con credenciales válidas para múltiples cuentas de AWS GovCloud con privilegios elevados, además de documentación interna sobre procesos de build, test y deploy de software en CISA. Según análisis posteriores, el repositorio incluía:
- Claves de acceso a cuentas IAM con permisos de administración en AWS GovCloud (entorno aislado para cargas de trabajo gubernamentales de alto impacto).
- Secretos en archivos de configuración (ej:
config.yml,secrets.env,kubeconfigpara clusters AKS). - Scripts de CI/CD y plantillas de Terraform con credenciales hardcodeadas.
- Documentación técnica sobre flujos de despliegue en Kubernetes, incluyendo nombres de clústeres internos (ej:
k8s-cisa-prod-01).
El incidente no solo expuso infraestructura crítica, sino que también reveló cómo la falta de controles básicos en el ciclo de vida de credenciales puede invalidar años de inversiones en seguridad. Para equipos de DevOps, SRE y seguridad, este caso es una llamada de atención sobre la gestión de secretos en entornos híbridos (cloud + on-premise) y los riesgos de confiar en repositorios públicos como almacenamiento de configuración.
Qué ocurrió
Cronología del incidente
- Hasta el 18/05/2026 (domingo): Un contratista de CISA (no identificado públicamente) mantuvo un repositorio privado en GitHub, pero lo configuró como público por error. Según fuentes de Schneier on Security, el repositorio tenía al menos 3 años de antigüedad y acumulaba commits sin autenticación adicional.
- Detección: Un investigador independiente (identificado como Rontea en los comentarios de Schneier) notó que el repositorio aparecía en búsquedas de Google con términos como
"CISA AWS GovCloud". Al acceder, encontró archivos con credenciales en texto plano. - Respuesta: GitHub recibió una solicitud de takedown el mismo día (18/05) y revocó el acceso público. CISA confirmó la exposición en un comunicado interno fechado el 19/05/2026, donde admitió que las credenciales correspondían a:
AdministratorAccess.– 12 clústeres de AKS internos (versión 1.27.x) con nodos en entornos de staging y producción.
– 5 repositorios de GitHub Enterprise (usados para código interno) con tokens de acceso personal (PAT) con alcance repo:write.
Vectores de ataque explotables
Los atacantes potenciales podrían haber explotado el leak en menos de 15 minutos si hubiesen monitoreado repositorios públicos con herramientas como:
- GitHub Search API (para buscar patrones como
AWS_ACCESS_KEY_IDotoken:en archivos.env,.yml,.tf). - TruffleHog o GitLeaks para escanear históricos de commits en busca de secretos.
- Escaneo automatizado de puertos en las IPs asociadas a los clústeres AKS (expuestas en los
kubeconfigfiltrados).
Un análisis de Qualys (publicado en su blog técnico) demostró que, en escenarios similares:
- El 87% de los incidentes de credenciales expuestas en GitHub son detectados por terceros antes que por los propios equipos.
- El tiempo medio de exposición antes de ser revocado es de 4.3 días (en este caso, fue de ~12 horas gracias a la alerta temprana).
Impacto para DevOps / Infraestructura / Cloud / Seguridad
Para equipos de DevOps y SRE
| Área afectada | Impacto concreto | Prioridad de mitigación |
|---|---|---|
| **GitOps y CI/CD** | Los scripts de Terraform y Helm charts expuestos permitían desplegar código en clústeres AKS sin revisión manual. | **Crítica** |
| **Secrets Management** | Uso de credenciales static en archivos de configuración (violación de políticas como *AWS IAM Best Practices*). | **Crítica** |
| **Documentación técnica** | Archivos como BLOCK22 incluían IPs internas de clústeres y nombres de namespaces (ej: BLOCK23 ). | **Alta** |
| **Kubernetes** |
