Skip to content

Reglas YAML

Las reglas YAML son el formato principal para crear reglas de seguridad en RootCause. Ideales para detectar patrones simples de código y configuraciones.

Estructura Básica

yaml
rules:
  - id: "python.security.no-eval"
    severity: "HIGH"
    description: "Evitar el uso de eval()"
    message: "No uses eval() con entradas no confiables"
    category: "python"
    pattern: "eval(...)"
    fix: "print(...)"  # Opcional

Campos

CampoRequeridoDescripción
idIdentificador único (formato: lenguaje.categoria.nombre)
severityNivel: CRITICAL, HIGH, MEDIUM, LOW
descriptionDescripción breve de la regla
messageMensaje mostrado al usuario
categoryCategoría del lenguaje/tecnología
patternPatrón a buscar (usa ... para cualquier secuencia)
fixSugerencia de corrección

Ejemplos Reales

Python - No usar exec()

yaml
rules:
  - id: py.no-exec
    severity: MEDIUM
    description: Avoid using exec()
    message: Do not use exec() with untrusted input
    category: python
    pattern: "exec(...)"
    fix: "print(...)"

Docker - Múltiples reglas

yaml
rules:
  - id: docker.no-latest-tag
    severity: MEDIUM
    description: Avoid using the latest tag
    message: Do not use the latest tag
    category: dockerfile
    patterns:
      - pattern: ":latest"
  - id: docker.no-add
    severity: MEDIUM
    description: Avoid using ADD
    message: Use COPY instead of ADD
    category: dockerfile
    patterns:
      - pattern: "ADD "

YAML - Configuraciones inseguras

yaml
rules:
  - id: yaml.no-plaintext-password
    severity: MEDIUM
    description: Evitar contraseñas en texto plano
    message: Avoid hardcoded passwords
    category: yaml
    pattern: "password:"
    
  - id: yaml.no-privileged
    severity: MEDIUM
    description: Evitar modo privilegiado
    message: Avoid privileged true
    category: yaml
    pattern: "privileged: true"

Sintaxis de Patrones

  • ... - Cualquier secuencia de tokens
  • "texto" - Texto exacto
  • FROM .*:latest - Expresiones regulares

Casos de Uso

Ideal para:

  • Patrones simples de texto
  • Búsquedas directas
  • Configuraciones básicas
  • Máximo rendimiento

No adecuado para:

  • Análisis complejo de estructura
  • Lógica condicional avanzada
  • Análisis de flujo de datos

Próximos Pasos

RootCause - Modular Static Analysis Engine