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
Campo | Requerido | Descripción |
---|---|---|
id | ✅ | Identificador único (formato: lenguaje.categoria.nombre ) |
severity | ✅ | Nivel: CRITICAL, HIGH, MEDIUM, LOW |
description | ✅ | Descripción breve de la regla |
message | ✅ | Mensaje mostrado al usuario |
category | ✅ | Categoría del lenguaje/tecnología |
pattern | ✅ | Patrón a buscar (usa ... para cualquier secuencia) |
fix | ❌ | Sugerencia 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 exactoFROM .*: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
- Reglas JSON - Formato alternativo
- Reglas Semgrep - Para patrones complejos
- Reglas OPA - Para lógica avanzada