Cargando

Ir a contenido

X

 


Proteger Linux o Windows de vulnerabilidades Spectre y Meltdown

Te enseñamos cómo proteger un servidor Linux o Windows 10, 8, 7, Server de vulnerabilidades Spectre o Meltdown. Videotutorial incluido.


Escrito por el ene 15 2018 11:59



Uno de los componentes fundamentales en cualquier equipo diseñado para usar un sistema operativo, sin importar su desarrollador, es el CPU o procesador el cual ha ido avanzando a pasos gigante ofreciéndonos nuevas velocidades de procesamiento, nuevas tecnologías, mas núcleos y todo esto con el fin de optimizar y mejorar el arranque del sistema y la ejecución de los programas que tenemos instalados allí.

 

Todo esto es innovador y nos llena de emoción cuando compramos un equipo con un excelente procesador ya que estamos seguros de que será una buena inversión pero que sucede si el procesador, sea Intel, AMD u otro, presenta dentro de su diseño vulnerabilidades de seguridad que ponen en riesgo nuestra información y nuestra confidencialidad, allí el tema cambia de rumbo y nos pone a pensar cómo es posible que suceda este tipo de situaciones en procesadores de renombre y de grandes compañías a nivel mundial.

 

Pues bien, esta vulnerabilidad es una realidad que fue descubierta hace algunos días, el día 4 de enero, donde se descubrieron las vulnerabilidades Spectre y Meltdown las cuales están ligadas al diseño del procesador donde se permite que un atacante pueda acceder a información del sistema y de la memoria donde se alojan elementos vitales como claves de cifrado o contraseñas.

 

Si eres de los que usa Firefox como navegador de internet debéis ejecutar esta nueva actualización de Mozilla (Firefox 57.0.4) que incluye parches de seguridad necesarios.

 

 

Lo peor de todo este asunto es que estas vulnerabilidades afectan a los procesadores Intel, ARM y AMD por lo cual todos estamos abiertos a ser víctimas de estas vulnerabilidades y por ello hoy en Solvetic analizaremos a fondo que son estas vulnerabilidades, como atacan y cómo podemos proteger nuestros servidores y equipos de ellas.

 

Recordemos que estas vulnerabilidades atacarán todo tipo de equipos tanto a nivel de hogar como de empresa y actualmente los parches que servirán para protegernos contra Spectre y Meltdown están siendo liberados por parte de los desarrolladores de sistemas operativos y aplicaciones.

 

 

Qué es Spectre

 

1-Spectre-linux.png

 

Spectre es una vulnerabilidad que tiene la capacidad de engañar al procesador con el fin de que inicie el proceso de ejecución especulativa debido a que los procesadores modernos hace uso de la predicción de rama (Branch prediction) y la ejecución especulativa permite maximizar el rendimiento del procesador.

 

Los ataques de Spectre permiten inducir a una víctima a especulativamente ejecutar ciertas operaciones que no ocurrirían durante la ejecución correcta del programa y esto permite que se filtre información confidencial a través de un canal lateral para el atacante de forma muy simple.

 

Los avisos de divulgación de estas vulnerabilidades han descubierto dos variantes con diferentes niveles de complejidad e impacto de Spectre en el procesador y con ello en la seguridad del usuario.

 

Estas variantes son:

 

Variante 1 (CVE-2017-5753)
Esta vulnerabilidad afecta los procesadores Intel, AMD y ARM, permitiendo que el atacante pueda engañar a los programas sin ningún tipo de error, siguiendo las mejores prácticas, para filtrar toda la información del usuario almacenada en el equipo.

 

Este fue descubierto el día 3 de enero del presente año por el equipo de Google Project Zero y esta variante hace un uso excesivo de la ejecución especulativa con el fin de realizar tareas de limit-check bypass lo cual provoca que el código del kernel sea redireccionado con el control del atacante de forma especulativa.

 

Una lista de los sistemas que pueden ser atacados por esta variante son:

  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise 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
  • Debian 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

 

Variante 2 (CVE-2017-5715)
Esta variante se encarga de desencadenar la ejecución especulativa haciendo uso de la inyección de destino de rama. Está basada en la presencia de una secuencia especifica de instrucciones definida con precisión en el código privilegiado, así como también en la situación de que los accesos a la memoria pueden causar la asignación en el caché de datos del microprocesador incluyendo instrucciones ejecutadas especulativamente que nunca se verán comprometidas.

 

Gracias a esta variante, un atacante sin ningún tipo de privilegios tendría la capacidad de cruzar los límites del sistema y el equipo para leer la memoria privilegiada realizando ataques de caché de canal lateral dirigidos y así ver penetrada la seguridad del usuario.

 

Los sistemas afectados son los mismos indicados anteriormente.

 

Para prevenir estas variantes en Linux podemos llevar a cabo el siguiente proceso.

 

En ambientes CentOS o RedHat en primer lugar ejecutamos las siguientes líneas:

uname -r
sudo yum update

2-Variante-2-(CVE-2017-5715).png

 

Una vez actualizado el sistema procedemos a reiniciar el sistema ejecutando la línea:

sudo reboot
Luego confirmamos que el kernel haya sido actualizado usando de nuevo el comando:
uname -r
Finalmente verificamos que las variantes estén aplicadas en el sistema ejecutando lo siguiente:
rpm -q --changelog kernel | egrep 'CVE-2017-5715|CVE-2017-5753|CVE-2017-5754'

 

En el caso de usar Ubuntu o Debian podemos ejecutar las siguientes líneas:

sudo apt-get update
sudo apt-get upgrade
sudo shutdown -r 0

 

Formas de ataque de Spectre
Spectre hace uso de algunas técnicas de ataque como son:
  • Explotando la ejecución especulativa. Con esta técnica, Spectre ataca la tarea del procesador a nivel de instrucciones de ejecución especulativa con secuencias que no deberían haberse ejecutado durante la correcta ejecución del programa y estas secuencias se revertirán finalmente creando instrucciones transitorias las cuales aprovecha el atacante para filtrar la información del usuario afectado.
  • Ataques usando código nativo:. Este ataque crea un programa que contiene datos secretos dentro de su memoria de acceso y una vez compilado este programa se analizan los binarios y las bibliotecas compartidas en el sistema con el fin de filtrar la información del usuario.

Finalmente se escribe otro programa de ataque que explota la función de ejecución especulativa de la CPU para llevar cabo las secuencias encontradas previamente como instrucciones transitorias.

  • Ataques usando JavaScript. Este ataque se usa para violar la zona de pruebas del navegador montando a través de él un código JavaScript portátil.

 

Hardware afectado por Spectre
Actualmente se ha descubierto que Spectre está en la capacidad de vulnerar hardware como:
  • Procesadores basados en Ivy Bridge
  • AMD Ryzen
  • Procesadores Intel
  • Procesadores Qualcomm

 

De modo resumido el ataque Spectre está compuesto de las siguientes fases:

  • Fase 1. En primer lugar, el ataque inicia con una fase de configuración, donde el adversario realiza operaciones que causan fallos en el procesador para que luego se pueda llevar acabo la explotación especulativa errónea.

Durante esta fase, el atacante puede preparar el canal lateral que será utilizado para extraer la información de la víctima.

  • Fase 2. En esta fase, el procesador especulativamente ejecuta una o más instrucciones que transfieren información confidencial del contexto de la víctima en una microarquitectura de canal lateral.

Esto permite que el atacante lleva a cabo una acción, como syscall, socket, y en otros casos el atacante puede aprovechar la ejecución especulativa de su propio código para obtener información sensible de el mismo proceso por parte del usuario.

  • Fase 3. En esta fase se recuperan los datos confidenciales de parte de Spectre usando técnicas como flush + reload o evict + reload. Este proceso de recuperación consiste en medir cuánto tardan las lecturas de las direcciones de memoria en las líneas de caché que se monitorea periódicamente.

 

 

 

Qué es Meltdown

 

4-Qué-es-Meltdown.png

 

El otro ataque que afecta la seguridad de los usuarios es Meltdown el cual permite a un atacante tener acceso a la información privada del usuario a través del sistema operativo instalado, como Microsoft Windows o High Sierra.

 

Su nombre ha sido asignado por la capacidad de vulnerar los límites de seguridad que normalmente impone el hardware del sistema.

 

La vulnerabilidad de Meltdown ha sido catalogada como CVE-2017-5754 donde se referencia que Meltdown tiene la capacidad de penetrar el aislamiento básico entre las aplicaciones de usuario y el sistema operativo sin importar cuál sea este. Este ataque permite que un programa acceda a la memoria y, con ello, también a la información confidencial de otros programas y del propio sistema operativo.

 

Esta fallo también fue descubierta el día 3 de enero por el equipo de Google Project Zero y otros equipos adicionales.
Esta vulnerabilidad afecta a los procesadores Intel x86-64 más no a los procesadores AMD x86-64.

 

