Spectre (vulnerabilidad)

Spectre es una vulnerabilidad en las implementaciones de la predicción de saltos que afecta a los microprocesadores modernos que incorporan ejecución especulativa.[1][2]​ Puesto que la ejecución especulativa que utilizan la mayoría de procesadores afecta al caché de datos, los programas que aceptan peticiones pueden ser engañados para leer información privada y, en consecuencia, modificar el estado del caché de datos. Un programa atacante presente en el mismo sistema puede entonces acceder a la información del caché de datos para descubrir la información privada.[3][4][5]

Spectre
Spectre with text.svg
Logotipo empleado por el equipo que descubrió la vulnerabilidad
Información
Alias CVE-2017-5715
CVE-2017-5753
Tipo Intel, AMD, ARM, POWER, PowerPC
Subtipo Procesadores con ejecución especulativa
Sistema operativo AIX, Android, iOS, GNU/Linux, Mac OS, tvOS, Windows
[editar datos en Wikidata]

Se han emitido dos ID de Vulnerabilidades y Exposiciones Comunes (siglas en inglés CVE) relacionados con Spectre, CVE-2017-5753 y CVE-2017-5715 (puenteamiento de la comprobación de límites, inyección de destino del salto). CVE-2017-5753 depende de que esté activada la compilación JIT. Se ha descubierto que los motores JIT empleados para JavaScript son vulnerables. Un sitio web podría leer información guardada en el navegador que pertenece a otro sitio web, o acceder a información alojada en la memoria que está utilizando el navegador.[6]

Se han publicado varios procedimientos para ayudar a proteger las computadoras personales y otros dispositivos relacionados contra las vulnerabilidades de seguridad Spectre y Meltdown.[7][8][9][10]​ Se ha informado de que los parches para Spectre degradan de forma significativa el rendimiento, especialmente en los ordenadores más antiguos; en las nuevas plataformas de octava generación se han medido caídas de rendimiento de entre un 2 y un 14 %.[11]​ Los parches para Meltdown pueden producir también una pérdida de rendimiento.[4][12][13]

Índice

HistoriaEditar

Spectre fue descubierto de forma independiente por Jann Horn del Proyecto Cero de Google y por Paul Kocher en colaboración con Daniel Genkin, Mike Hamburg, Moritz Lipp y Yuval Yarom. El departamento de investigación de vulnerabilidades de Microsoft (MSVR) amplió los sistemas afectados a los motores JIT JavaScript de los navegadores web.[3][14]​ La vulnerabilidad se hizo pública junto con otra, Meltdown, el de 3 enero de 2018, una vez que los fabricantes del hardware afectado tuvieron conocimiento del problema el 1 de junio de 2017.[15]

La vulnerabilidad fue denominada "Spectre" (espectro) porque «está basada en la causa de base, la ejecución especulativa. Puesto que no es fácil de corregir, será algo que nos persiga durante mucho tiempo [como un fantasma]».[16]

Explicación detalladaEditar

Spectre es una vulnerabilidad que obliga a los programas alojados en el sistema operativo del usuario a acceder a una ubicación arbitraria en el espacio de memoria del programa.

En lugar de una sola vulnerabilidad fácil de corregir, el documento original de Spectre[17]​ describe toda una clase[18]​ de vulnerabilidades potenciales. Todas ellas se basan en explotar los efectos secundarios de la ejecución especulativa, un medio común de compensar la latencia de la memoria y así acelerar la ejecución en los microprocesadores modernos. En particular, Spectre se centra en la predicción de saltos, que es un caso especial de la ejecución especulativa. A diferencia de la vulnerabilidad Meltdown revelada al mismo tiempo, Spectre no se basa en una característica específica del sistema de protección o gestión de memoria de un procesador en concreto, sino que tiene un enfoque más generalista.

El punto de partida del documento técnico es el de un ataque coordinado de canal lateral[19]​ aplicado al sistema de predicción de saltos de los microprocesadores modernos que incluyen ejecución fuera de orden. Si bien al nivel de la arquitectura documentado en las hojas técnicas de los procesadores los resultados de una predicción errónea se especifica que deben ser declarados nulos, la ejecución especulativa resultante puede aún así tener importantes efectos colaterales, como la carga de información en líneas de caché. Esta información puede posteriormente afectar a los denominados aspectos no funcionales del entorno informático. Si tales efectos colaterales —incluyendo, entre otros, la sincronización del acceso a la memoria— son visibles para un programa malicioso, y puede hacerse que dependan de información sensible en poder del proceso de la víctima, entonces estos efectos colaterales pueden conducir a que la información sensible quede expuesta. Esto puede suceder aún en el caso de que la seguridad formal a nivel de arquitectura funcione tal como fue diseñada para hacerlo; en este caso, las optimizaciones a bajo nivel y de microarquitectura sobre la ejecución de código pueden revelar información no esencial para que la ejecución normal del programa sea la correcta.

