Saltar al contenido

Referencia de reglas de Sentinel

Cada regla de Sentinel que viene en v1.0 — las 10 reglas built-in HEX/NAM/SEC/TEST implementadas en Go y las 11 reglas YAML cargables documentadas en las familias ARC/SEC/QC/DEPS.

Actualizado: 2026-04-30

Esta es la lista canónica de cada regla de Sentinel que viene con Korva v1.0. Las primeras diez están implementadas en Go dentro del binario; las restantes son plantillas documentadas que puedes dejar en .korva/rules/<rule-id>.yaml para activarlas.

Reglas built-in (Go)

Arquitectura hexagonal

IDSeveridadDetecta
HEX-001ErrorCapa de dominio importando de infrastructure o application
HEX-002ErrorCapa de application importando de infrastructure
HEX-003Errorconsole.* en src/ (excluyendo tests)
HEX-004Errornew XAdapter(...) fuera de *.module.ts
HEX-005Warning: any sin un // korva-ignore: <razón>

Naming

IDSeveridadDetecta
NAM-001ErrorSufijo Dto en lugar de DTO
NAM-002ErrorToken de puerto DI no en SCREAMING_SNAKE_CASE
NAM-003WarningArchivos en /adapters/ que no siguen *.adapter[.variant].ts

Seguridad

IDSeveridadDetecta
SEC-001ErrorSecretos hardcodeados — literales password, api_key, secret, token

Testing

IDSeveridadDetecta
TEST-001WarningTests en __tests__/ o test/ en lugar de co-located

Reglas documentadas (YAML, opt-in)

Deja un archivo <rule-id>.yaml en .korva/rules/ y Sentinel lo cargará. La referencia canónica completa vive en sentinel/rules/AGENTS.md en el repo público.

Arquitectura (ARC-*)

IDDetecta
ARC-001Imports de frameworks (express, nestjs, prisma…) dentro de domain/core
ARC-002Funciones de más de 25 LOC o llamadas a DB dentro de handlers HTTP
ARC-003db.query, prisma.*, mongoose.* fuera de repository/store

Seguridad (extensiones SEC-*)

IDDetecta
SEC-002logger.info(password), console.log(token) con nombres de variable sensibles
SEC-003Igualdad directa (==/===) sobre token / secret / HMAC / firma (timing attack)
SEC-004CORS con origin: "*" o Access-Control-Allow-Origin: *
SEC-005SQL en template literals con interpolación
SEC-006Rutas /admin, /internal, /users/:id sin middleware de autenticación

Quality control (QC-*)

IDDetecta
QC-001console.log, debugger;, breakpoint() en src/
QC-002: any / as any sin justificación

Dependencias (DEPS-*)

IDDetecta
DEPS-001Imports de paquetes vulnerables (lodash<4.17.21, moment, node-serialize, eval())

Supresiones

Comentario inline en la misma línea que la violación:

const publicData: any = response.data // korva-ignore: API externa, sin tipo estático disponible

Un // korva-ignore pelado (sin razón) es a su vez una violación.

Perfiles

PerfilReglas activasCaso de uso
minimalSEC-001Recién empezando
standard (default)HEX-001/002/003 + SEC-001La mayoría de equipos
strictTodas las built-inEquipos maduros

Selecciona el perfil con --profile <name> o define KORVA_SENTINEL_PROFILE.

Añadir una regla custom

  1. Deja my-rule.yaml en .korva/rules/.
  2. Especifica patrón regex, glob de archivos, severidad (error / warning) y un mensaje de una línea.
  3. Ejecuta korva sentinel check para verificar que dispara donde esperas.
  4. Commitealo — tu equipo la recoge automáticamente al hacer pull.

Formatos de output

Terminal window
# Texto — humanos
korva sentinel check
# JSON — CI / tooling
korva-sentinel --format json

Forma del JSON:

{
"scanned": 12,
"passed": 10,
"failed": 2,
"findings": [
{
"rule": "SEC-001",
"severity": "error",
"file": "src/auth/AuthService.ts",
"line": 14,
"message": "Hardcoded secret detected",
"snippet": "const secret = \"sk_live_4xK9mP...\""
}
]
}

Siguiente