Estado de Terraform Expuesto
Tu archivo terraform.tfstate está commiteado en tu repositorio o almacenado en un lugar sin cifrar y públicamente accesible — contiene cada secreto e ID de recurso en tu infraestructura.
Cómo Funciona
Los archivos de estado de Terraform son un snapshot completo de tu infraestructura, incluyendo todos los IDs de recursos, todos los outputs y — críticamente — todos los valores sensibles como contraseñas de base de datos, API keys y certificados TLS en texto plano. Commitear terraform.tfstate a git es esencialmente commitear cada secreto en tu infraestructura. Incluso un bucket S3 privado sin cifrado es un riesgo si el bucket alguna vez se mal configura.
# MAL: almacenando el estado localmente (que se commitea a git)
# terraform.tf — sin backend configurado, el estado queda en terraform.tfstate
terraform {
required_providers {
aws = { source = "hashicorp/aws" }
}
# Sin bloque backend — el estado es local y probablemente commiteado
}# BIEN: estado remoto en S3 cifrado con bloqueo de estado
terraform {
backend "s3" {
bucket = "mi-estado-terraform-privado"
key = "prod/terraform.tfstate"
region = "us-east-1"
encrypt = true # cifrado AES-256 en reposo
dynamodb_table = "terraform-state-lock" # previene ejecuciones concurrentes
}
}Ejemplo Real
En 2023, investigadores que escaneaban repositorios públicos de GitHub encontraron más de 1,000 archivos terraform.tfstate que contenían claves de acceso AWS activas, contraseñas de RDS y claves secretas de Stripe. Muchos eran de startups que simplemente habían ejecutado terraform init en la raíz de su proyecto sin configurar un backend remoto.
Cómo Prevenirlo
- Siempre configura un backend remoto (S3 + DynamoDB para AWS, GCS para GCP) con cifrado habilitado
- Agrega terraform.tfstate, terraform.tfstate.backup y .terraform/ a tu .gitignore inmediatamente
- Audita tu historial de git en busca de archivos de estado commiteados: git log --all --full-history -- '**/*.tfstate'
- Si el estado alguna vez fue commiteado, rota todos los secretos encontrados en él — están permanentemente en el historial de git
- Usa Terraform Cloud o Atlantis para gestión colaborativa de estado con controles de acceso
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Credenciales de Proveedor Terraform Hardcodeadas
criticalLas credenciales de AWS, GCP o Azure están hardcodeadas en tus archivos .tf en lugar de usar variables de entorno o roles de instancia, commiteando claves de acceso cloud al control de versiones.
Contenedor Kubernetes Privilegiado
highTu pod de Kubernetes corre con securityContext.privileged: true, dándole al contenedor acceso completo al kernel del host y efectivamente evitando el aislamiento del contenedor.
Cuenta de Servicio Predeterminada en Kubernetes
mediumLos pods que corren con la cuenta de servicio predeterminada heredan permisos RBAC a nivel de cluster que generalmente son mucho mas amplios de lo que el workload necesita, permitiendo movimiento lateral si el pod es comprometido.
Secretos en values.yaml de Helm Charts
highContrasenas, API keys y otros secretos estan hardcodeados directamente en archivos values.yaml de Helm, que se commitean al control de versiones y quedan expuestos a cualquiera con acceso al repositorio.