Meltdown puede afectar sistema como:

  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux
  • Debian Linux wheezy
  • Debian Linux jessie
  • Debian Linux stretch
  • Deiban Linux buster, sid
  • SUSE Linux Enterprise 11
  • SUSE Linux Enterprise 12
  • OpenSuse Linux based upon SUSE 12/11
  • Fedora Linux 26
  • Fedora Linux 27
  • Amazon Linux AMI
  • Windows
Actualmente la solución para esta vulnerabilidad la tenemos para las siguientes distribuciones de Linux con su versión de kernel así:
  • RHEL 6.x [2.6.32-696.18.7]/7.x [3.10.0-693.11.6]
  • CentOS 6.x [2.6.32-696.18.7]/7.x [3.10.0-693.11.6]
  • Fedora 26 [4.14.11-200]/27 [4.14.11-300]
  • Debian stretch [4.9.0-5-amd64]/jessie [3.16.0-5-amd6]/wheezy [3.2.0-5-amd64]
  • CoreOS [4.14.11-coreos]
  • Arch Linux [update to current rolling]
  • Gentoo Linux [update to current rolling]
  • Ubuntu Linux v16.04 [4.4.0-109-generic o 4.13.0-26-generic]/v17.10 [4.13.0-25-generic]/14.04 [3.13.0-139-generic]
  • SUSE – SLES 12 SP3 [4.4.103-6.38.1]/SLES 12 SP2 [4.4.103-92.59.1]/SLES 11 SP4 [3.0.101-108.21.1]/SLES 11 SP3-LTSS [3.0.101-0.47.106.11.1]

 

Para protegernos de esta vulnerabilidad CVE-2017-5754 podemos ejecutar lo siguiente:

  • En CentOS y RedHat:
uname -r
sudo yum update
sudo reboot
  • En Fedora:
sudo dnf --refresh update kernel
  • En Debian y Ubuntu:
uname -r
sudo apt-get update
sudo apt-get dist-upgrade
sudo shutdown -r 0

 

Cómo funciona Meltdown
Recordemos que una de las características de seguridad central a nivel de operación en los sistemas operativos modernos es el aislamiento de memoria el cual asegura que las aplicaciones de los usuarios no tengan acceso a las memorias de los demás usuarios y programas y así evitar que las aplicaciones de los usuarios puedan leer o escribir en la memoria kernel.

 

En los procesadores modernos, el aislamiento entre el kernel y los procesos de usuario se ejecutan normalmente por un supervisor de bits del procesador el cual define si una memoria tiene la capacidad de acceder a la página del kernel o no.
Meltdown ha sido desarrollado como un nuevo ataque que tiene el poder de superar el aislamiento de la memoria completamente al proporcionar una forma simple para cualquier proceso de usuario que pueda leer la memoria kernel de la máquina en ejecución, incluyendo toda la memoria física asignada en la región del kernel.

 

Meltdown funciona en todos los principales sistemas operativos de hoy en día y esta vulnerabilidad explota la información del canal lateral disponible en la mayoría de los procesadores modernos como Intel o AMD.

 

Meltdown le da la capacidad a un atacante de ejecutar código en un procesador vulnerable con el fin de obtener un volcado de todo el kernel en el espacio de direcciones, incluyendo cualquier memoria física asignada.

 

La causa de la simplicidad y alcance de Meltdown son efectos secundarios causados ​​por la ejecución fuera de orden, es decir, es una característica de los procesadores actuales que se ha desarrollado para superar las latencias de unidades de ejecución ocupadas.

 

Las fases de trabajo de Meltdown son:

  • Fase 1. En esta fase se realiza una solicitud para una ubicación de memoria ilegal en el kernel del procesador.
  • Fase 2. En esta fase se lleva a cabo una segunda solicitud con el fin de leer condicionalmente una ubicación de memoria válida solo si la primera solicitud contiene un cierto valor activo.
  • Fase 3. En esta fase, se lleva a cabo la tarea de ejecución especulativa donde el procesador completa el trabajo en segundo plano para las dos solicitudes anteriores antes de verificar que la solicitud inicial no sea válida. Tan pronto el procesador comprenda que las solicitudes involucran memoria fuera de límites, niega ambas solicitudes.
  • Fase 4. Allí se realiza una nueva solicitud para la ubicación de memoria válida.

 

Así podemos definir lo siguiente con la vulnerabilidad Meltdown:

 

El contenido de una ubicación de memoria elegida por el atacante, el cual es inaccesible para el atacante, está cargado en un registro del sistema.

 

Una instrucción transitoria accede a una línea del caché basado en el contenido secreto del registro.

 

El atacante usa Flush + Reload para determinar el acceso a la línea de caché y, por tanto, tener acceso a la información almacenada en la ubicación de memoria elegida.

 

