Como se parchea la vulnerabilidad Spectre y Meltdown en Linux CVE-2017-5753 / CVE-2017-5715 / CVE-2017–5754
El 3 de enero del 2018 fue descubierto un problema de seguridad muy serio en los microprocesadores Intel / AMD / ARM. Los sistemas con microprocesadores Intel, AMD y ARM pueden permitir la divulgación no autorizada de información a un atacante con acceso de usuario local. Esto puede ser posible a través de un análisis de canal lateral y de la cache de datos del procesador.
A estas vulnerabilidades se le han asignado los códigos de identificación CVE-2017–5753 / CVE-2017–5715 / CVE-2017–5754
¿Cuál es el error de seguridad en Intel / AMD / ARM ?
Hasta ahora, hay tres variantes conocidas del problema:
Variante 1: bounds check bypass (CVE-2017–5753)
Variante 2: branch target injection (CVE-2017–5715)
Variante 3: rogue data cache load ( CVE-2017–5754 )
Las dos primeras variantes abusan de la ejecución especulativa para realizar limit-check bypass (CVE-2017–5753), o mediante la utilización de la inyección de destino de bifurcación (CVE-2017–5715), para provocar que el código del kernel en una dirección bajo control del atacante se ejecute especulativamente.
En conjunto, estos se conocen como “Spectre”. Ambas variantes dependen de la presencia de una secuencia de instrucción definida con precisión en el código privilegiado, así como del hecho de que los accesos a memoria pueden causar la asignación en el caché de datos de nivel 1 del microprocesador incluso para instrucciones ejecutadas especulativamente que nunca se comprometen (retiran).
Como resultado, un atacante sin privilegios podría usar estos dos defectos para leer la memoria privilegiada mediante la realización de ataques de caché de canal lateral. Estas variantes podrían usarse no solo para cruzar el límite del syscall (variante 1 y variante 2) sino también el límite huésped / anfitrión (variante 2).
La variante CVE-2017–5754 se basa en el hecho de que rompe el aislamiento más fundamental entre las aplicaciones de usuario y el sistema operativo. Este ataque permite que un programa acceda a la memoria y, por lo tanto, también a los registros secretos de otros programas y del sistema operativo.
Nota: CVE-2017–5754 afecta a los microprocesadores Intel x86–64. Los microprocesadores AMD x86–64 no se ven afectados por este problema.
Para ver la explotación de esta vulnerabilidad de forma mas sencilla podemos observar el siguiente vídeo:
Una lista de la distribución de Linux afectada por la Vulnerabilidad Spectre
- Red Hat Enterprise Linux 5 (incluidos clones como CentOS / Oracle / Scientific Linux 5)
- Red Hat Enterprise Linux 6 (incluidos clones como CentOS / Oracle / Scientific Linux 6)
- Red Hat Enterprise Linux 7 (incluidos clones como CentOS / Oracle / Scientific Linux 7)
- RHEV-M 4.0
- RHEV-M para servidores
- Red Hat Enterprise Linux OpenStack Platform 7.0 (Kilo) para RHEL 7
- Red Hat Enterprise Linux OpenStack Platform 6.0 (Juno) para RHEL 7
- Red Hat Enterprise MRG 2
- Red Hat OpenStack Platform v 8/9/10/11/12
- Debian Linux wheezy
- Debian Linux jessie
- Estiramiento Debian Linux
- Deiban Linux Buster, Sid
- SUSE Linux Enterprise Server para Raspberry Pi 12 SP2
- SUSE OpenStack Cloud 6
- Openstack Cloud Magnum Orchestration 7
- SUSE Container como plataforma de servicio ALL
- SUSE Linux Enterprise High Availability 12 SP2 / SP3
- SUSE Linux Enterprise Live Patching 12
- Módulo SUSE Linux Enterprise para la nube pública 12
- SUSE Linux Enterprise Server 11 SP3-LTSS
- SUSE Linux Enterprise Server 11 SP4
- Kit de desarrollo de software SUSE Linux Enterprise 11/12 SP3 / SP4
- SUSE Linux Enterprise para SAP 12 SP1
- SUSE Linux Enterprise 11
- SUSE Linux Enterprise 12
- OpenSuse Linux basado en SUSE 12/11
- Fedora Linux 26
- Fedora Linux 27
- Amazon Linux AMI (ID del boletín: ALAS-2018–939)
Es importante tener en cuenta que este evento de seguridad afecta a muchos diseños modernos de microprocesadores y la información puede cambiar rápidamente a medida que avanza el evento.
Si bien las actualizaciones AWS / Google y otras aplicaciones en la nube protegen la infraestructura subyacente, para estar completamente protegido contra estos problemas, también debe aplicar parches a los sistemas operativos de su instancia, incluidas las distribuciones de Linux, MS-Windows y el sistema operativo de escritorio, como macOS, Windows y más .
Antes de actualizar el sistema …
Primero, siempre mantenga copias de seguridad. En segundo lugar, anote la versión del kernel de Linux que ejecuta el siguiente comando:
$ uname -r
Parcheando en un CentOS / RHEL / Fedora / Oracle / Scientific Linux
Escriba el siguiente comando yum : Salidas de muestra (desde el SO RHEL 7.x):
$ uname -r
3.10.0-693.11.1.el7.x86_64
$ sudo yum update
Resolviendo dependencias
-> Ejecutando cheque de transacción
---> Se instalará el paquete kernel.x86_64 0 : 3.10.0-693.11.6.el7
---> Paquete kernel-tools.x86_64 0 : 3.10.0-693.11.1.el7 se actualizará
---> Paquete kernel-tools.x86_64 0 : 3.10.0-693.11.6.el7 será una actualización
---> Paquete kernel-tools-libs.x86_64 0 : 3.10.0-693.11.1.el7 se actualizará
---> Paquete kernel-tools-libs.x86_64 0 : 3.10.0-693.11.6.el7 será una actualización
-> Resolución de Dependencia Terminada
Dependencias resueltas
= ==============================================
Tamaño del repositorio de la versión del archivo del paquete
= ==============================================
Instalación:
kernel x86_64 3.10.0-693.11.6.el7 rhui-rhel- 7 -server-rhui-rpms 43 M
Actualización:
kernel-tools x86_64 3.10.0-693.11.6.el7 rhui-rhel- 7 -server-rhui-rpms 5.1 M
kernel-tools-libs x86_64 3.10.0-693.11.6.el7 rhui-rhel- 7 -server-rhui-rpms 5.1 M
Resumen de Transacciones
= ==============================================
Instala 1 paquete
Actualizar 2 paquetes
Tamaño total de la descarga: 53 M
Está bien [ y / d / N ] : y
Paquetes de descarga:
Delta RPMs deshabilitados porque / usr / bin / applydeltarpm no está instalado.
( 1 / 3 ) : kernel-herramientas-3.10.0-693.11.6.el7.x86_64.rpm | 5.1 MB 00:00:00
( 2 / 3 ) : kernel-tools-libs-3.10.0-693.11.6.el7.x86_64.rpm | 5.1 MB 00:00:00
( 3 / 3 ) : kernel-3.10.0-693.11.6.el7.x86_64.rpm | 43 MB 00:00:00
-------------------------------------------------- ---------------------------------------
Total 65 MB / s | 53 MB 00:00
Ejecutando cheque de transacción
Ejecutando prueba de transacción
Prueba de transacción exitosa
Ejecutando transacción
Actualización: kernel-tools-libs-3.10.0-693.11.6.el7.x86_64 1 / 5
Actualización: kernel-tools-3.10.0-693.11.6.el7.x86_64 2 / 5
Instalación: kernel-3.10.0- 693.11.6.el7.x86_64 3 / 5
Cleanup: kernel-tools-3.10.0-693.11.1.el7.x86_64 4 / 5
limpieza: kernel-tools-libs-3.10.0-693.11.1.el7.x86_64 5 / 5
Verificación: kernel-tools-libs-3.10.0-693.11.6.el7.x86_64 1 / 5
Verificación: kernel-tools-3.10.0-693.11.6.el7.x86_64 2 / 5
Verificación: kernel-3.10.0-693.11.6.el7.x86_64 3 / 5
Verificación: kernel-tools-3.10.0-693.11. 1.el7.x86_64 4 / 5
Verificación: kernel-tools-libs-3.10.0-693.11.1.el7.x86_64 5 / 5
Instalado:
kernel.x86_64 0 : 3.10.0-693.11.6.el7
Actualizado:
kernel-tools.x86_64 0 : 3.10.0-693.11.6.el7
kernel-tools-libs.x86_64 0 : 3.10.0-693.11.6.el7
¡Completar!
Debe reiniciar su servidor Linux utilizando el comando shutdown / reboot: Verifique los 3 CVE (debe ver el resultado: Salidas de muestra:
$ sudo reboot
$ uname -r
3.10.0-693.11.6.el7.x86_64
$ rpm -q --changelog kernel | egrep 'CVE-2017-5715|CVE-2017-5753|CVE-2017-5754'
- [ x86 ] spec_ctrl: Eliminar los mensajes redundantes FEATURE Not Present ( Andrea Arcangeli ) [ 1519795 1519798 ] { CVE- 2017 - 5715 }
- [ x86 ] mm / kaiser: init_tss se supone que debe ir en la sección PAGE_ALIGNED por CPU ( Andrea Arcangeli ) [ 1519795 1519798 ] { CVE- 2017 - 5715 }
....
...
- [ x86 ] entrada: Fix paranoid_exit ( ) trampoline clobber ( Josh Poimboeuf ) [ 1519795 1519798 ] { CVE- 2017 - 5715 CVE- 2017 - 5754 }
- [ x86 ] entrada: Simplificar el código de restauración de la pila trampolín ( Josh Poimboeuf ) [ 1519795 1519798 ] { CVE- 2017 - 5715 CVE- 2017 - 5754 }
....
..
- [ x86 ] cpu / AMD: eliminar ahora la definición no utilizada de la función MFENCE_RDTSC ( Josh Poimboeuf ) [ 1519788 1519786 ] { CVE- 2017 - 5753 }
- [ x86 ] cpu / AMD: Hacer la instrucción LFENCE serializada ( Josh Poimboeuf ) [ 1519788 1519786 ] { CVE- 2017 - 5753 }
Ejecute el siguiente comando dnf si está utilizando un Fedora Linux: $ sudo dnf --refresh update kernel
O sudo dnf update
$ sudo reboot
Parcheando en un Debian / Ubuntu Linux
Use el siguiente comando apt-get comando / apt :
Use the following apt-get /apt:$ uname -r
4.9.0-4-amd64
$ sudo apt-get update
## better run the following instead of 'sudo apt-get upgrade'
$ sudo apt-get dist-upgrade
Sample outputs:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
linux-image-4.9.0-5-amd64
The following packages will be upgraded:
linux-image-amd64
1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/38.8 MB of archives.
After this operation, 190 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Reading changelogs... Done
Selecting previously unselected package linux-image-4.9.0-5-amd64.
(Reading database ... 28066 files and directories currently installed.)
Preparing to unpack .../linux-image-4.9.0-5-amd64_4.9.65-3+deb9u2_amd64.deb ...
Unpacking linux-image-4.9.0-5-amd64 (4.9.65-3+deb9u2) ...
Preparing to unpack .../linux-image-amd64_4.9+80+deb9u3_amd64.deb ...
Unpacking linux-image-amd64 (4.9+80+deb9u3) over (4.9+80+deb9u2) ...
Setting up linux-image-4.9.0-5-amd64 (4.9.65-3+deb9u2) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.9.0-4-amd64
I: /initrd.img.old is now a symlink to boot/initrd.img-4.9.0-4-amd64
I: /vmlinuz is now a symlink to boot/vmlinuz-4.9.0-5-amd64
I: /initrd.img is now a symlink to boot/initrd.img-4.9.0-5-amd64
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.9.0-5-amd64
/etc/kernel/postinst.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.9.0-5-amd64
Found initrd image: /boot/initrd.img-4.9.0-5-amd64
Found linux image: /boot/vmlinuz-4.9.0-4-amd64
Found initrd image: /boot/initrd.img-4.9.0-4-amd64
Found linux image: /boot/vmlinuz-4.9.0-3-amd64
Found initrd image: /boot/initrd.img-4.9.0-3-amd64
done
Setting up linux-image-amd64 (4.9+80+deb9u3) ...
Reboot :$ sudo shutdown -r 0
$ uname -r
4.9.0-5-amd64
Parcheando en un Amazon Linux que se ejecuta en AWS
Simplemente ejecute el comando yum :# yum update kernel
# reboot
Parcheando en un arch Linux
Simplemente ejecuta el comando pacman:# pacman -Syu
# reboot
Puedes verificar las diferentes referencias y enlaces que contienen información de estas vulnerabilidad en https://app.howlermonkey.io
Fuente: nixCraft