iForja

Hardening checks

4 checks ejecutables · `POST /api/hardening/scan` + `GET /api/hardening/findings` · modo stub para dev · modo real para producción · cualquier hallazgo HIGH/CRITICAL bloquea el release.

actualizado · 2026-08-21

Los 4 checks

core/forja/core/hardening_checks.py implementa run_full_hardening_scan, que ejecuta cuatro verificaciones:

audit_chain_integrity
Integridad del hash chain de audit_events (ADR-0007). Obligatorio antes de cada release.
nativo
secrets_in_repo
Secretos hardcoded en código y configs.
detect-secrets
dependencies_cves
Vulnerabilidades conocidas en dependencias.
pip-audit
backup_freshness
Existe un backup reciente (≤ 24 h) en el directorio de backups.
nativo

Modos

  • stub (default · dev/tests) · los checks que dependen de herramientas externas devuelven resultado limpio sin ejecutarlas
  • real (FORJA_HARDENING_MODE=real) · ejecuta las herramientas reales con timeouts

Pasar a modo real requiere instalar en el venv:

pip install detect-secrets pip-audit

Si una herramienta externa no está instalada en modo real, el check lo reporta como hallazgo (severity=medium) en lugar de fallar silenciosamente.

Endpoints

POST /api/hardening/scan          # lanza el scan completo
GET  /api/hardening/findings      # lista los hallazgos persistidos (filtrable)
GET  /api/hardening/findings/{id} # detalle de un hallazgo
POST /api/hardening/findings/{id}/resolve  # marca un hallazgo como resuelto

Cada hallazgo se persiste con su scan_kind (audit_chain, detect_secrets, pip_audit, backup_freshness), severidad y ruta afectada.

Política institucional · gate de release

El scan calcula high_severity_count (hallazgos con severidad high o critical). La regla es binaria:

Cualquier hallazgo HIGH o CRITICAL activa blockers_release = true. No se permite deployment a producción con hallazgos de esa severidad sin resolver.

Además, cada hallazgo release-blocking dispara un audit_event y una alerta al operador.

Frecuencia

  • Manual · en cada release o cuando el operador lo pida
  • Cron · programable (p. ej. diario)
  • Post-incident · tras cualquier audit_event de severidad crítica

Integración con ISO 27001

Cada check mapea directamente a un control catalogado del Anexo A:

CheckControl ISO
audit_chain_integrityA.8.15 · Logging
secrets_in_repoA.8.12 · Data leakage prevention
dependencies_cvesA.8.8 · Technical vulnerabilities
backup_freshnessA.8.13 · Information backup

4 checks · 4 controles ISO 27001 cubiertos directamente.