viernes, 2 de junio de 2023

Desarrollo seguro: gestión de archivos

Los archivos son activos esenciales en la seguridad de un sistema de información, pues contiene y persiste gran parte de la información. Por ello, la gestión de archivos debe contemplarse desde la fase de diseño, identificando los archivos internos, los archivos que se cargan, su ubicación, el control de acceso, la copia de seguridad, el flujo de la información, los datos que contiene, etc.

Imagen: imageapi


Posibles riesgos

A continuación se describen algunos de los posibles riesgos relativos a la gestión de archivos:

  • Acceso no autorizado. Implicaría la revelación, manipulación, pérdida o borrado de datos.
  • Carga de archivos maliciosos. Podría ejecutar archivos de forma remota, provocar una infección de malware o realizar un ataque de denegación de servicio.
  • Carencia de copias de seguridad. Provocaría la pérdida de datos a la organización, la pérdida de datos de usuario o la falta de disponibilidad del servicio. 


Mejores prácticas

He aquí algunas recomendaciones para elevar la seguridad en la gestión de archivos:

  • Exigir la autenticación y la autorización de cada usuario al acceder a un archivo.
  • El nombrado de archivos y directorios no puede ser realizado con entradas de usuario.
  • Validar el tipo de contenido por encima de la extensión del archivo.
  • Verificar el tipo MIME del archivo.
  • Impedir la subida de archivos ejecutables.
  • Para evitar problemas de disponibilidad y de impacto en el servidor, limitar el tamaño del archivo.
  • Procesar los archivos mediante un antivirus y antimalwares.
  • En el directorio de subida de archivos de usuarios, desactivar los privilegios de ejecución.
  • Al proporcionar un enlace de descarga a un usuario, no facilita rutas absolutas (canonización de path).
  • Evitar el nombrado secuencial de archivos.
  • En el nombre de un archivo, no utilizar datos sensibles.
  • El acceso al archivo debe ser de sólo lectura.
  • Poner límite al número de archivos que puede subir un usuario.
  • Para asegurar su integridad, almacenar los hashes de cada archivo subido.

Referencias