Llegamos a ustedes gracias a:



Reportajes y análisis

Spectre y Meltdown: Qué son, cómo funcionan, qué está en riesgo

[16/01/2018] En los primeros días del 2018, una investigación publicada reveló que casi todos los chips de computadoras fabricados en los últimos 20 años contienen fallas de seguridad fundamentales, con variaciones específicas de esos defectos que se denominan Spectre y Meltdown. Las fallas surgen de las características incorporadas en los chips que los ayudan a funcionar más rápido, y aunque se tienen disponibles parches de software, pueden tener un impacto en el desempeño del sistema. Hasta el momento no hay evidencia de que estos defectos hayan sido explotados, pero esos exploits serían difíciles de detectar, y los defectos son tan fundamentales y generalizados que los investigadores de seguridad los consideran catastróficos.

¿Qué son Spectre y Meltdown?

Spectre y Meltdown son los nombres dados a diferentes variantes de la misma vulnerabilidad subyacente fundamental que afecta a casi todos los chips de computadora fabricados en los últimos 20 años; y podrían, si se explotan, permitir a los atacantes acceder a datos que anteriormente se consideraban completamente protegidos. Los investigadores de seguridad descubrieron los defectos a fines del 2017 y los publicaron a principios del 2018. Técnicamente, hay tres variaciones en la vulnerabilidad, cada una con su propio número CVE; dos de esas variantes se agrupan como Spectre y la tercera se denomina Meltdown.

Todas las variantes de esta vulnerabilidad subyacente implican que un programa malicioso obtiene acceso a datos que no deberían tener derecho a ver, y lo hacen explotando dos técnicas importantes utilizadas para acelerar los chips de computadora, llamadas ejecución especulativa y caching.

[Spectre y Meltdown: Cómo afectan a su PC, tableta y Smartphone]

¿Qué es la ejecución especulativa?

La ejecución especulativa implica esencialmente que un chip intenta predecir el futuro para trabajar más rápido. Si el chip sabe que un programa implica múltiples ramas lógicas, comenzará a calcular las matemáticas para todas esas ramas antes de que el programa tenga que decidir entre ellas. Por ejemplo, si el programa dice: "Si A es verdadero, calcula la función X; si A es falso, calcula la función Y, el chip puede comenzar a calcular ambas funciones X e Y en paralelo, incluso antes de saber si A es verdadero o falso. Una vez que sabe si A es verdadero o falso, ya tiene una ventaja sobre lo que viene después, lo que acelera el procesamiento en general. O, en otra variación, si un chip descubre que un programa hace uso de la misma función con frecuencia, puede usar el tiempo de inactividad para calcular esa función, incluso cuando no se le haya pedido, solo para que tenga a mano lo que cree que será la respuesta.

¿Qué es el caching?

Caching es una técnica utilizada para acelerar el acceso a la memoria. La CPU necesita un tiempo relativamente largo para obtener datos de la RAM, que reside en un chip separado, por lo que hay una pequeña cantidad especial de almacenamiento de memoria llamada caché de CPU que reside en el propio chip de la CPU y a la que se puede acceder muy rápidamente. Esta memoria se llena de datos que el chip necesitará pronto, o con frecuencia. Lo que es relevante para nuestra situación es que los datos generados por la ejecución especulativa a menudo se almacenan en la caché, que es parte de lo que hace que la ejecución especulativa refuerce la velocidad.

El problema surge cuando el caching y la ejecución especulativa comienzan a lidiar con la memoria protegida.

¿Qué es la memoria protegida?

La memoria protegida es uno de los conceptos fundamentales que subyacen a la seguridad de la computadora. En esencia, ningún proceso en una computadora debería poder acceder a los datos a menos que tenga permiso para hacerlo. Esto permite que un programa mantenga algunos de sus datos privados de algunos de sus usuarios, y permite que el sistema operativo evite que un programa vea datos pertenecientes a otro. Para acceder a los datos, un proceso debe someterse a una verificación de privilegios, que determina si se le permite o no ver esos datos.

Pero una verificación de privilegios puede demorar (relativamente) mucho tiempo. Entonces -y esta es la clave de la vulnerabilidad que estamos discutiendo- mientras la CPU está esperando averiguar si el proceso tiene permiso para acceder a esa información, gracias a la ejecución especulativa, comienza a trabajar con esos datos incluso antes de que reciba permiso para hacerlo. En teoría, esto sigue siendo seguro, porque los resultados de esa ejecución especulativa también están protegidos a nivel de hardware. El proceso no puede verlos hasta que pase la verificación de privilegios, y si no pasa la verificación, los datos se descartan.

El problema surge porque los datos protegidos se almacenan en la caché de la CPU, incluso si el proceso nunca recibe permiso para acceder a ellos. Y dado que se puede acceder a la memoria caché de la CPU más rápidamente que a la memoria normal, el proceso puede intentar acceder a ciertas ubicaciones de memoria para averiguar si los datos han sido almacenados en la caché -aún no podrá acceder a los datos, pero si los datos han sido almacenados en la caché, su intento de leerlo será rechazado mucho más rápido de lo que lo haría de otra manera. Es como darle golpecitos a una caja para ver si está vacía. Debido a la forma en que funciona la memoria de la computadora, el simple hecho de conocer las direcciones donde se almacenan los datos puede ayudarle a deducir qué son los datos. Esto es lo que se conoce como un ataque de canal lateral.

¿Cuál es la diferencia entre Spectre y Meltdown?

