Nueva vulnerabilidad de hardware en procesadores Intel

Te explicamos de forma breve y sencilla el nuevo método avanzado de robo de datos que utiliza las funciones de las CPU modernas.

Un grupo de investigadores de la Universidad de Maryland en los EE. UU. y la Universidad de Tsinghua en China publicaron un artículo científico que documenta un nuevo método de ataque de canal lateral que explota una vulnerabilidad de hardware previamente desconocida en los procesadores Intel. Aunque la vulnerabilidad parece afectar a los últimos procesadores del fabricante de chips, resulta más eficaz en el ataque contra modelos más antiguos que también están expuestos a la vulnerabilidad Meltdown. Esta investigación sería puramente de interés científico de no ser por un aspecto: los atacantes roban información confidencial al cambiar los datos del registro de estado.

En castellano, por favor

Las vulnerabilidades del procesador de hardware vinculadas a la ejecución especulativa de instrucciones han sido objeto de investigación durante más de cinco años. En resumen, todos los ataques propuestos se pueden resumir de la siguiente manera: la CPU se ve obligada de alguna forma a leer datos a los que el usuario no debería tener acceso. Imagínate que el programa de los atacantes no tiene acceso a la clave de cifrado utilizada para proteger los datos confidenciales. Si le indicamos a la CPU que “lea la clave de cifrado en una dirección determinada”, esta no seguirá la instrucción. La ayuda llega (al atacante) en forma de ejecución especulativa de instrucciones, una característica importante de las CPU modernas, que existe desde hace casi tres décadas: para acelerar las cosas, en lugar de esperar a que termine una instrucción, el procesador ejecuta la siguiente en paralelo.

Si la primera instrucción comprueba los derechos de acceso a información sensible, en teoría no debería permitir la ejecución de la siguiente instrucción para leer esta información. Pero ya es demasiado tarde: la siguiente instrucción se ejecuta de forma especulativa. Ten en cuenta que aún no tenemos acceso a estos datos, pero la CPU sí. En el caso de las vulnerabilidades conocidas como Spectre, los datos se cargan temporalmente en la memoria caché de la CPU, pero así no se pueden leer. Sin embargo, sí se pueden leer a través de canales laterales; por ejemplo, ejecutando repetidamente una instrucción, cuyo tiempo de procesamiento varía según los datos en la caché. Repetir una operación de este tipo muchas (incluso miles de) veces permite a los atacantes recuperar datos simplemente observando la rapidez o lentitud con la que se ejecuta un comando aparentemente inofensivo.

Somos conscientes de que esta descripción “simple” todavía suena complicada. El nuevo artículo es aún más desconcertante, especialmente porque los autores decidieron no realizar una descripción detallada del ataque. El siguiente diagrama lo describe en su totalidad:

Descripción general del canal lateral temporal de ejecución transitoria. Fuente: arxiv.org

Intentemos esclarecer el asunto. EFLAGS es un registro de bandera en el procesador Intel que realiza un seguimiento del estado operativo de la CPU. Puede almacenar el resultado de los cálculos, en particular si es igual a cero (la llamada bandera cero o ZF). Después, la magia entra en juego: imagínate que un compañero tuyo piensa en un número del 1 al 10 y le pides que no lo comparta con nadie. Continúas diciendo los números del 1 al 10 (buscando cualquier señal que pueda delatar a tu compañero), pero este no quiere compartir la respuesta correcta contigo y responde cada vez con la palabra “crisantemo”. Sin embargo, cuando pronuncias el número correcto, tarda un poco más en decir “crisantemo” en comparación con las otras veces.

Algo similar ocurre en este nuevo ataque: realizamos numerosos cálculos con datos sensibles. Todos estos cálculos se hacen de forma especulativa. El resultado se escribe en la bandera ZF (igual o no igual a cero). No podemos saber directamente el estado de esta, pero después ejecutamos una instrucción JCC bastante inútil (en concreto la instrucción JZ: “saltar si es cero”), que se ejecuta un poco más lento si acertamos. Y es este retraso en la respuesta lo que constituye la vulnerabilidad.

¿Dónde está el problema?

El aspecto más interesante de este ataque es que no funciona por sí solo. Para garantizar la ejecución especulativa de las instrucciones requeridas, los delincuentes deben explotar una vulnerabilidad más. El documento que estamos analizando utiliza la vulnerabilidad Meltdown, descubierta en el 2018, que brinda acceso a información que está fuera del alcance de los intrusos. Como resultado, los datos confidenciales se leyeron con un 100 % de eficiencia en todas las CPU antiguas afectadas por esta vulnerabilidad (el estudio utilizó Intel Core i7 de sexta y séptima generación). Aunque el experimento falló en las CPU de décima generación, también experimentan cierto retraso a la hora de ejecutar una instrucción determinada del conjunto JCC.

