highCWE-798OWASP A07:2021

Secretos en values.yaml de Helm Charts

Contrasenas, 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.

Cómo Funciona

Los Helm charts usan un archivo values.yaml para parametrizar manifiestos de Kubernetes. Los desarrolladores frecuentemente ponen contrasenas de bases de datos, API keys y certificados TLS directamente en values.yaml porque es la forma mas facil de pasar configuracion. El problema es que values.yaml es un archivo de texto plano que se commitea a Git. Cualquiera con acceso de lectura al repositorio puede ver todos los secretos. Incluso si se eliminan despues, los secretos permanecen en el historial de Git para siempre. Ademas, Helm almacena metadata de releases incluyendo templates renderizados en Kubernetes Secrets (codificados en base64, no cifrados), asi que los secretos en texto plano tambien son visibles para cualquiera con acceso al cluster.

Código Vulnerable
# BAD: secrets hardcoded in values.yaml
# values.yaml
database:
  host: prod-db.example.com
  username: admin
  password: "SuperS3cret!Pass"
api:
  stripeKey: "sk_live_abc123def456"
  jwtSecret: "my-jwt-signing-key-do-not-share"
Código Seguro
# GOOD: reference external secrets, never store in values.yaml
# values.yaml
database:
  host: prod-db.example.com
  existingSecret: db-credentials  # references a K8s Secret
  existingSecretPasswordKey: password
---
# Create the secret separately (via sealed-secrets or external-secrets)
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: db-credentials
spec:
  secretStoreRef:
    name: vault-backend
  target:
    name: db-credentials
  data:
    - secretKey: password
      remoteRef:
        key: prod/database/password

Ejemplo Real

En 2021, investigadores de Aqua Security escanearon repositorios publicos de Helm charts y encontraron miles de charts con secretos hardcodeados en values.yaml, incluyendo access keys de AWS, contrasenas de bases de datos y claves privadas TLS. Muchos de estos charts eran forks de charts oficiales de Bitnami donde los desarrolladores habian llenado credenciales reales de produccion antes de pushearlos a repos publicos.

Cómo Prevenirlo

  • Nunca pongas contrasenas, API keys o certificados directamente en archivos values.yaml -- usa referencias existingSecret en su lugar
  • Usa una herramienta de gestion de secretos como HashiCorp Vault, AWS Secrets Manager o external-secrets-operator para inyectar secretos al momento del deploy
  • Usa el plugin helm-secrets con Mozilla SOPS para cifrar valores sensibles antes de commitearlos a Git
  • Agrega patrones de values.yaml a .gitignore y usa values.yaml.example con valores placeholder para documentacion

Tecnologías Afectadas

TerraformKubernetesDocker

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas