¿Cómo puede existir un virus en una imagen?


Recientemente he visto este vídeo de un experto finlandés en seguridad en Internet. En algún lugar alrededor del undécimo minuto, habla de un virus que está oculto en una imagen y se ejecuta cuando la imagen está a punto de ser mostrada.

Me pregunto cómo técnicamente hacen tal cosa, me refiero a cómo es que el virus se ejecuta , cuando la imagen debe mostrarse y cómo es que la imagen no se ve comprometida de alguna manera. Pensé que el ordenador primero mira en la extensión, a continuación, se abre con el programa apropiado y deja que el programa funcione por sí mismo (y no espero que el visor de imágenes regular sea capaz de ejecutar un virus dentro de sí mismo). Obviamente no funciona así, pero nadie a quien le pregunté podría ayudarme con esto.

Entonces, ¿alguien sabe cómo hacer esto, el principio? Muchas gracias.

Author: Martin Geisler, 2012-03-13

3 answers

Tiene razón en que su sistema operativo elegirá un programa y le pedirá que abra la imagen. El sistema operativo no le pedirá al programa que ejecute la imagen - eso sería una tontería.

Sin embargo, las imágenes son formatos complejos y a menudo contienen metadatos y otras partes que no se muestran directamente: puede ocultar cosas allí sin afectar la imagen en la pantalla. Así que podría haber datos hostiles al acecho dentro del archivo de imagen.

Además, el programa puede tener errores, en particular desbordamientos de búfer. Brevemente, un virus puede explotar esto poniendo datos demasiado grandes en las secciones de metadatos, más grandes de lo que espera el programa que decodifica la imagen. Los búferes internos se desbordan y con suficiente habilidad, un escritor de virus es capaz de poner código ejecutable en el lugar correcto en la memoria para que el programa que decodifica la imagen termine ejecutando el código. De esa manera un archivo inocente y "muerto" como una imagen puede alojar un exploit.

 40
Author: Martin Geisler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-12 23:12:43

No tiene que ser mostrado, tiene que ser leído.

El sistema operativo puede tener un subproceso de generación de miniaturas que analizará todas las imágenes que encuentre. Un desbordamiento de búfer en ese código permitirá la ejecución de código sin la intervención del usuario.

Esto se aplica a cualquier archivo que tenga alguna forma de función de lectura automática, para extraer las propiedades de un mp3, indexar un PDF, etc.

 3
Author: ixe013,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-12 23:16:53

Un virus puede almacenar información en una imagen, y puede explotar una vulnerabilidad en un programa de visualización de imágenes. No puede "infectar" una imagen, sino alterar maliciosamente una imagen de tal manera que el programa que es probable que la abra sea subvertido y desencadene un exploit en ese proceso.

Si un virus pone datos malformados en una imagen para explotar el programa X, y la imagen se abre en el programa Y, es probable que la imagen no se renderice porque está demasiado malformada, o renderizar como una imagen inocente o aleatoria en ese programa.

La falla como con todas estas cosas no está en el formato de imagen, sino más bien en la implementación del decodificador de imagen.

 2
Author: SecurityMatt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-12 23:30:43