Me gustaría saber, en el análisis de malware, qué se entiende por "ejecución multirruta". Leí esto cuando encuentro palabras en la literatura de detección de malware relacionada con Control Flow Graph (CFG).
Lo busqué, así que no soy un experto, pero parece significar esto.
Cuando el código es condicional, por ejemplo, mediante el uso de una declaración 'if', una CPU debe decidir qué 'rama' (el if o el else) debe tomar. Sin embargo, en las CPU modernas, las instrucciones son pre-buscadas y algunos cálculos se realizan con instrucciones que aún no se han ejecutado, por lo que la ramificación plantea un problema: ¿qué rama se debe evaluar? La ejecución de múltiples rutas (http://csd.ijs.si/courses/processor/chapter4/sld072.htm) significa evaluar ambas ramas y descartar la rama que finalmente no es la ruta tomada.
En relación con CFG: cuando se toman múltiples ramas, se viajarán temporalmente varios bordes. Sin embargo, después de que la condición se haya evaluado por completo, solo quedará un borde, los demás se descartarán.
Echa un vistazo a enlace para obtener mucha información sobre cómo una CPU moderna puede lidiar con la ramificación.
Esto me parece que no es un problema típico de "malware", sino un concepto general de depuración.
Alguien me corrige si estoy hablando sin sentido :-)
Creo que la frase hace referencia a la determinación de si un fragmento de código dado es o no malware. El código de aplicación estándar tiene propiedades estadísticas con respecto al barnching durante la ejecución. Una de las pruebas que puede usar para detectar malware es analizar un fragmento de código y comparar su comportamiento de bifurcación con modelos estándar. Si el comportamiento de bifurcación es similar al modelo, la prueba indicaría que esto no es malware. Si el comportamiento de bifurcación es significativamente diferente del modelo, la prueba indicaría que el código es malware. Por supuesto, pruebas como estas pueden producir resultados incorrectos. Una pieza de malware evalúa como código normal, que es un falso negativo. O un fragmento de código normal puede evaluarse como malware, que es un falso positivo. Dado que el software malicioso no depende tanto de los datos como de la entrada del usuario como la mayoría de los códigos de aplicación, algunos tipos de software maliciosos tienden a tener patrones de ejecución altamente lineales (sin ramificación). Por supuesto, un sofisticado diseñador de malware podría ocultar esto al incluir muchas más ramificaciones.