MACGUARD · DOCUMENTACIÓN
English

Validación estática

Cómo se clasifica cada fichero de reglas antes de medirlo.

Estados

rulecheck.py asigna a cada fichero examinado uno de cuatro estados finales: VALIDATED, QUARANTINED, REJECTED o DEPRECATED. Solo VALIDATED puede publicarse.

Diagrama: Clasificación estática

Dibujando el diagrama…

Descripción del diagrama

Cada fichero se lee como texto y se compila. Los criterios duros (binario, vacío, sin reglas, demasiado grande, mismo contenido rechazado antes) lo rechazan. Truncamiento, corrupción, error de compilación, módulo bloqueado o desconocido, expresión regular costosa, bucle sobre todo el fichero, licencia cambiada o dependencia no validada lo envían a cuarentena. Un fichero marcado como obsoleto en sus metadatos queda como obsoleto. El resto se valida.

Código Mermaid
flowchart TD
  F["rule file"]:::src --> H{"hard criteria?<br/>binary, empty, no rules,<br/>over 1 MB, rejected before"}:::val
  H -->|yes| REJ["REJECTED"]:::qua
  H -->|no| T{"truncated, corrupt,<br/>compile error?"}:::val
  T -->|yes| QUA["QUARANTINED"]:::qua
  T -->|no| J{"judgement findings?<br/>blocked module, costly regex,<br/>filesize loop, licence changed,<br/>needs a non validated file"}:::val
  J -->|yes| QUA
  J -->|no| DEP{"deprecated in its metadata?"}:::val
  DEP -->|yes| DE["DEPRECATED"]:::qua
  DEP -->|no| OK["VALIDATED"]:::sec
  classDef src fill:#cfe3ff,stroke:#2f6df0,color:#0b1b33
  classDef val fill:#ffe9b8,stroke:#b8860b,color:#2b1d00
  classDef sec fill:#cdeedd,stroke:#1b6e3c,color:#08210f
  classDef pub fill:#e4d7ff,stroke:#6a3fd1,color:#1b0b3b
  classDef qua fill:#ffd4cc,stroke:#c0392b,color:#33100b
  classDef gate fill:#ffffff,stroke:#111111,stroke-width:3px,color:#111111

Criterios

ResultadoMotivo
REJECTEDCriterios duros: binario, vacío, sin reglas, más de 1 MB o contenido ya rechazado antes.
QUARANTINEDTruncado, corrupto, error de compilación, módulo bloqueado (cuckoo, magic, androguard) o desconocido, expresión regular costosa, bucle sobre todo el fichero, licencia cambiada o dependencia no validada.
DEPRECATEDEl fichero se marca como obsoleto en sus propios metadatos.
VALIDATEDNingún criterio anterior se cumple.

Módulos permitidos: pe, elf, macho, math, hash, dotnet, time, string. El módulo cuckoo necesita un informe de sandbox que MacGuard no genera, por eso no tiene uso en el canal. Los umbrales viven en config/policy.json.

Dependencias entre ficheros

Muchos ficheros usan reglas de otros (include o nombres de regla). El candidato conserva esa relación como depends_on firmado; cada fichero se compila en su propio espacio de nombres con sus dependencias, porque 227 ficheros repiten nombres de regla y un único espacio de nombres no compilaría.

LÍMITE «Validada» no es una evaluación de calidad de detección. No se mide falsos positivos más allá de las pruebas con un corpus benigno y los canarios.