En realidad, los tipos de ataques aún más versátiles como Spectre, que roban información de la memoria caché de la CPU, tienen una aplicación bastante restringida. Pero al menos en su caso, resultaba obvio la necesidad de respuesta: la probabilidad de un ataque avanzado dirigido a datos críticos era distinta de cero. En cuanto al nuevo artículo, estamos lidiando más con la idea de que, si funciona, se aplica a los procesadores Intel más antiguos.

Pero la noticia en sí es significativa: existe un nuevo mecanismo de canal lateral para extraer datos utilizando el registro de estado de la bandera. No se puede descartar que en el futuro esta estrategia, combinada con alguna otra vulnerabilidad, también afecte a las nuevas CPU. O tal vez todo se resuelva antes de que veamos un nuevo ataque: después de todo, la dependencia del tiempo de ejecución de la instrucción en los datos es un problema bastante serio. Existe toda una subdisciplina de la criptografía que se ocupa de la protección de los algoritmos de cifrado contra los ataques temporales.

En cualquier caso, la investigación con toda la información sobre las CPU modernas sigue en curso. Por fortuna, ejecutar ataques contra vulnerabilidades de hardware resulta tan difícil como comprenderlas. Y, aunque todavía no hemos visto nada que pueda aplicarse a gran escala, sería prudente que los responsables de la seguridad de la información de las empresas que manejan datos altamente confidenciales tuvieran en cuenta estas amenazas y que, como mínimo, monitorizaran su evolución.

Fuente: latam.kaspersky.com

Disponible Qemu 6 con soporte para virtualización cifrada

QEMU 6, la última versión del conocido emulador de procesadores, ha sido publicado como estable con el propósito de seguir siendo uno de los principales pilares de la virtualización sobre GNU/Linux.

El desarrollo de QEMU es bastante activo, así que cada nueva versión mayor de este componente viene con una gran cantidad de novedades de interés. Para empezar mencionamos la inclusión del soporte para invitados cifrados con AMD SEV-ES, el soporte para la integridad del control de flujo de LLVM (CFI) y el hecho de que pueda ser compilado con optimizaciones de tiempo en enlace (LTO).

La interfaz gráfica de usuario (GUI) de QEMU con VNC soporta ahora los cursores con canales alfa y el soporte de VNC puede a partir de este lanzamiento redimensionar la resolución del escritorio de forma extendida. El modo VirtIO-VGA debería de hacer que la resolución de la pantalla del invitado se adapte a la ventana del cliente VNC al cambiar de tamaño.

ARM ha salido aparentemente bastante beneficiada de QEMU 6, ya que en este frente se ha agregado soporte para la emulación de la arquitectura ARMv8.1-M y los núcleos de procesador Cortex M55 y se ha añadido soporte para la emulación de extensiones como SEL2, TTST, DIT y MemTag.

QEMU 6 ha traído para PowerPC, entre otras cosas, soporte de controlador de gestión de la placa base (BMC) externo para el tipo de máquina ‘powernv’ y el hecho de que ahora las máquinas ‘pseries’ informan de los fallos de desconexión de memoria a las herramientas de administración, además de reintentarlo en caso de detectarse solicitudes de desconexión de CPU fallidas.

El controlador emulado de NVMe es compatible desde QEMU 6 con la versión 1.4 de la especificación y tiene soporte experimental par espacios de nombres (namespaces) zonificados, subsistemas de NVM y de protección de metadatos y de datos de extremo a extremo (end-to-end).

En lo que respecta al soporte para la emulación de la arquitectura MIPS, nos encontramos con la adición del tipo de máquina virtual Loongson-3, mientras que el soporte de Xen ha recibido un nuevo cargador de invitado que permite probar hipervisores similares a Xen que arrancan kernels sin perder el tiempo con el firmware y los cargadores de arranque.

Los que estén interesados en QEMU 6 pueden consultar el registro de cambios en la wiki del proyecto y descargarlo desde la correspondiente sección en el sitio web oficial.

Fuente: www.somoslibres.org


Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home1/uiolibre/public_html/wp-content/plugins/simple-lightbox/includes/class.utilities.php on line 545