Si desea una descripción mucho más técnica de cómo funcionan Spectre y Meltdown, debería consultar la publicación en el sitio Project Zero de Google que fue la manera en que la mayor parte del mundo los conoció. Para decirlo en pocas palabras, tanto Spectre como Meltdown podrían permitir a los atacantes potenciales acceder a datos a los que no deberían tener acceso usando las técnicas descritas anteriormente, pero sus efectos son algo diferentes:

  • Meltdown recibió su nombre porque "derrite los límites de seguridad normalmente impuestos por el hardware. Al explotar Meltdown, un atacante puede usar un programa que se ejecuta en una máquina para obtener acceso a los datos de esa máquina que el programa normalmente no podría ver, incluidos los datos que pertenecen a otros programas y los datos a los que solo los administradores deberían tener acceso. Meltdown no requiere demasiado conocimiento sobre cómo funciona el programa que ataca el atacante, pero solo funciona con tipos específicos de chips de Intel. Este es un problema bastante grave, pero se están implementando correcciones.
  • Al explotar las variantes de Spectre, un atacante puede hacer que un programa revele algunos de sus propios datos que deberían haberse mantenido en secreto. Requiere de un conocimiento más profundo del funcionamiento interno del programa de la víctima, y no permite el acceso a los datos de otros programas, pero también funcionará en casi cualquier chip de computadora que exista. El nombre de Spectre proviene de la ejecución especulativa, pero también se deriva del hecho de que será mucho más complicado de detener -aunque ya comienzan a estar disponibles los parches, sin duda se descubrirán otros ataques de la misma familia. Esa es la otra razón del nombre: Spectre nos perseguirá por algún tiempo.

¿Por qué son peligrosos Spectre y Meltdown?

Spectre y Meltdown abren posibilidades para ataques peligrosos. Por ejemplo, el código JavaScript en un sitio web podría usar Spectre para engañar a un navegador web para que revele la información de usuario y contraseña. Los atacantes podrían explotar Meltdown para ver los datos propiedad de otros usuarios, e incluso otros servidores virtuales alojados en el mismo hardware, lo que es potencialmente desastroso para los hosts de computación en la nube.

Pero más allá de los propios ataques específicos potenciales radica el hecho de que los defectos son fundamentales para las plataformas de hardware que se ejecutan por debajo del software que usamos todos los días. Incluso el código que es formalmente seguro cuando se escribió resulta ser vulnerable, porque las suposiciones subyacentes a los procesos de seguridad incorporados en el código -de hecho, incorporados en toda la programación de las computadoras- han resultado ser falsas.

Parches de Spectre y Meltdown

La vulnerabilidad fundamental existe a nivel de hardware y no se puede parchar. Sin embargo, la mayoría de los proveedores están lanzando parches de software para dar solución a los problemas. El parche KAISER, desarrollado casualmente en el 2017 para mejorar la seguridad de Linux, en realidad tiene el efecto secundario de evitar los ataques de Meltdown. Los principales proveedores de nube han parchado sus servidores en gran medida. Los parches ya han sido desarrollados por Intel, Microsoft, Apple y Google (ver más abajo) y hay más en camino. Rendition Infosec tiene un gran recurso para establecer una estrategia para su organización que, entre otras cosas, fortalecerá sus sistemas y prácticas para evitar daños adicionales si es víctima de un ataque que explote Spectre o Meltdown.

Como JavaScript en el navegador es un vector particularmente peligroso para los ataques de Spectre, también es importante mantener sus navegadores actualizados.

En particular, los sistemas más antiguos, especialmente Windows XP, casi con seguridad nunca serán parchados. También quedan abandonados los millones de teléfonos Android de bajo costo que no reciben actualizaciones de seguridad de Google, muchos de los cuales no son particularmente viejos.

¿Cuándo recibirá mi PC, Mac, iPhone, teléfono Android o navegador un parche para Meltdown y Spectre?

  • Desde el 11 de enero, Microsoft ha lanzado parches de sistema operativo para la mayoría de las versiones de Windows desde Windows 7 en adelante, que también parchan los navegadores Internet Explorer y Edge de la empresa. El enlace anterior también incluye un resumen de enlaces a actualizaciones de firmware de fabricantes de hardware, que cubren a todos los principales actores. Sin embargo, algunos sistemas AMD después de descargar los parches no se reiniciaron, por lo que esos parches se han retirado por el momento.
  • Apple lanzó versiones parchadas de sus sistemas operativos macOS, iOS y tvOS, así como de su navegador Safari, el 3 de enero.
  • Google lanzó una lista de los modelos de Chromebook que han sido parchados o no necesitarán un parche (la mayoría de ellos), que se parcharán pronto, y que han llegado al final de su vida y no tendrán parche.
  • Firefox tiene un parche que se lanzará el 23 de enero, pero ahora está disponible en beta.
  • El navegador Chrome de Google tiene un parche que se lanzará el 23 de enero. Mientras tanto, puede activar la función experimental Site Isolation para protegerse.
  • La multiplicidad de teléfonos Android hace que sea difícil responder a la pregunta de si su teléfono Android está o será parchado. La mayoría de los teléfonos vendidos directamente por Google o por gigantes como Samsung están parchados o van a estarlo, pero muchos no lo estarán. La empresa italiana de intercambio RiCompo tiene un sitio que le mantiene al día sobre muchas marcas y modelos diferentes.

¿Los parches de Spectre y Meltdown perjudican el desempeño?

Estos parches generalmente mitigan las vulnerabilidades al alterar o deshabilitar la manera en que el código de software hace uso de las características de ejecución especulativa y caching integradas en el hardware subyacente. La desventaja de esto, por supuesto, es que estas características fueron diseñadas para mejorar el desempeño del sistema, por lo que trabajar sin ellas puede hacer que sus sistemas se desaceleren. Si bien hubo informes iniciales de impactos sobre el desempeño de hasta 30%, los benchmarks de Phoronix indican que 5% a 10% parece ser lo más generalizado.