CreaRack-SL

Incident · Auditoría Suprema (s104): Mini-tanda de arreglos de seguridad core

Evento

Fecha: 2026-06-02 (Sesión 104) | Sesión: Auditoría Suprema (piloto dominio core, s103)

La Auditoría Suprema identificó 4 hallazgos ALTA de seguridad en el núcleo, confirmados con verificación adversarial. Todos fueron cerrados en una mini-tanda express en la sesión s104.

Impacto

Pre-mitigation

  • Un usuario readonly podía extraer credenciales SSH/SNMP en claro.
  • Un usuario readonly podía renombrar su organización.
  • Un fallo inesperado de BD en evaluación de permisos podía causar fail-open (acceso concedido por error).
  • Un Agent con JWT de tenant A podía escribir alertas sobre targets de tenant B (RLS bypass).

Post-mitigation (s104)

Todos los hallazgos fueron cerrados:

  • Descifrado: guard reforzado a network/edit.
  • Organización: guard añadido is_admin.
  • Permisos: fail-open eliminado, logging añadido.
  • Alertas: tenant validation añadida.

Línea de tiempo

EventoFechaDetalles
Auditoría Suprema inicia~2026-05-28Revisión exhaustiva del dominio core
Hallazgos identificados~2026-06-01Verificación adversarial de 4 vulnerabilidades
Fixes implementados2026-06-02Mini-tanda s104: 4 arreglos, 8 tests, ruff ok
Commit f22c8cf2026-06-02 13:08 UTCPush a main por Edu ([--no-verify] autorizado)

Hallazgos cerrados

  1. decrypt_credential sin guard → Guard network/edit añadido.
  2. update_company_settings sin guard → Guard is_admin añadido.
  3. has_permission fail-open → Logging de excepciones inesperadas.
  4. receive_agent_alert tenant bypass → Validación JWT tenant añadida.

Tests

Todos los arreglos están cubiertos por tests nuevos (8 total):

  • tests/api/test_credentials.py::test_decrypt_as_readonly_rejected
  • tests/api/test_credentials.py::test_decrypt_as_operator_allowed
  • tests/api/test_settings.py::test_update_company_as_readonly_rejected
  • tests/api/test_settings.py::test_update_company_as_admin_allowed
  • tests/api/test_sentinel.py::test_alert_rejects_body_tenant_spoofing
  • tests/api/test_sentinel.py::test_alert_matching_tenant_passes_guard
  • tests/test_permissions.py::test_unexpected_error_is_logged_not_swallowed
  • tests/test_permissions.py::test_migration_error_stays_silent

Deuda anotada

  • Hallazgo #5 ALTA (XFF bypass en /admin): out of scope, requiere verificación infra.
  • Bug preexistente: receive_agent_alert happy path 500 (MonitoringAlert kwargs). Backlog.
  • Modularización: sentinel.py en 525 LOC (troceo anotado).

Estado

Status: draft (evento histórico cerrado, pero documentado para auditoría y training)

Véase también

  • [[feature—security—s104-auditoria-suprema-fixes-core]]
  • [[decision—20260602—auditoria-suprema-4-hallazgos-alta]]
  • [[entity—core—service—decrypt-credential]]
  • [[entity—core—endpoint—update-company-settings]]
  • [[entity—core—service—has-permission]]
  • [[entity—terminal—endpoint—receive-agent-alert]]