Todo lo que necesitas saber sobre Meltdown / Spectre y como protegerte
Como ya han hecho público los medios, esta semana hemos vivido un absoluto revuelo a causa de dos vulnerabilidades que afectan masivamente a procesadores de todas las marcas (aunque Intel se lleva la peor parte) y a «grosso modo» a cualquier dispositivo con procesador aparecido en los últimos 20 años.
En mi último artículo te explico como verificar si tu equipo está actualizado frente a estos fallos mediante el uso de Powershell
Sin embargo se trata de dos vulnerabilidades bien diferenciadas y con alcances y gravedad diferentes, así que vamos a hablar brevemente sobre ambos
Meltdown vs Spectre, Intel, ARM y AMD
1. Vulnerabilidad Meltdown
Está relacionada con el contexto de seguridad de la CPU que se encarga de las ejecuciones «fuera de límites», neutralizando de este modo el modelo de seguridad basado en aislamiento de espacio de memoria que los procesos deben respetar para funcionar de forma segura e independiente. También afecta a la paravirtualización que utilizan plataformas de contenedores, por ejemplo Docker.
Los procesadores de Intel (como tantos otros) utilizan lo que se denomina «ejecución especulativa» y «predicción indirecta de rama», permitiendo una filtración potencial de información a un atacante con acceso local mediante el análisis de un canal lateral.
Los expertos ya han comenzado a dar muestras de lo sencillo que resulta explotar este fallo de seguridad:
En resumidas cuentas, la vulnerabilidad de nombre Meltdown permitiría a cualquier aplicación leer cualquier espacio de memoria previamente mapeado, incluyendo a nivel del «kernel». Más información sobre Meltdown.
2. Vulnerabilidad Spectre
Por su parte, Spectre es un tipo de vulnerabilidad algo distinta y que afecta a rama la predicción o especulación y permitiría a las aplicaciones leer igualmente la memoria del kernel. Es decir, que en esencia producen los mismos resultados pero llegan mediante caminos diferentes.
Es importante reseñar que estas dos vulnerabilidades afectan a la capa de hardware, por lo que son comparativamente mucho más difíciles de solucionar dado que parchear un software es más sencillo como todos sabemos.
Los dispositivos futuros dejarán atrás estos problemas pero para los cientos de millones de equipos basados en procesadores comunes el problema, normalmente, será minimizado mediante la eliminación/limitación de acceso a ciertas instrucciones de CPU. Esto sin embargo no ofrece una garantía de seguridad del 100%.
¿Quién es vulnerable a Meltdown y Spectre?
- Spectre incluye un bypass de chequeo de límites con CVE-2017-5753 y una serie de inyecciones de «branch target» discutidas en CVE-2017-5715. Afecta a Intel, ARM y un pequeño porcentaje de procesadores AMD.
- Meltdown afecta masivamente a Intel y representa una carga maliciosa de caché de datos recogida en CVE-2017-5754
Estas vulnerabilidades permiten al atacante leer la memoria «protegida» de sistema y que en condiciones normales no debería permitir acceso a un programa externo. Meltdown actúa más rápido en este sentido que Spectre (unos 120 Kb/s). Ambas vulnerabilidades son explotables tras reinicios de sistema, aunque el «branch target injection» requiere un mínimo de 10 minutos para inicializarse en sistemas con 64 GB de memoria RAM (el tiempo aumenta en función de la cantidad de RAM instalada).
A continuación copio el detalle ofrecido por el instituto Carnegie Mellon sobre proveedores afectados,
Amazon | Affected | – | 05 Jan 2018 |
AMD | Affected | – | 03 Jan 2018 |
Android Open Source Project | Affected | – | 05 Jan 2018 |
Apple | Affected | – | 04 Jan 2018 |
Arm | Affected | – | 03 Jan 2018 |
CentOS | Affected | – | 05 Jan 2018 |
Cisco | Affected | – | 05 Jan 2018 |
Citrix | Affected | – | 05 Jan 2018 |
Debian GNU/Linux | Affected | – | 05 Jan 2018 |
Fedora Project | Affected | – | 05 Jan 2018 |
Fortinet, Inc. | Affected | – | 05 Jan 2018 |
FreeBSD Project | Affected | – | 05 Jan 2018 |
Affected | – | 03 Jan 2018 | |
IBM Corporation | Affected | – | 05 Jan 2018 |
Intel | Affected | – | 05 Jan 2018 |
Spectre
Volviendo a las plataformas afectadas, el bypass de «chequeo de límites» para los procesos de sistema puede ser explotado en los 3 principales fabricantes de procesadores del mundo: Intel, ARM y AMD. Existe una prueba de concepto desarrollada en Java para explotar la vulnerabilidad, demostrando que permite acceso al proceso del navegador local.
Eso en cuanto a procesos sin proteger. En cuanto a la lectura de la memoria del kernel tanto Intel como AMD están afectados, aunque de forma diferente:
- La prueba es satisfactoria en procesadores de AMD con BPF JIT habilitado en el kernel de Linux (debe hacerse manualmente y no es la configuración por defecto) así que podemos decir que, en principio, los procesadores de la firma se libran bastante del problema.
- En equipos basados en Intel no importa el estado de BPF JIT, simplemente son vulnerables.
Meltdown
Los procesadores de AMD no son vulnerables a este fallo de seguridad, como tampoco lo son los de ARM. Se ha modificado un parche previamente desarrollado para el kernel de Linux y, de esta forma, AMD ha quedado excluída del problema.
Todos los procesadores de Intel están afectados por Meltdown y Spectre a excepción de los de serie «Atom» previos a 2013 y de la serie Itanium.
Listado de CPUs Intel afectadas por Meltdown
- Intel® Core™ i3 processor (45nm and 32nm)
- Intel® Core™ i5 processor (45nm and 32nm)
- Intel® Core™ i7 processor (45nm and 32nm)
- Intel® Core™ M processor family (45nm and 32nm)
- 2nd generation Intel® Core™ processors
- 3rd generation Intel® Core™ processors
- 4th generation Intel® Core™ processors
- 5th generation Intel® Core™ processors
- 6th generation Intel® Core™ processors
- 7th generation Intel® Core™ processors
- 8th generation Intel® Core™ processors
- Intel® Core™ X-series Processor Family for Intel® X99 platforms
- Intel® Core™ X-series Processor Family for Intel® X299 platforms
- Intel® Xeon® processor 3400 series
- Intel® Xeon® processor 3600 series
- Intel® Xeon® processor 5500 series
- Intel® Xeon® processor 5600 series
- Intel® Xeon® processor 6500 series
- Intel® Xeon® processor 7500 series
- Intel® Xeon® Processor E3 Family
- Intel® Xeon® Processor E3 v2 Family
- Intel® Xeon® Processor E3 v3 Family
- Intel® Xeon® Processor E3 v4 Family
- Intel® Xeon® Processor E3 v5 Family
- Intel® Xeon® Processor E3 v6 Family
- Intel® Xeon® Processor E5 Family
- Intel® Xeon® Processor E5 v2 Family
- Intel® Xeon® Processor E5 v3 Family
- Intel® Xeon® Processor E5 v4 Family
- Intel® Xeon® Processor E7 Family
- Intel® Xeon® Processor E7 v2 Family
- Intel® Xeon® Processor E7 v3 Family
- Intel® Xeon® Processor E7 v4 Family
- Intel® Xeon® Processor Scalable Family
- Intel® Xeon Phi™ Processor 3200, 5200, 7200 Series
- Intel® Atom™ Processor C Series
- Intel® Atom™ Processor E Series
- Intel® Atom™ Processor A Series
- Intel® Atom™ Processor x3 Series
- Intel® Atom™ Processor Z Series
- Intel® Celeron® Processor J Series
- Intel® Celeron® Processor N Series
- Intel® Pentium® Processor J Series
- Intel® Pentium® Processor N Series
¿Consecuencias en el rendimiento?
Gran parte de la conmoción generada por estos fallos viene por la sospecha de que se produzca una eventual degradación de la capacidad de proceso de millones de procesadores y sistemas en la nube que todos usamos a diario. El hecho de tener que separar la capa de kernel de la de usuario (por simplificarlo un poco) implica que el sistema tenga que pasar más tiempo gestionando asignaciones de memoria y muchos han estimado una horquilla del 5% al 30% de pérdida de rendimiento.
Dependiendo de la carga de trabajo y el empleo del sistema podemos esperar más o menos consecuencias. Por ejemplo, se ha estimado una pérdida de rendimiento en máquinas virtuales (dedicadas a manejar procesos Apache, PostgreSQL y Redis) de un 10%, en las pruebas realizadas en Phoronix. En los test sintéticos los resultados han sido algo más abultados.
¿Cómo protegerse de Meltdown?
Sistemas Windows
Microsoft lanzó el viernes varios parches de seguridad fuera de ciclo para tapar las vulnerabilidades encontradas en procesadores de Intel, ARM y AMD. Para las versiones más recientes de Windows 10 (Build 16299.192) se ha liberado el parche KB4056892,
Mientras los siguientes han sido lanzados para las ediciones anteriores de Windows 10.
- Windows 10 version 1703 (Creators Update): KB4056891
- Windows 10 version 1607 (Anniversary Update): KB4056890
- Windows 10 version 1511 (November Update): KB4056888
- Windows 10 version 1507 (Initial Release): KB4056893
Parches para sistemas Windows anteriores a Windows 10
Estos y los anteriormente mencionados pueden además ser descargados desde Windows Update Catalog, así como los referentes a Internet Explorer 11.
Sistemas operativos Linux
Aquí tenéis una lista detallada de todas las distribuciones Linux que deberían ser parcheadas ASAP:
- Red Hat Enterprise Linux 5 (including clones such as CentOS/Oracle/Scientific Linux 5)
- Red Hat Enterprise Linux 6 (including clones such as CentOS/Oracle/Scientific Linux 6)
- Red Hat Enterprise Linux 7 (including clones such as CentOS/Oracle/Scientific Linux 7)
- RHEV-M 4.0
- RHEV-M for Servers
- Red Hat Enterprise Linux OpenStack Platform 7.0 (Kilo) for RHEL 7
- Red Hat Enterprise Linux OpenStack Platform 6.0 (Juno) for RHEL 7
- Red Hat Enterprise MRG 2
- Red Hat OpenStack Platform v 8/9/10/11/12
- Debian Linux wheezy
- Debian Linux jessie
- Debian Linux stretch
- Deiban Linux buster, sid
- SUSE Linux Enterprise Server for Raspberry Pi 12 SP2
- SUSE OpenStack Cloud 6
- Openstack Cloud Magnum Orchestration 7
- SUSE Container as a Service Platform ALL
- SUSE Linux Enterprise High Availability 12 SP2/SP3
- SUSE Linux Enterprise Live Patching 12
- SUSE Linux Enterprise Module for Public Cloud 12
- SUSE Linux Enterprise Server 11 SP3-LTSS
- SUSE Linux Enterprise Server 11 SP4
- SUSE Linux Enterprise Software Development Kit 11/12 SP3/SP4
- SUSE Linux Enterprise for SAP 12 SP1
- SUSE Linux Enterprise 11
- SUSE Linux Enterprise 12
- OpenSuse Linux based upon SUSE 12/11
- Fedora Linux 26
- Fedora Linux 27
- Amazon Linux AMI (Bulletin ID: ALAS-2018-939)
Pasos a realizar
Primero realizaremos (preferiblemente) un backup del sistema por si algo sale mal.
Ahora comprobaremos la versión del kernel instalado con:
uname -r
O también podemos utilizar
cat /etc/*release
Ahora, dependiendo de la distribución y el gestor de paquetes que tengamos lanzaremos el comando apropiado para actualizar nuestro sistema:
CentOS/RHEL/Fedora/Oracle/Scientific Linux
sudo yum update
En Fedora usaremos lo siguiente:
sudo dnf --refresh update kernel
O bien:
sudo dnf update
Para verificar su correcto parcheo, deberemos recibir datos al lanzar el siguiente comando:
rpm -q --changelog kernel | egrep 'CVE-2017-5715|CVE-2017-5753|CVE-2017-5754'
En Ubuntu / Debian
Actualizaremos repositorios:
sudo apt-get update
Actualizaremos:
sudo apt-get upgrade
Pasos para Arch Linux
Usaremos el gestor de paquetes pacman:
pacman -Syu reboot
En todos los casos será necesario reiniciar el sistema para que los cambios tengan efecto.
Verificar protección frente a Meltdown y Spectre en SUSE Linux / Enterprise Server
Los expertos de SUSE han estado publicando nuevos parches para el kernel de sus distribuciones basadas en Linux durante los últimos días. Hasta la fecha una buena parte de sus productos han sido protegidos, aunque no todos, así que estad atentos a nuevas actualizaciones.
La empresa mantiene un post constantemente actualizado donde se explican los productos afectados, versiones de kernel actualizadas y métodos para verificar la protección de los procesadores.
Una vez actualizado el kernel de nuestro sistema, podemos comprobar el directorio /proc/cpuinfo en busca del valor «kaiser», así como «pti» o «spec_ctrl». En función de la salida obtenida podemos considerar:
‘kaiser‘ o ‘pti‘ aparecen, significa que la versión 3 de protección (Meltdown) está presente.
‘spec_ctrl‘ aparece, significa que la versión 1/2 de protección (Spectre) está presente.
NOTA: Kaiser aparece en versiones Suse Linux Enterprise 12, mientras que la versión SLE 15 usará la bandera pti.
Actualizado a 8/01/2017
¿Cómo saber si estoy afectado por Meltdown o Spectre rápidamente?
- Visita la web https://www.amiaffectedbyspectre.com/ y tendrás una respuesta bien clara y rápida. Eso sí, solo detecta si el modelo de CPU es susceptible de ser vulnerado (si ya has aplicado parches puedes obviar un resultado positivo). Cortesía de un desarrollador español.
- Accede a Github y descarga el siguiente script para detectar Meltdown/Spectre en equipos basados en GNU/Linux o UNIX. Podrás saber rápidamente si te toca o no actualizar.
Lista de CPUs ARM afectadas por la vulnerabilidad
En el siguiente advisory podéis encontrar la lista completa de equipos ARM vulnerables (imagen inferior) además de los pasos a seguir para instalar el nuevo microcódigo / firmware que parchea el fallo. No es posible en todos los sistemas operativos, por ejemplo los usuarios de Android tendrán que consultar a Google acerca de su kernel.
Comunicado de AMD sobre la vulnerabilidad
La vulnerabilidad que afecta a la «ejecución especulativa» o Spectre ha tenido la siguiente respuesta por parte de AMD, básicamente lo que hemos citado previamente en este artículo, confirmando que AMD solo es claramente vulnerable a uno de los tipos de ataque, mientras que es muy improbable que sea al segundo y en absoluto es vulnerable a Meltdown.
Categories
deweloper View All
Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.