Una vez hemos comprendido como funcionan estas vulnerabilidades, vamos a ver como protegeremos nuestros equipos de ellas, aunque debemos aclarar que a la fecha no se ha reportado ningún ataque que conlleve preocupación tanto para los usuarios como a los administradores.

 

 

Para estar al día, recuerda suscribirte a nuestro canal de YouTube!   SUSCRIBETE

 

 


1. Cómo protegerse de Spectre y Meltdown en sistemas Linux


Para el caso de Linux, haremos uso de spectre-meltdown-checker.sh el cual es un script de shell para determinar si el kernel de Linux es vulnerable frente a los 3 CVEs que hemos mencionado de estas vulnerabilidades.

 

Nota
Este script debe ser ejecutado como usuario root.

 

Paso 1

Para instalar este script en primer lugar iremos a directorio /tmp así:
cd /tmp/
Paso 2

Una vez estemos en dicho directorio procedemos a obtener el script ejecutando la siguiente línea:
wget https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh

5-protegerse-de-Spectre-y-Meltdown.png

 

 

Nota
Otra opción de obtenerlo es ejecutando la siguiente línea:
git clone https://github.com/speed47/spectre-meltdown-checker.git

 

Cómo verificar si somos o no vulnerables a Spectre o Meltdown
Para comprobar la seguridad de nuestra distribución podemos ejecutar la siguiente línea:
sudo sh spectre-meltdown-checker.sh

6-vulnerables-a-Spectre-o-Meltdown'.png

 

 

Así de simple Podemos verificar si nuestro sistema es o no vulnerable a estas nuevas amenazas.

 

 


2. Cómo protegerse de Spectre y Meltdown en sistemas Windows


En este caso usaremos Windows 10 y para ello debemos acceder a Windows PowerShell como administradores dando clic derecho sobre la aplicación y seleccionando la opción “Ejecutar como administrador”.

 

Paso 1

Una vez sea abierta la terminal de PowerShell, procedemos a ejecutar la siguiente línea:
Install-Module SpeculationControl
Paso 2

En las preguntas desplegadas ingresaremos la letra S para confirmar:

 

 

 

 

 

 

 

Paso 3

La política de ejecución estándar de Windows no nos va a permitir ejecutar este script, para ello, con el fin de ejecutar el script, debemos guardar la configuración actual para que pueda ser restaurada más adelante y luego cambiar la política de ejecución para que se pueda ejecutar el script. Para esto ejecutaremos los siguientes dos comandos:
$SaveExecutionPolicy = Get-ExecutionPolicy
Set-ExecutionPolicy RemoteSigned -Scope Currentuser

 

Paso 4

Ahora, podremos ejecutar el script ejecutando lo siguiente:
Import-Module SpeculationControl
Get-SpeculationControlSettings

 

Paso 5

Podemos ver información detallada del sistema y debemos fijarnos en dos líneas en especial:

 

Windows OS support for branch target injection mitigation
Esta línea indica la actualización de software de Microsoft y si su valor es true significa que el equipo está protegido contra los ataques de Meltdown y Spectre.

 

Hardware support for branch target injection mitigation
Esta línea hace referencia a la actualización de firmware o BIOS / UEFI que se requiere del fabricante del equipo si su valor es true significa que estaremos protegidos contra la vulnerabilidad Spectre.

 

Paso 6

Para restablecer la política de ejecución a su configuración original después de haber comprobado la seguridad del sistema, podemos ejecutar la siguiente línea:
Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser

 

Paso 7

No esta demás recordar la importancia de mantener actualizado el sistema operativo ya que los desarrolladores estarán lanzando parches de seguridad para prevenir estas fallos de seguridad:

 

11-spectre-maltdown-prevenir.jpg

 

 


3. Información oficial de Spectre y Meltdown por fabricantes


En los siguientes enlaces podremos encontrar información sobre estas vulnerabilidades en cada uno de los sitios de los principales desarrolladores y así tener información más detallada sobre cómo prevenir y estar un paso adelante del problema:

 

Como vemos, aunque las vulnerabilidades siempre estarán presentes podemos tomar las medidas necesarias para estar atentos ante cualquier fallo y así evitar que nuestra información se vea afectada.

 

En este artículo vas a poder encontrar un conjunto de Anti-virus GRATUITOS para que no tengas tu ordenador desprotegido. Elige el tuyo!



Tutoriales Relacionados



Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!
10
VOTA
5
100%
4
0%
3
0%
2
0%
1
0%

  Información

  •   Publicado ene 15 2018 11:59
  •   Actualizado ene 15 2018 12:08
  •   Visitas 2.3K
  •   Nivel
    Profesional