El documento técnico de Spectre muestra el ataque en cuatro pasos esenciales:

  1. En primer lugar, muestra que la lógica de predicción de saltos en los procesadores modernos puede ser entrenada para acertar o fallar de manera sistemática según dicte el funcionamiento interno de un programa malicioso.
  2. A continuación, muestra que la siguiente diferencia entre los aciertos y fallos del caché puede ser cronometrada de forma fiable, de modo que lo que debería haber sido una simple diferencia no funcional, puede de hecho traducirse en un canal encubierto que extrae información acerca del funcionamiento interno de un proceso no relacionado.
  3. En tercer lugar, el documento sintetiza los resultados con vulnerabilidades en la programación orientada a retorno y otros principios mediante un simple programa de ejemplo y también un fragmento de código JavaScript ejecutado bajo un navegador dentro de un entorno aislado; en ambos casos, se demuestra que todo el espacio de direcciones del proceso de la víctima (es decir, el contenido de un programa que se está ejecutando) se vuelve legible simplemente explotando la ejecución especulativa de ramas condicionales en código generado por un compilador normal y corriente, o bien el motor JavaScript presente en un navegador web común. La idea básica consiste en buscar en el código existente lugares donde la especulación tiene contacto con datos que de otro modo serían inaccesibles, manipular el procesador para ponerlo en un estado en el que la ejecución especulativa tiene que tocar esos datos, y entonces cronometrar el efecto colateral de que el procesador ha sido más rápido puesto que su motor de prelectura ha cargado una línea del caché.
  4. Finalmente, el documento concluye generalizando el ataque a cualquier estado no funcional del proceso de la víctima, y menciona brevemente incluso efectos no funcionales y nada obvios como la latencia en el arbitraje del bus.

La diferencia básica entre Spectre y Meltdown radica en que Spectre puede utilizarse para manipular un proceso de tal modo que revele su propia información. Por otro lado, Meltdown puede utilizarse para leer de memoria no autorizada perteneciente al espacio de direcciones de un proceso, incluso cuando el propio proceso normalmente no podría acceder a ella (en algunos sistemas operativos no protegidos, esto incluye información perteneciente al núcleo o a otros procesos).

La documentación técnica de Meltdown distingue ambas vulnerabilidades de este modo: «Meltdown es distinto de los ataques de Spectre de varias maneras; sobre todo, Spectre necesita adecuarse al entorno de software donde corre el proceso de la víctima, pero afecta a una gama más amplia de CPUs y no se ve afectado por KAISER».[20]

ImpactoEditar

Desde 2018, casi todos los sistemas informáticos están potencialmente afectados por Spectre, incluidos los equipos de sobremesa, portátiles y dispositivos móviles. Específicamente, se ha demostrado que Spectre funciona en procesadores Intel, AMD, los basados en ARM y los de IBM.[21][22][23]​ Intel respondió a las vulnerabilidades de seguridad reportadas con una declaración oficial.[24]​ Según un comunicado de AMD, la vulnerabilidad a una de las dos variantes de Spectre no se había demostrado en sus procesadores. Acerca de este particular, AMD aseguró inicialmente que el riesgo de explotación es «casi nulo» debido a las diferencias en la arquitectura de sus procesadores,[25]​ pero aun así ha empezado a distribuir una actualización de microcódigo y parches del sistema operativo que califica como «opcionales», y ha corregido su afirmación a que es «difícil de explotar» la variante dos en sus procesadores.[26]

Los investigadores han indicado que la vulnerabilidad Spectre puede afectar posiblemente a algunos procesadores Intel, AMD y ARM.[27][28][29][30]​ Concretamente, los procesadores con ejecución especulativa son los afectados por estas vulnerabilidades.[31]

ARM ha informado de que la mayoría de sus procesadores no son vulnerables, y ha publicado una lista de los procesadores en concreto que sí están afectados por la vulnerabilidad Spectre: Cortex-R7, Cortex-R8, Cortex-A8, Cortex-A9, Cortex-A15, Cortex-A17, Cortex-A57, Cortex-A72, Cortex-A73 y Cortex-A75.[32]

Una gran parte de los teléfonos móviles Android actuales de gama media utilizan Cortex-A53 y Cortex-A55 de ocho núcleos y no están afectados ni por Meltdown ni por Spectre, ya que no realizan ejecución fuera de orden. Esto incluye también a los dispositivos que utilizan un sistema en chip Snapdragon 630, Snapdragon 626, Snapdragon 625 de Qualcomm, y todos los procesadores Snapdragon 4xx basados en los núcleos A53 y A55.[33]​ Los sistemas Raspberry Pi no son vulnerables a Meltdown ni a Spectre.[34]

En la actualidad, solo se ha demostrado que Spectre funciona entre programas de nivel de usuario, pero parece probable que el ataque pueda desarrollarse aún más. Aunque es más difícil de utilizar correctamente que Meltdown, las defensas contra Spectre pueden ser mucho más difíciles de implantar debido a su generalidad. El artículo técnico original incluso especula con que podrían ser necesarios cambios significativos en la arquitectura de los microprocesadores para eliminar completamente el problema.

Además, Spectre tiene el potencial de tener un mayor impacto en los proveedores de la nube que Meltdown. Mientras que Meltdown permite a las aplicaciones no autorizadas leer desde una memoria privilegiada para obtener datos confidenciales de procesos que se ejecutan en el mismo servidor en nube, Spectre puede permitir que programas maliciosos induzcan a un hipervisor a transmitir los datos a un sistema invitado que se ejecute en él,[35]​ como es el caso de una máquina virtual.

MitigaciónEditar

Puesto que Spectre representa una clase entera de ataques, lo más probable es que no pueda haber un único parche general para él.[2]​ Aunque ya se está trabajando para abordar casos especiales de la vulnerabilidad, el sitio web original dedicado a Spectre y Meltdown afirma que «dado que [Spectre] no es fácil de arreglar, nos perseguirá durante mucho tiempo».[3]

En cualquier caso, se han reportado varios procedimientos a seguir para proteger los ordenadores domésticos y dispositivos relacionados frente a Meltdown y Spectre.[7][8][9][10]​ Se ha informado de que los parches para Spectre degradan el rendimiento, especialmente en los ordenadores más antiguos; en las nuevas plataformas de octava generación se han medido caídas de rendimiento de entre un 2 y un 14 % realizando pruebas de referencia.[11]

