viernes, 2 de junio de 2023

Desarrollo seguro: el registro de seguridad

Es imprescindible tener un registro (o log) en un entorno protegido, el cual registre toda actividad o evento del sistema o de las aplicaciones, en lo concerniente a la seguridad. Este registro es vital para un posible análisis forense en un futuro.

El registro de seguridad ha de cumplir los siguientes requisitos:

  • Trazabilidad. Debe tener un formato temporal que facilite la trazabilidad de los eventos.
  • Auditabilidad. Ha de almacenarse de forma segura y durante un tiempo mínimo de retención, a efectos de auditoría.
  • Autenticación/autorización. El acceso a este registro sólo estará disponible para personas autenticadas y autorizadas.
  • Confidencialidad. El registro ha de asegurar que no puede ser accedido por medios distintos a la autenticación y autorización. Los datos sensibles deben ser cifrados.
  • Integridad. El registro debe asegurar que no hay manipulaciones a nivel de registro ni de entradas. Para ello, se recomienda el uso de firmas de integridad que se actualicen con cada nueva entrada.
  • Disponibilidad. Su almacenamiento debe ser redundante y contar con copias de respaldo.


Posibles riesgos

A continuación se describen algunos de los posibles riesgos relativos al registro de seguridad:

  • Fuga de información. Si hubiera vulnerabilidad en la autorización, un atacante podría acceder a la información sensible del registro.
  • Falsificación de registros. Una falta de integridad permitiría a un usuario no autorizado a manipular las entradas del registro, con lo que rompería la trazabilidad. Esto también podría llegar a provocar la ejecución de código malicioso.
  • Eliminación de registros. Un atacante podría eliminar sus propias entradas en el registro, para eliminar su actividad.

Mejores prácticas

He aquí algunas recomendaciones para elevar la seguridad en el registro de seguridad:
  • Evitar registrar datos sensibles (como datos personales, contraseñas, tarjetas de crédito, información financiera, etc). Si se registra, cifrar esta información mediante criptografía, tokens o anonimización.
  • Validar los datos antes de registrar la entrada, a fin de garantizar la información y evitar inyecciones.
  • Registrar el detalle de cada entrada:
    • Intentos de autenticación, sobre todo, los fallidos.
    • Accesos concedidos con roles, incluyendo el usuario.
    • Acceso a datos sensibles: qué usuario, qué roles, qué acciones se han realizado.
    • Errores de validación de las entradas.
    • Excepciones del sistema.
    • Amenazas e intentos de amenazas detectados.
  • Usar funciones hash para verificar la integridad de las entradas.
  • Mantener el registro de seguridad en un entorno protegido e independiente de otros registros.

Referencias