Se rediseñara el kernel para combatir a Meltdown y Spectre
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 Spectreapenas 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.Fuente
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 anythingOR
– 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.