Decision · Auditoría Suprema: 4 hallazgos ALTA confirmados en core
Contexto
La Auditoría Suprema (iniciativa s103) es una revisión exhaustiva del código de CreaRack Pro enfocada en seguridad de permisos y aislamiento entre clientes (multi-tenancy), previa a la apertura a clientes externos.
Durante la auditoría (conducted with Code Opus) se identificaron y verificaron adversarialmente 4 hallazgos ALTA en el dominio core:
- Descifrado de credenciales accesible a usuarios readonly.
- Edición de organización accesible a usuarios readonly.
- Evaluador de permisos con fail-open silencioso.
- Bypass de aislamiento de tenants en ingesta de alertas.
Riesgo
- Impacto: Potencial exfiltración de secretos, escalada de privilegios, bypass de RLS.
- Probabilidad: Baja hoy (solo equipo, sin clientes externos). Será alta cuando se abra a clientes.
- Decisión: Cerrar todos antes de cualquier ingreso de cliente externo.
Hallazgos (detalles técnicos en feature page)
| # | Componente | Hallazgo | Líneas afectadas |
|---|---|---|---|
| 1 | core.credential_api::decrypt_credential | GET /decrypt sin guard de rol | core/credential_api.py:247 |
| 2 | core.api.settings::update_company_settings | PUT /settings/company sin guard | core/api/settings.py:29 |
| 3 | core.utils.permissions::has_permission | Fail-open silencioso en bloques except | core/utils/permissions.py:91,114 |
| 4 | terminal.api.sentinel::receive_agent_alert | Confianza en tenant_id del body, no JWT | terminal/api/sentinel.py:129 |
Decisión
Arreglar los 4 hallazgos en la sesión s104 (2026-06-02).
Cambios mínimos, directos, testados. No es un refactor; son guards y validaciones explícitas. La deuda de modularización (ej. troceo de sentinel.py) se anotó para backlog.
Acciones tomadas
- ✅ Hallazgo #1: Guard
has_permission(user, "network", "edit")en/decrypt. - ✅ Hallazgo #2: Guard
is_admin(user)en/settings/company. - ✅ Hallazgo #3: Estrechar
except Exceptiona(ProgrammingError, OperationalError)+ logging. - ✅ Hallazgo #4: Validar
agent_data["tenant_id"] == payload.tenant_id.
Todos con tests verdes (8 tests nuevos). CHANGELOG y RELEASE_NOTES actualizados.
Temas pendientes (out of scope s104)
- Hallazgo #5 ALTA (XFF spoofing en
/admin): Requiere cambios en topología Traefik/infra. Anotado para audit follow-up. - Bug preexistente:
receive_agent_alertconstruyeMonitoringAlertcon kwargs inexistentes → happy path 500. Anotado para backlog (no bloquea los fixes de seguridad).
Contexto de decisión
- Principio: Fail-secure, not fail-open. Un fallo de permisos debe denegar, no conceder.
- Auditoria: Verificación adversarial bajo 3 lentes (credential exfil, privilege escalation, RLS bypass).
- Timeline: Crítico antes de GA (General Availability) a clientes.
Véase también
- [[feature—security—s104-auditoria-suprema-fixes-core]]
- [[entity—core—service—decrypt-credential]]
- [[entity—core—endpoint—update-company-settings]]
- [[entity—core—service—has-permission]]
- [[entity—terminal—endpoint—receive-agent-alert]]
- [[concept—security—fail-open]]
- [[concept—saas—multi-tenancy]]