La explotación a través de Javascript incrustado en los sitios web es posible.[17]Chrome 64 incluirá por defecto mitigaciones contra el ataque, y los usuarios de Chrome 63 pueden mitigar manualmente el ataque activando la función Strict Site Isolation (chrome://flags#enable-site-per-process).[36]​ A partir de Firefox 57, Mozilla está reduciendo la resolución de los temporizadores JavaScript para ayudar a prevenir ataques sincronizados, y está trabajando y planificando técnicas de ofuscación de tiempos para futuras versiones.[37]​ Alternativamente, se puede evitar la explotación basada en navegadores web desactivando JavaScript (p. ej. NoScript).[cita requerida]

El 4 de enero de 2018 Google detalló una nueva técnica en su blog de seguridad llamada retpoline —contracción en inglés de return trampoline— que puede detener la vulnerabilidad Spectre añadiendo una sobrecarga insignificante para el procesador, y consiste en dirigir a nivel del compilador las ramas indirectas hacia un destino distinto, de forma que no pueda tener lugar una ejecución especulativa fuera de orden que sea vulnerable.[38][39]​ Aunque se desarrolló para el juego de instrucciones de los procesadores x86, los ingenieros de Google creen que la técnica también es transferible a otros procesadores.[40]

También se ha sugerido[41]​ que el coste de la mitigación puede aliviarse en procesadores que soporten la limpieza selectiva del TLB, una característica también conocida como identificador de contexto de proceso (PCID) en la arquitectura Intel 64, y número de espacio de dirección (ASN) en la arquitectura Alpha. Esto se debe a que la limpieza selectiva hace que el comportamiento del TLB que resulta crucial para la vulnerabilidad se aisle entre procesos, sin estar constantemente limpiando el TLB en su totalidad, principal motivo del coste de la mitigación.

Problemas en las medidas de mitigaciónEditar

Existen numerosos informes de que el parche de Microsoft KB4056892 para mitigar Meltdown y Spectre está causando que algunas computadoras con procesadores AMD no puedan iniciar el sistema operativo;[42][43]​ el problema parece afectar en particular a las computadoras con procesadores de la gama AMD Athlon.[44]​ El 9 de enero de 2018, Microsoft detuvo la distribución de la actualización para los sistemas con las CPU afectadas mientras investigan cómo solucionar este fallo.[45]

ReferenciasEditar

  1. Greenberg, Andy (3 de enero de 2018). «A Critical Intel Flaw Breaks Basic Security for Most Computers». Wired (en inglés). Archivado desde el original el 3 de enero de 2018. Consultado el 3 de enero de 2018. 
  2. a b Bright, Peter (5 de enero de 2018). «Meltdown and Spectre: Here's what Intel, Apple, Microsoft, others are doing about it». Ars Technica (en inglés). Consultado el 6 de enero de 2018. 
  3. a b c Staff (2018). «Meltdown and Spectre». Universidad Tecnológica de Graz (en inglés). Archivado desde el original el 3 de enero de 2018. Consultado el 3 de enero de 2018. 
  4. a b Metz, Cade; Perlroth, Nicole (3 de enero de 2018). «Researchers Discover Two Major Flaws in the World's Computers». The New York Times (en inglés estadounidense). ISSN 0362-4331. Archivado desde el original el 3 de enero de 2018. Consultado el 3 de enero de 2018. 
  5. Warren, Tom (3 de enero de 2018). «Intel's processors have a security bug and the fix could slow down PCs». The Verge (en inglés). Archivado desde el original el 3 de enero de 2018. Consultado el 3 de enero de 2018. 
  6. https://www.theregister.co.uk/2018/01/04/intel_amd_arm_cpu_vulnerability/ Meltdown, Spectre: The password theft bugs at the heart of Intel CPUs, The Register, 4 de enero de 2018.
  7. a b Metz, Cade; Chen, Brian X. (4 de enero de 2018). «What You Need to Do Because of Flaws in Computer Chips». The New York Times (en inglés). Consultado el 5 de enero de 2018. 
  8. a b Pressman, Aaron (5 de enero de 2018). «Why Your Web Browser May Be Most Vulnerable to Spectre and What to Do About It». Fortune (en inglés). Consultado el 5 de enero de 2018. 
  9. a b Chacos, Brad (4 de enero de 2018). «How to protect your PC from the major Meltdown and Spectre CPU flaws». PC World (en inglés). Archivado desde el original el 4 de enero de 2018. Consultado el 4 de enero de 2018. 
  10. a b Elliot, Matt (4 de enero de 2018). «Security – How to protect your PC against the Intel chip flaw – Here are the steps to take to keep your Windows laptop or PC safe from Meltdown and Spectre.». CNET (en inglés). Archivado desde el original el 4 de enero de 2018. Consultado el 4 de enero de 2018. 
  11. a b Hachman, Mark (9 de enero de 2018). «Microsoft tests show Spectre patches drag down performance on older PCs». PC World (en inglés). Consultado el 9 de enero de 2018. 
  12. «Computer chip scare: What you need to know». BBC News (en inglés). January 4 de enero de 2018. Consultado el 4 de enero de 2018. 
  13. «Intel says processor bug isn't unique to its chips and performance issues are 'workload-dependent'». The Verge (en inglés). Consultado el 4 de enero de 2018. 
  14. Mozilla Foundation Security Advisory 2018-01
  15. Gibbs, Samuel (4 de enero de 2018). «Meltdown and Spectre: 'worst ever' CPU bugs affect virtually all computers» (en inglés). The Guardian. Archivado desde el original el 6 de enero de 2018. Consultado el 6 de enero de 2018. 
  16. https://spectreattack.com/
  17. a b «Spectre Attacks: Exploiting Speculative Execution» (en inglés). 2018. Archivado desde el original el 3 de enero de 2018. 
  18. «Reading privileged memory with a side-channel» (en inglés). 2018. Archivado desde el original el 4 de enero de 2018. 
  19. «Mitigations landing for new class of timing attack» (en inglés). 2018. Archivado desde el original el 4 de enero de 2018. 
  20. «Meltdown» (en inglés). 2018. Archivado desde el original el 4 de enero de 2018. 
  21. Staff (2018). «Meltdown and Spectre-faq-systems-spectre». Universidad Tecnológica de Graz (en inglés). Archivado desde el original el 3 de enero de 2018. Consultado el 4 de enero de 2018. 
  22. Busvine, Douglas; Nellis, Stephen (3 de enero de 2018). «Security flaws put virtually all phones, computers at risk». Reuters (en inglés). Thomson-Reuters. Archivado desde el original el 3 de enero de 2018. Consultado el 3 de enero de 2018. 
  23. «Potential Impact on Processors in the POWER family» (en inglés). 2018. 
  24. Staff (3 de enero de 2018). «Intel Responds To Security Research Findings». Intel (en inglés). Archivado desde el original el 3 de enero de 2018. Consultado el 4 de enero de 2018. 
  25. «An Update on AMD Processor Security». Advanced Micro Devices (en inglés). 2018. Archivado desde el original el 4 de enero de 2018. Consultado el 4 de enero de 2018. 
  26. «AMD Processor Security | AMD». www.amd.com (en inglés). Consultado el 2018-01-12. 
  27. «Who's affected by computer chip security flaw» (en inglés). 
  28. «Kernel-memory-leaking Intel processor design flaw forces Linux, Windows redesign» (en inglés). 
  29. Staff (2018). «Meltdown and Spectre-faq-systems-spectre». Universidad Tecnológica de Graz (en inglés). Consultado el 4 de enero de 2018. 
  30. Busvine, Douglas; Nellis, Stephen (3 de enero de 2018). «Security flaws put virtually all phones, computers at risk». Reuters (en inglés). Thomson-Reuters. Consultado el 3 de enero de 2018. 
  31. «Today's CPU vulnerability: what you need to know» (en inglés). 
  32. «Arm Processor Security Update». ARM Developer (en inglés). ARM Ltd. January 3, 2018. Consultado el 5 de enero de 2018. 
  33. Sims, Gary (4 de enero de 2018). «'Spectre' and 'Meltdown': New CPU vulnerabilities affect most smartphones and computers». Android Authority (en inglés). 
  34. «Why Raspberry Pi isn’t vulnerable to Spectre or Meltdown». raspberrypi.org (en inglés). Raspbery Pi. 5 de enero de 2018. Consultado el 5 de enero de 2018. 
  35. Fox-Brewster, Thomas (3 de enero de 2018). «Massive Intel Vulnerabilities Just Landed -- And Every PC User On The Planet May Need To Update». Forbes (en inglés). Forbes Media LLC. Archivado desde el original el 3 de enero de 2018. Consultado el 3 de enero de 2018. 
  36. «Google's Mitigations Against CPU Speculative Execution Attack Methods». support.google.com (en inglés). Archivado desde el original el 3 de enero de 2018. Consultado el 4 de enero de 2018. 
  37. «Mitigations landing for new class of timing attack». Mozilla Security Blog (en inglés estadounidense). Archivado desde el original el 4 de enero de 2018. Consultado el 4 de enero de 2018. 
  38. «More details about mitigations for the CPU Speculative Execution issue» (en inglés). Archivado desde el original el 5 de enero de 2018. 
  39. «Google Says CPU Patches Cause 'Negligible Impact On Performance' With New 'Retpoline' Technique – Slashdot». tech.slashdot.org (en inglés). 
  40. «Retpoline: a software construct for preventing branch-target-injection – Google Help». support.google.com (en inglés). Archivado desde el original el 5 de enero de 2018. 
  41. «How Will the Meltdown and Spectre Flaws Affect My PC?». How-To Geek (en inglés). 
  42. «Warning: Microsoft's Meltdown and Spectre patch is bricking some AMD PCs». betanews.com (en inglés). Consultado el 2018-01-09. 
  43. Tung, Liam. «Windows Meltdown-Spectre update: Some AMD PC owners post crash reports | ZDNet». ZDNet (en inglés). Consultado el 2018-01-09. 
  44. Brown, Aaron (2018-01-08). «Windows 10 WARNING: Some users unable to boot PCs after emergency Meltdown-Spectre patch». Express.co.uk (en inglés). Consultado el 2018-01-09. «According to the complaints, it appears the problems are most prevalent in AMD Athlon systems [...]». 
  45. «Bloqueo de las actualizaciones de seguridad del sistema operativo Windows para algunos dispositivos basados en AMD». support.microsoft.com. Consultado el 12 de enero de 2018. 

Enlaces externosEditar