El Linux Kernel se rediseña para combatir a Meltdown y Spectre

por | 4 enero, 2018

Varios equipos de investigación independientes han descubierto Meltdown y Spectre, unas graves vulnerabilidades que afectan a la mayoría de procesadores (desde 1995). Un fallo de diseño en el hardware, que se da con especial incidencia en los chips desarrollados por Intel.

Son fallos de seguridad de tipo catastrófico, que afectan a los principales sistemas operativos. Por tanto a millones de dispositivos (tanto ordenadores como móviles), además de todo tipo de servicios en la nube y de tipo virtual. Lo suficiente para poner en estado de alerta a medio Silicon Valley, los hackers del kernel incluidos.

En spectreattack nos dan amplia información de ambos ataques, incluyendo enlaces a sus diferentes papers. Pero resumiendo la cuestión:

  • Spectre: permite robar contenido engañando a aplicaciones para que filtren información. Un poco de JavaScript en una web y dejar que Chrome o Firefox hagan el resto. Por lo que sabemos hasta ahora, no es una ataque que se pueda prevenir por completo, mediante simples modificaciones de software.
  • Meltdown: rompe las barreras del hardware y permite acceder a todos los contenidos de la memoria, que deberían ser inaccesibles. Es decir, derrite cualquier barrera de seguridad entre los programas y el núcleo. Un caso posible de ejecución sería que alguien alquilara un espacio en la nube, en un hosting compartido y se hiciera con las credenciales de todos los demás (de una casa de cambio de criptomonedas por ej.). Servicios como Amazon, ya están recomendando a sus clientes que actualicen su software para solucionar este fallo.

Ambos errores tienen su raíz en el procesador, en el uso de una técnica conocida como ejecución especulativa, que predice la ejecución de un programa y se utiliza para mejorar el rendimiento.

Se considera que Spectre es más difícil de explotar, pero también de mitigar. Además existen diferentes variantes de ejecución. Navegadores como Chrome y Firefox son vulnerables al mismo y están trabajando en solucionarlo.

Las soluciones propuestas degradan el rendimiento, especialmente en el caso de Meltdown que afecta a Intel (entre un 5-30% dependiendo del tipo de uso y equipo). Mientras que Spectre apenas incide en el desempeño del procesador, pero además de Intel también concierne a AMD y ARM.

Otras arquitecturas como IBM System Z, POWER8 (Big Endian y Little Endian), y POWER9 (Little Endian), también están afectadas.

Tanto Intel como AMD y ARM han publicado diversas notas dando respuesta a esta cuestión. Recomiendo leerlas con una pizca de espíritu crítico, porque en ellas hay mucho –especialmente en el caso de Intel– de relaciones públicas y cubrirse ante cualquier tipo de reclamación.

Estos fallos además de que deberían obligar a un rediseño del hardware de futuros chips, suponen la incorporación de nuevas medidas de seguridad al kernel de Linux, con un coste negativo en cuanto al rendimiento de la CPU.

En concreto de KPTI (Kernel Page Table Isolation), previamente conocido como KAISER o en plan ya más coloquial como FUCKWIT («Forcefully Unmap Complete Kernel With Interrupt Trampolines»).

Se trata de un parche para Meltdown –que complementa otras defensas proactivas como ASLR–, el cual ya ha sido incluido en Linux 4.14.11 y otras versiones LTS anteriores (4.9.74, 4.4.109, 3.16.52, 3.18.91, 3.2.97).

KPTI aísla mejor el espacio de usuario del espacio de memoria del núcleo, separando su tablas de paginación completamente. Lo que antes era compartido, ahora son dos sets de tablas diferentes.

Esto trae como consecuencia una disminución del rendimiento (aquí tenéis una comparativa con PostgreSQL). Algo que dependerá de la cantidad de llamadas al sistema, dado que con KPTI se está purgando continuamente el uso de la memoria cache (TLB). Linus Torvalds lo estima en un 5%, pero también comenta que en las CPU viejas –que no incluyen PCID– el impacto será mayor.

Destacar que esta implementación no es incluida en procesadores AMD, ya que tal como nos recuerda este parche (mejor publicidad imposible), dicho fabricante no se ve afectado por Meldown.

setup_force_cpu_cap(X86_FEATURE_ALWAYS);
 
-	/* Assume for now that ALL x86 CPUs are insecure */
-	setup_force_cpu_bug(X86_BUG_CPU_INSECURE);
+	if (c->x86_vendor != X86_VENDOR_AMD)
+		setup_force_cpu_bug(X86_BUG_CPU_INSECURE);

En cuanto a Intel, la verdad no podemos estar nada contentos con su seguridad en los últimos tiempos. Al backdoor de Intel ME ahora se le suma esto. A Torvalds tampoco le hace gracia:

I think somebody inside of Intel needs to really take a long hard look
at their CPU’s, and actually admit that they have issues instead of
writing PR blurbs that say that everything works as designed.

