¿Qué formatos de archivo se sabe que no son seguros?

14

Recientemente descubrí que los archivos PDF pueden contener virus, y de la impresión recibí más que un error de desbordamiento del búfer (escuché que puede visitar las URL de forma automática, pero la persona no estaba segura)

¿Cuáles son algunos formatos de los que debería desconfiar hasta que todo esté remendado?

Recuerdo que en un momento hubo algo en un proyecto vb6 que ejecutaría el código en la carga del proyecto (sin ejecutar). Eso era peligroso.

    
pregunta Rory Alsop 24.10.2011 - 12:54
fuente

3 respuestas

23

Algunos formatos pueden llamarse inherentemente inseguros debido a su complejidad y su historial de uso como vectores de ataque. Adobe PDF y los archivos de MS Office vienen a la mente. Cualquier tipo de archivo ejecutable binario es ciertamente problemático a menos que se implemente un sandboxing.

Pero en general, depende de la aplicación que se use para abrir el archivo, no del archivo en sí. Incluso los formatos simples que no pueden incrustar código ejecutable pueden ser analizados por una aplicación de manera incorrecta, lo que lleva a errores y posibles vulnerabilidades. De manera similar, la aplicación de sandbox puede tener errores que permiten que el código ejecutable aumente sus privilegios, por lo que calificaría los ejecutables de sandbox como tan peligrosos como formatos de archivo complejos.

Es posible tener formatos de archivo relativamente seguros mediante el uso de un formato de datos que pueda verificarse automáticamente, utilizando un analizador generado automáticamente que no necesita información sobre el tipo de archivo, excepto la gramática utilizada. Creo que el formato ASN.1 es un candidato para esto. Pero este tipo de tecnología no se utiliza en ninguna parte.

    
respondido por el pepe 24.10.2011 - 13:20
fuente
17

En teoría, cualquier formato que requiera un procesamiento complicado o que permita la incorporación de otros formatos (especialmente Flash) puede ser peligroso. Sin embargo, los problemas más relevantes en este momento son:

  • Cualquier archivo de Microsoft Office (no tanto por las vulnerabilidades de Office, sino porque estos archivos pueden incrustar Flash y explotar sus vulnerabilidades)
  • archivos PDF
  • Obviamente, cualquier archivo que pueda ejecutarse por sí mismo (archivos ejecutables y de lotes de todo tipo). Los archivos "por lotes" en Windows no son solo archivos *.bat sino también archivos JavaScript *.js , archivos de Visual Basic Script *.vbs , archivos de Windows Script *.wsf y PowerShell con sus diversas extensiones de archivo.
  • Archivar archivos (en su mayoría, ZIP o RAR) porque se usan comúnmente para comprimir los tipos de archivos mencionados anteriormente y para pasar por alto los filtros.
respondido por el Wladimir Palant 24.10.2011 - 13:22
fuente
7

El problema del PDF es probablemente una referencia a un problema anterior en el que los complementos de PDF preinstalados ejecutarán automáticamente el JavaScript especificado en el fragmento de la URL.

No hay una lista completa de formatos de archivo que sean peligrosos. No solo es esta lista negra, sino que también ignora polyglots :

  

El término a veces se aplica a los programas que son válidos en más de un idioma, pero no realizan estrictamente la misma función en cada uno.

Por ejemplo, es posible construir un GIF que también es JavaScript y un Página HTML que también es un JPEG . Cualquier formato de archivo que sea seguro, pero para el que es posible escribir un políglota con otro idioma inseguro, es potencialmente inseguro.

  

Cuando un servidor envía un archivo, también envía el tipo MIME de ese archivo en un encabezado Content-Type. Todo está bien cuando el tipo de contenido que el servidor afirma es consistente con el contexto esperado en el que se usa ese contenido. ¿Qué sucede cuando el servidor no envía un tipo de contenido? ¿Qué sucede cuando se envía un archivo con un tipo de contenido cuando se espera un tipo diferente?

     

La tristeza sucede.

     

Algunos navegadores consideran que el tipo de contenido que el servidor afirma tiene autoridad y si el contenido no se puede analizar como ese tipo, el contenido no se procesa. Otros ignoran el tipo afirmado del servidor e intentan adivinar (oler el contenido) para su tipo. Este rastreo puede tomar la forma de heurísticas como el sufijo del nombre del archivo en la URL que lo especifica, el primer par de bytes "mágicos" del contenido, o simplemente intentar analizar el archivo con diferentes analizadores hasta que se ajuste uno. El tipo de analizador probado a veces está limitado por la etiqueta en particular (el contenido de instancia esperado por una etiqueta img solo intentará analizarse de acuerdo con los formatos de imagen nativos admitidos por el navegador). El problema se ve agravado aún más por los complementos como Java y Flash y por los diferentes tipos de caché y la función de "guardar archivos" en los navegadores que pueden o no recordar qué tipo de contenido fue declarado por el servidor.

Además, cualquier formato de archivo binario puede potencialmente aumentar los privilegios al hacer que se desborden los búferes en el código que lo decodifica.

Si está tratando de servir contenido de fuentes que no son de confianza, necesita un proxy y normalizarlo.

    
respondido por el Mike Samuel 24.10.2011 - 15:32
fuente

Lea otras preguntas en las etiquetas