Skip to content

Reglas de RootCause

Las reglas son el núcleo de RootCause. Definen qué problemas buscar en tu código y configuraciones, especificando patrones, condiciones y mensajes de error.

¿Qué tipos de reglas existen?

RootCause soporta diferentes tipos de reglas para cubrir diversos escenarios de análisis:

Reglas YAML

Formato principal para detectar patrones simples de código y configuraciones.

Reglas JSON

Formato serializado ideal para generación programática y validación de configuraciones.

Reglas Semgrep

Para patrones complejos con análisis semántico y combinaciones avanzadas.

Reglas OPA/WASM

Para lógica de políticas complejas usando Rego compilado a WebAssembly.

¿De dónde se cargan las reglas?

RootCause carga las reglas desde múltiples ubicaciones:

Ubicación por defecto

  • Linux/macOS: ~/.config/rootcause/rules
  • Windows: %APPDATA%\rootcause\rules

Configuración personalizada

Puedes especificar directorios adicionales en el archivo de configuración config.toml:

toml
[rules]
rule_dirs = [
    "/home/usuario/.config/rootcause/rules",
    "./reglas-personalizadas",
    "./reglas-del-proyecto"
]

Comando scan

También puedes especificar un directorio de reglas directamente:

bash
rootcause scan . --rules ./mi-directorio-reglas

Gestión de reglas

Ver reglas instaladas

bash
rootcause rules list

Instalar conjunto de reglas

bash
rootcause rules install https://example.com/rules.tar.gz

Verificar reglas

bash
rootcause rules verify ./rules

Inspeccionar regla específica

bash
rootcause rules inspect py.subprocess-shell

Formatos soportados

RootCause soporta múltiples formatos de reglas:

  • YAML: Formato principal y más legible
  • JSON: Formato alternativo
  • Semgrep: Compatible con reglas de Semgrep
  • OPA WASM: Módulos WebAssembly para reglas complejas

Estructura básica de una regla

Todas las reglas siguen una estructura común:

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"
    # ... configuración específica del tipo de regla

Niveles de severidad

NivelDescripciónUso
LOWInformación útilFunciones deprecadas, sugerencias
MEDIUMPosible problemaConfiguraciones no óptimas
HIGHProblema a corregirFunciones inseguras, vulnerabilidades
CRITICALProblema graveContraseñas en texto plano, fallos críticos

Organización recomendada

rules/
├── python/
│   ├── security/
│   │   ├── no-eval.yaml
│   │   └── subprocess-shell.yaml
│   └── best-practices/
│       └── no-unused-imports.yaml
├── docker/
│   ├── security/
│   └── best-practices/
└── yaml/
    └── security/

Próximos pasos

RootCause - Modular Static Analysis Engine