.. and that really means that all these mitigation patches should be
written with «not all CPU’s are crap» in mind.

Or is Intel basically saying «we are committed to selling you shit
forever and ever, and never fixing anything»?

Because if that’s the case, maybe we should start looking towards the
ARM64 people more.

Please talk to management. Because I really see exactly two possibibilities:
– Intel never intends to fix anything

OR

– these workarounds should have a way to disable them.

Which of the two is it?

Aparte de diversas pruebas de concepto que ya han sido publicadas, no se conoce que Meltdown y Spectre hayan sido utilizados «in the wild».

De todas maneras habrá que estar atento a los acontecimientos en próximas fechas, tanto del lado de desarrollo de nuevas contramedidas, como el posible impacto que tenga en el rendimiento de nuestros equipos.

20 pensamientos en “El Linux Kernel se rediseña para combatir a Meltdown y Spectre

  1. D'Artagnan

    Todo esto me parece deprimente y el caso es que siempre estamos igual.
    Anda, deja información personal o privada en tu ordenador o en la nube o donde te venga en gana que ya te arreglarán el cuerpo. No digo mas pero lo estoy pensando. Ah! y en W. es peor ¿eh?, pero muchísimo peor y eso que nos han calentado bien, pero bien con UEFI o EFI. . . lo dicho deprimente.

    Responder
  2. fermman

    Pues yo voy entrando al portal de azure y mantenimiento obligado (a punta de: ya lo hicimos por que quisimos), ahora a trabajar en todo lo on premise, Y como ya comentaron, deprimente versus lo que cuestan.

    Responder
  3. Percaff_TI99

    Pensar que si tuviera que recomendar una marca de chips yo me inclinaba por Intel por sobre AMD, más que nada por el hecho de que la primera colabora más en el código abierto, sobre todo en lo que refiere a tarjetas gráficas, no existen tanto inconvenientes. Hoy en día ya no se que recomendar, ni siquiera sabría que hacer yo mismo en caso de comprar un nuevo hardware. Son cosas que decepcionan lamentablemente.

    En el caso de los usuarios de Chrome hay un método -no es una solución definitiva- para reducir los ataques. En la barra de navegación escribimos:

    chrome://flags/#enable-site-per-process

    y habilitamos la opción. Esto lo que hace es aislar una página web en su propio espacio impidiendo el acceso al resto del sistema. Yo no lo he probado, no puedo predecir si la implementación afecta el rendimiento de Chrome.

    Saludos.

    Responder
    1. tannhausser Autor

      También se ven afectados pero depende del modelo de procesador.

      Puesto que ARM domina ambos mercados (o eso creo), un buen sitio para comprobarlo es aquí:

      https://developer.arm.com/support/security-update

      Con el internet de las cosas, dado que son un desastre a la hora de las actualizaciones, siempre existe el peligro de que se arme un bonito botnet.

      Responder
  4. carlosky77

    En mi próxima compra de notebook está claro se será una CPU AMD pero aún no me convence comprarme una ATI como GPU. Podrían dejarme sus comentarios si realmente son fáciles de configurarla o es todo un problema porque tuve una Intel con Nvidia y configurar bumblebee fue todo un desastre. Al final vendí ese notebook y me compré el que tengo actualmente.

    Responder
      1. carlosky77

        La maldita costumbre. A pesar que es correcto lo que escribe pero aún no actualizo el chip en mi cerebro. Lo mismo pasa con kde y plasma.

        Responder
  5. linxther

    Hola, me podrían indicar cuales son las diferencias de kernel en linux yo tengo el 4.4.0.104 y nose que kernle debo instalar, mi pc algo viejita.. saludos.

    Responder
    1. tannhausser Autor

      Supongo que Linux 4.4.109. Pero no te preocupes demasiado de eso, pronto te llegará una actualización de tu distro, relativa al kernel.

      Saludos!!

      Responder
    1. indiolinux

      Añadiría además que la mayoría de usuarios son ingenuos, aunque muchos hace rato se creen expertos.
      Me refiero a que confían en que no hay espionaje o si se les comprueba que hay, pregonan que no importa. Claro que importa o de lo contrario, no invertirían tanto esfuerzo humano y dinero en ello. Snowden se tiró su relajada vida advirtiendo a todo el que quisiera oír que el gobierno de EStados Unidos se dedica al espionaje puro y duro, pero lamentablemente son pocos los que quieren escuchar

      Responder
  6. Lennart

    Los fallos estan mal explicados, por favor lean los papers. Las noticias son puros ^C ^V confundiendo y mezclando cosas.

    Responder
  7. x-man

    Ya ordene un ábaco (abacus) en Amazon, …voy a tirar el PC, Laptop Tablet y Cell por la balcón. ..LOL.

    Responder

Responder a nasher_87(ARG)Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.