Volver a la wiki

El PIN del portal de clientes de Signage se guardaba en claro en la base de datos

Cuándo

Hallazgo signage #3/#14 de la Auditoría Suprema 2 (PR #501), dejado diferido como decisión de producto. Edu decidió el criterio el 04-09-2026 (task #288) y se cerró el 05-09-2026 con el commit 3eb4aae1 (PR #505, v1.113.0). No hubo explotación conocida ni incidente en producción: es un hallazgo de auditoría cerrado antes de que se materializara ningún daño.

Síntomas visibles

El PIN con el que un cliente entra a su portal (ClientProject.pin) se guardaba en texto plano en la base de datos — visible en cualquier dump de BD, backup de organización o acceso directo a la fila. El modelo nunca pasó por el cifrado que ya protegía las credenciales de dispositivos (SNMP/SSH de DeviceProfile).

Causa raíz

ClientProject.pin se diseñó como CharField(20) en claro desde el origen del modelo. A diferencia de las credenciales de red, nadie lo hizo pasar por CredentialManager — el campo quedó fuera del criterio de cifrado en reposo que sí se aplicó a otras credenciales del proyecto.

Fix aplicado

Commit 3eb4aae1 (PR #505):

Lecciones

Preventivos futuros

Véase también

Subir