¿Cómo puedo asegurarme de que el archivo entrante sea definitivamente del tipo de archivo esperado?

3

Tengo un programa para verificar si los archivos entrantes están en un tipo de archivo esperado, por ejemplo. PDF. El programa primero observa el número mágico y determina el tipo de archivo a partir de eso. El problema es que todavía puedo inyectar archivos de script maliciosos (por ejemplo, archivos por lotes en Windows) simplemente colocando el número mágico al principio, que luego se ignora en la línea de comandos cuando se ejecuta el archivo. ¿Hay otra manera de asegurarse de que el archivo es (en este ejemplo) un archivo pdf verdadero?

    
pregunta arc_lupus 16.06.2015 - 17:06
fuente

1 respuesta

4

Asegurar que un archivo sea del tipo de archivo correcto es desafiante y, a veces, imposible.

Cuando sea posible, use un analizador de archivos estricto.

Para un archivo PDF, use una biblioteca de pdf o un analizador de pdf para analizar el archivo y rechazar el archivo si surge algún problema de análisis. Esto a menudo puede tener consecuencias reales de compatibilidad, ya que muchos clientes de PDF permiten documentos PDF con formato incorrecto.

Guarde el archivo en una ubicación restringida con permisos restringidos

Asegúrese de guardar el archivo en una ubicación que no sea procesada por su servidor web. Asegúrese de que la extensión no sea ejecutable por su servidor web. Permitir solo el acceso de lectura al archivo (denegar explícitamente los privilegios de ejecución).

Comprenda qué tipo de ataques son posibles gracias a los archivos subidos por el usuario

En el caso de que un archivo se cargue en un servidor, si se toman precauciones de no ejecución, se mitigará un archivo malicioso que pasa por el analizador de archivos. Sin embargo, si el archivo está disponible para otros usuarios, es posible que desee utilizar un antivirus o buscar firmas maliciosas conocidas. Este enfoque de lista negra es un último recurso, pero es una medida razonable a tomar.

    
respondido por el amccormack 16.06.2015 - 17:16
fuente

Lea otras preguntas en las etiquetas