jueves, 11 de octubre de 2018

Ejecucion especulativa: ¿que es?, ¿que vulnerabilidades a generado?, ¿hay alguna solucion planteada?

¿Que es?:

Es una forma de optimización en la que un sistema informático realiza una tarea que podría no ser necesaria; la idea consiste en llevar a cabo un trabajo antes de saber si será realmente necesario con la intención de evitar el retraso que supondría realizarlo después de saber que sí es necesario. Si el trabajo en cuestión resulta ser innecesario, la mayoría de los cambios realizados por ese trabajo se revierten y los resultados se ignoran.

El objetivo de esta técnica es proporcionar una mayor concurrencia en caso de disponer de más recursos. Esta técnica se utiliza en una variedad de áreas informáticas, incluyendo la predicción de saltos en las CPU que soportan segmentación, la predicción de valores dirigida a explotar la localización de valores, la prelectura de memoria y archivos, y el control de concurrencia optimista en sistemas de bases de datos.

Los modernos microprocesadores que incluyen segmentación utilizan ejecución especulativa para reducir el coste de las instrucciones que dependen de la predicción de saltos, y lo hacen mediante técnicas que predicen la ruta de ejecución de un programa basándose en el historial de los saltos realizados anteriormente.

Con el fin de mejorar el rendimiento y optimizar la utilización de los recursos del sistema informático, las instrucciones pueden planificarse cuando todavía no se ha determinado si será o no necesario ejecutarlas, antes de un salto.

¿Que vulnerabilidades a generado?

En junio de 2017, un equipo formado por investigadores independientes, laboratorios universitarios de investigación, algunos miembros del Proyecto Cero de Google y Cyberus Technology descubrió dos vulnerabilidades de seguridad que eran posibles gracias al uso ampliamente extendido de la ejecución especulativa. El problema fue descubierto también de forma independiente por otros investigadores más o menos al mismo tiempo. Las vulnerabilidades terminaron haciéndose públicas en enero de 20189 y fueron denominadas Meltdown y Spectre (las cuales comentaremos ahora).

Meltdown:
  • La vulnerabilidad Meltdown es un agujero de seguridad en el hardware que afecta a los procesadores Intel x86, a los procesadores IBM POWER, y también a algunos procesadores basados en la arquitectura ARM​, y que permite que un proceso maligno pueda leer de cualquier lugar de la memoria virtual, aún sin contar con autorización para hacerlo.
  • Explota una condición de carrera inherente al diseño de muchas CPU actuales (esta condición se da entre los accesos a la memoria y la comprobación de privilegios durante el procesamiento de instrucciones) además, en combinación con un ataque de canal lateral a la caché de la CPU (esta vulnerabilidad permite que un proceso se salte las comprobaciones habituales de nivel de privilegio que normalmente aislarían al proceso maligno e impedirían que accediese a datos que pertenecen al sistema operativo y otros procesos concurrentes) 
  • La vulnerabilidad permite que un proceso no autorizado lea información de cualquier dirección mapeada al espacio de memoria del proceso actual. Dado que la segmentación de instrucciones reside en los procesadores afectados, la información de una dirección no autorizada casi siempre se cargará temporalmente en la caché de la CPU durante la ejecución fuera de orden, pudiendo posteriormente leerse desde la caché. 
  • Esto puede suceder incluso cuando la instrucción de lectura original falla debido a una comprobación de privilegios que da negativo, o cuando no produce un resultado legible.
Spectre:
  • es una vulnerabilidad que afecta a los microprocesadores modernos que utilizan predicción de saltos. En la mayoría de los procesadores, la ejecución especulativa que surge de un fallo de la predicción puede dejar efectos observables colaterales que pueden revelar información privada a un atacante. Por ejemplo, si el patrón de accesos a la memoria realizados por la mencionada ejecución especulativa depende de datos privados, el estado resultante de la caché de datos constituye un canal lateral mediante el cual un atacante puede ser capaz de obtener información acerca de los datos privados empleando un ataque sincronizado.

  • Spectre es una vulnerabilidad que permite a los programas alojados en el sistema operativo del usuario acceder a una dirección arbitraria del espacio de memoria de un programa.


  • En lugar de una única vulnerabilidad de fácil corrección, el documento de Spectre1​ describe una clase entera de vulnerabilidades potenciales.​ Todas esas vulnerabilidades se basan en explotar los efectos secundarios de la ejecución especulativa, una técnica empleada comunmente para combatir la latencia de la memoria y acelerar así la ejecución en los microprocesadores modernos.


  • En particular, Spectre se centra en la predicción de saltos, un caso especial de la ejecución especulativa. A diferencia de la vulnerabilidad Meltdown hecha pública la misma fecha, Spectre no depende de una característica en particular de la gestión de memoria de un procesador en concreto o de cómo proteja el acceso a esa memoria, sino que tiene un enfoque más general.


  • El punto de partida del documento de Spectre es un ataque sincronizado de canal lateral​ aplicado al sistema de predicción de saltos de un microprocesador moderno que utilice ejecución fuera de orden. Si bien al nivel arquitectónico documentado en las hojas técnicas de los procesadores los resultados de un fallo en la predicción se especifican que quedarán anulados tras darse dicha circunstancia, la ejecución especulativa resultante puede aun así dejar efectos colaterales, como líneas de caché cargadas con determinada información.


  • Estos efectos colaterales pueden posteriormente afectar a los denominados aspectos no funcionales del sistema informático. Si tales efectos colaterales resultan visibles para un programa malicioso, y puede hacerse que esos efectos dependan de información sensible en posesión del proceso que hace las veces de víctima, entonces estos efectos colatelares pueden hacer que la información sensible resulte deducible. Esto puede ocurrir aunque los sistemas de seguridad formales a nivel de arquitectura funcionen de forma correcta.

¿Hay alguna solucion planteada?

La mayoria de fabricantes recomienda que el usuario active las actualizaciones automaticas de su SO y que siempre tenga el antivirus activado

No hay comentarios:

Publicar un comentario