En este artículo vamos a tratar de enseñar a los usuarios con más precisión qué son los fallos Meltdown y Spectre, los cuales fueron encontrados al nivel de los procesadores y los mismos abarcan tres vulnerabilidades y afectan de forma diferente según sea el tipo de procesador.

Meltdown y Spectre son dos fallos de seguridad diferentes descubiertos por equipos de investigadores diferentes, con la excepción de que hay una empresa que ha tomado parte en ambos. El fallo Meltdown fue descubierto por investigadores de la Universidad Técnica de Graz, en Austria; la firma de seguridad alemana Cerberus Security; y Google Project Zero. Y el fallo Spectre fue descubierto por el investigador en seguridad independiente Paul Kocher y Google Project Zero.

En ambos fallos la característica es que se aprovechan del hecho de que los procesadores modernos ejecutan instrucciones de forma especulativa, por lo que al ejecutar las instrucciones correspondientes en caso de que una condición sea verdadera la toma y las descarta en caso de ser falsa. El predictor de saltos tiene una tabla llamada Branch Target Buffer (Buffer de salto objetivo) que se encarga de almacenar ciertas localizaciones como direcciones de salto, por lo que incluso las ubicaciones de memoria descartadas quedan almacenadas en una caché.

Meltdown

El fallo Meltdown tiene una vulnerabilidad, con código CVE-2017-5754 y ha sido el que ha impulsado la actualización de todos los sistemas operativos y se apoya en la ejecución especulativa para filtrar datos desde el núcleo (kernel) a los programas que suelen usar los usuarios.

Los procesadores de los fabricantes Intel, AMD y ARM llevan a cabo operaciones especulativas sobre los accesos a la memoria, sin embargo, los de Intel realizan esto de forma especialmente agresiva. La memoria de los sistemas operativos tienen unos metadatos asociados que determinan si se puede acceder desde los programas del usuario o si bien dicho acceso está restringido solo al núcleo.

Los procesadores de Intel permiten a los programas de los usuarios utilizar de forma especulativa datos del núcleo, haciendo que la comprobación de acceso por parte del programa del usuario ocurra un tiempo después de que la instrucción haya iniciado su ejecución. Es posible bloquear la ejecución especulativa correctamente, pero su impacto en la caché del procesador puede ser medido, abriendo la puerta a deducir los valores almacenados en la memoria del núcleo.

En los procesadores de AMD y ARM los investigadores no han sido capaces de llevar cabo el mismo tipo de ejecución especulativa sobre la memoria del núcleo, aunque no han descartado que se pueda realizar de alguna forma. La compañía AMD ha repetido en varias ocasiones que sus procesadores no especulan con las direcciones de la memoria del núcleo de la misma manera que sucede con los procesadores Intel los cuales permiten la explotación de Meltdown, mientras que desde ARM han reconocido que algunos modelos de sus procesadores son vulnerables y que para corregir el problema ya han publicado un parche para el núcleo Linux.

En el caso de los procesadores de Intel el problema viene desde los procesadores fabricados a partir del año 1995 y el asunto es más grave, debido a que cualquier memoria del núcleo puede ser leída por los programas del usuario. Para corregir el problema, han tenido que eliminar el mapeo del núcleo compartido, lo que trae como consecuencia la separación total de la memoria del núcleo y las aplicaciones ejecutadas por el usuario, además de la disminución en el rendimiento del sistema operativo, pues ahora cada cambio que se haga en la memoria del núcleo requerirá que sus páginas sean recargadas.

La compañía Intel dijo que la disminución en el rendimiento de sus procesadores dependería de la carga de trabajo, y va a depender del nivel de interacción que tenga la aplicación con el sistema operativo. Por ejemplo, aplicaciones pesadas como juegos de ultima generación no suelen interactuar mucho con el sistema operativo, por lo que su rendimiento no tendría que verse muy afectado. Ahora bien, las aplicaciones que interactúan con el sistema operativo de forma intensa, para generalmente realizar operaciones de disco duro o de red, posiblemente pueden terminar siendo disminuidas en su rendimiento en forma significativa.

Spectre

El fallo Spectre tiene dos vulnerabilidades, con códigos CVE-2017-5753 y CVE-2017-5715 y es un ataque de tipo más general basado en una mayor cantidad de características de la ejecución especulativa, por lo que puede ser llevado a cabo con éxito contra los procesadores de Intel, AMD y ARM.

Por ejemplo, el fallo Spectre puede ser ejecutado mediante la utilización de especulación sobre una matriz de comprobación de límites o instrucciones de salto para filtrar información. También además de la filtración de información del núcleo a los programas del usuario, puede ser utilizado desde hipervisores de virtualización hacia los sistemas invitados.

Lo peor en el fallo Spectre es que, aunque también es algo más complicado de explotar su solución no es tan sencilla como en el caso del fallo Meltdown, por lo que los parches que han estado disponibles hasta el momento para los distintos sistemas operativos todavía no lo corrigen. Esto es debido al hecho de que la especulación es necesaria para los procesadores de alto rendimiento, y aunque se podría bloquear la ejecución de ciertas operaciones especulativas, actualmente no se sabe cómo aplicar una técnica que evite cualquier fuga de información provocada por la ejecución especulativa.

Se pueden modificar ciertas piezas de código sensibles para incluir en ellas las instrucciones de serialización, las cuales obligan al procesador a esperar a que se finalicen todas las operaciones de lectura y de escritura en la memoria, para de esta forma evitar cualquier especulación en dichas operaciones.

La amenaza de Spectre es todavía más grave y prácticamente cualquier sistema operativo basado en arquitectura de procesadores Intel, AMD o ARM puede estar afectado. La diferencia fundamental con respecto a Meltdown es que no hay parches de software para Spectre, el cual, aunque puede ser más difícil de explotar por los hackers, también será mucho más complicado de erradicar.

Las compañías de procesadores Intel, AMD y ARM están investigando métodos para crear instrucciones para mitigar Spectre.

Fuente: ArsTechnica

Anuncios