El servidor cargado con antivirus permite que el archivo viral pase

2

Tenemos un sitio web .NET MVC con un servicio WCF como capa de servicio. Una de las características que ofrece el servicio es la capacidad de cargar documentos. Cuando le pedimos a nuestro asesor de seguridad que probara las vulnerabilidades de nuestro sistema, descubrió que un usuario puede cargar EICAR.txt (una cadena inocua que actúa como un virus para todos los programas antivirus) se puede cargar en el sistema.

Básicamente, este archivo va como un flujo de bytes desde la función de carga y se guarda en la base de datos como un BLOB a través de una llamada de servicio. Los servidores (tanto el servidor web IIS como el servidor de bases de datos) están cargados con antivirus.

No puede ir a estos servidores y descargar un archivo de EICAR para que el antivirus no le permita hacerlo. Sin embargo, cuando el archivo llega al servidor IIS como un Byte [] o cuando llega al servidor de la base de datos como un BLOB a través del código de la aplicación, pasa a través.

¿Hay alguna forma de hacer que mi aplicación sea robusta para que sea segura contra archivos infectados con virus?

    
pregunta Lost 30.04.2016 - 01:20
fuente

1 respuesta

2

No sobreestimemos el hallazgo del asesor de seguridad porque algunos de ellos realmente no saben lo que hacen. Por supuesto, no conozco el informe real y solo puedo basar mi opinión en lo que escribiste. Pero una vez tuve que ver con un informe en el que el consultor se quejaba de que el firewall no había detectado el virus EICAR cuando se usaba como asunto de un correo, aunque el uso previsto para el virus de prueba EICAR dice explícitamente:

  

Cualquier producto antivirus que admita el archivo de prueba EICAR debería detectarlo en cualquier archivo siempre que el archivo comience con los siguientes 68 caracteres, y sea exactamente 68 bytes de largo ...

Por lo tanto, detectar el código dentro de un flujo de bytes dentro de una aplicación o base de datos no cubre el uso en absoluto porque no es un archivo. Y tal vez ni siquiera cumple con los otros requisitos de inicio y longitud. Pero sería malo si el flujo de bytes se guarda realmente en algún lugar como un archivo, como cuando se descarga desde el navegador.

Hay una razón para esta restricción de uso del virus de prueba: el flujo de bytes de un virus no es peligroso por sí mismo. Solo es un problema cuando se usa en un contexto donde se puede ejecutar, generalmente cuando se guarda como un archivo con una extensión específica como .exe, .com, .scr, .dll, etc.

Pero es cierto que si el código malicioso ya está cargado dentro de una aplicación, también podría ejecutarse por otros medios, ya sea deliberadamente o debido a un error como un desbordamiento de búfer. La ejecución deliberada también sería posible si el código estuviera oculto con, por ejemplo, el cifrado, por lo que no importa. Y el desbordamiento del búfer no ejecutaría el código malicioso directamente, pero primero habría un código que explota el desbordamiento del búfer para luego ejecutar el código específico. E incluso este código de vulnerabilidad podría incluir algunos XOR simples para descodificar primero el código malicioso real.

Esto significa que buscar la firma de malware en algún lugar dentro de un flujo de bytes que puede o no ser usado directamente en la ejecución puede causar más falsas alarmas que de uso real. Por lo tanto, asegúrese de no ejecutar ningún código que tenga usted mismo en la base de datos y de no enviar a nadie los datos dentro de una descarga o de guardarlos como un solo archivo.

Aparte de eso, los productos antivirus para empresas a menudo tienen una API (u oferta ICAP) para que pueda enviar cualquier flujo de bytes que desee al antivirus para su análisis. Esto debe hacerse dentro de su aplicación en cualquier lugar que considere necesario. Y, por supuesto, debe tener en cuenta que esto solo fue un virus de prueba y que el antivirus no encontrará todo el malware posible, por lo que nunca podrá ofrecer una protección completa.

    
respondido por el Steffen Ullrich 30.04.2016 - 07:57
fuente

Lea otras preguntas en las etiquetas