Lista negra de extensiones de archivo aceptadas: ¿qué tan cuidadoso necesito ser?

1

Actualmente, estoy trabajando en una aplicación web que permite a los usuarios cargar archivos en uno de nuestros servidores de Windows. La aplicación está construida en ASP.NET MVC con un backend de MySQL. Los archivos cargados no se almacenan en el servidor web, por lo que no se puede acceder a ellos a través de la aplicación.

Una buena práctica para subir archivos es limitar las extensiones a los tipos de archivos relevantes, pero eso no se va a lavar aquí. Si debo restringir las subidas por extensión, tiene que ser a través de una lista negra.

La búsqueda sugiere que hay algo así como 50 extensiones de archivos impares que debería sospechar y bloquear. Además de eso, existe la posibilidad de que se oculte un código peligroso en otros archivos como pdf.

Sin embargo, el propósito de la aplicación es analizar los archivos de texto cargados. Una vez que los archivos están en el servidor, se introducen en una secuencia de archivos y los contenidos se combinan para la estandarización de los datos. Eso es todo lo que hace.

Dado que lo que hacemos con los archivos parece lo suficientemente seguro, no los estamos ejecutando ni nada, ¿realmente necesito mantener una lista de bloqueo de 50 cadenas en constante expansión? O hay algunos tipos de archivos (es decir, .exe) que puedo seleccionar como particularmente peligrosos sin comprometer la seguridad.

    
pregunta Matt Thrower 12.05.2016 - 16:14
fuente

1 respuesta

2

Una extensión de archivo es solo una parte del nombre y, por sí misma, no dice nada sobre el contenido del archivo. Solo lo utilizan el sistema operativo y las aplicaciones para decidir qué hacer con el archivo. Por lo tanto, si no tiene ningún componente en su sistema que use la extensión para decidir qué hacer con el archivo, la extensión no importa en absoluto y no necesitará una lista blanca ni una lista negra.

Pero ya que procesará los archivos sin importar la extensión que tengan, lo que realmente importa es el contenido del archivo. Por lo tanto, asegúrese de que su propio procesamiento de texto pueda lidiar con contenido inesperado de manera segura. Eso significa que no debe hacer ningún tipo de suposiciones sobre la adherencia de los datos de entrada a algún estándar, sino que siempre debe asumir que alguien le está suministrando datos de entrada ligeramente corruptos para explotar errores en su aplicación, como actualmente realizado con imágenes .

    
respondido por el Steffen Ullrich 12.05.2016 - 16:56
fuente

Lea otras preguntas en las etiquetas