# Sobre "Meltdown and Spectre"

## Luciernaga

Hola qué tal, de nuevo con problemas ...   :Embarassed: 

Tal vez lo que voy a exponerles sea un poco/mucho genérico y no tengamos solución.

Desde la segunda quincena de enero hasta la fecha estoy teniendo problemas con Gentoo.

Veamos si los datos que expongo pueden ser resueltos ???

Con instalaciones de Gentoo SIN SYSTEMD no hay problema alguno.

Ahora bien, tampoco he logrado instalar un escritorio Gnome SIN SYSTEMD.

En este momento acabo de ejecutar un programa (spectre-meltdown-checker.sh) en mi servidor Tyan y la información devuelta es la siguiente:

Spectre and Meltdown mitigation detection tool v0.35

Checking for vulnerabilities on current system

Kernel is [35mLinux 4.9.76-gentoo-r1 #1 SMP Tue Mar 13 16:53:30 CET 2018 x86_64[0m

CPU is [35mSix-Core AMD Opteron(tm) Processor 2435[0m

[1;34mHardware check[0m

* Hardware support (CPU microcode) for mitigation techniques

  * Indirect Branch Restricted Speculation (IBRS)

    * SPEC_CTRL MSR is available: [41m[30m NO [0m

    * CPU indicates IBRS capability: [41m[30m NO [0m

  * Indirect Branch Prediction Barrier (IBPB)

    * PRED_CMD MSR is available: [41m[30m NO [0m

    * CPU indicates IBPB capability: [41m[30m NO [0m

  * Single Thread Indirect Branch Predictors (STIBP)

    * SPEC_CTRL MSR is available: [41m[30m NO [0m

    * CPU indicates STIBP capability: [41m[30m NO [0m

  * Enhanced IBRS (IBRS_ALL)

    * CPU indicates ARCH_CAPABILITIES MSR availability: [41m[30m NO [0m

    * ARCH_CAPABILITIES MSR advertises IBRS_ALL capability: [41m[30m NO [0m

  * CPU explicitly indicates not being vulnerable to Meltdown (RDCL_NO): [44m[30m NO [0m

  * CPU microcode is known to cause stability problems: [44m[30m NO [0m

* CPU vulnerability to the three speculative execution attacks variants

  * Vulnerable to Variant 1: [41m[30m YES [0m

  * Vulnerable to Variant 2: [41m[30m YES [0m

  * Vulnerable to Variant 3: [42m[30m NO [0m

[1;34mCVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'[0m

* Kernel has array_index_mask_nospec: [41m[30m NO [0m

* Kernel has the Red Hat/Ubuntu patch: [41m[30m NO [0m

* Checking count of LFENCE instructions following a jump in kernel... [41m[30m NO [0m (only 3 jump-then-lfence instructions found, should be >= 30 (heuristic))

> [46m[30mSTATUS:[0m [41m[30m VULNERABLE [0m (Kernel source needs to be patched to mitigate the vulnerability)

[1;34mCVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'[0m

* Mitigation 1

  * Kernel is compiled with IBRS/IBPB support: [41m[30m NO [0m

  * Currently enabled features

    * IBRS enabled for Kernel space: [41m[30m NO [0m

    * IBRS enabled for User space: [41m[30m NO [0m

    * IBPB enabled: [41m[30m NO [0m

* Mitigation 2

  * Kernel compiled with retpoline option: [41m[30m NO [0m

  * Kernel compiled with a retpoline-aware compiler: [41m[30m NO [0m

> [46m[30mSTATUS:[0m [41m[30m VULNERABLE [0m (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

[1;34mCVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'[0m

* Kernel supports Page Table Isolation (PTI): [42m[30m YES [0m

* PTI enabled and active: [41m[30m NO [0m

* Running as a Xen PV DomU: [42m[30m NO [0m

> [46m[30mSTATUS:[0m [42m[30m NOT VULNERABLE [0m (your CPU vendor reported your CPU model as not vulnerable)

A false sense of security is worse than no security at all, see --disclaimer

¿Qué me pueden decir al respecto?

¿Existe alguna solución o tengo que dar por perdida esta máquina?

Cualquier comentario será bienvenido, gracias por su atención ...   :Shocked: 

----------

## pcmaster

¿Qué procesador tiene esa máquina?

¿Puedes ponernos el enlace al script que comprueba las vulnerabilidades?

¿Tienes actualizado el microcódigo del procesador a la última versión?

----------

## Luciernaga

Hola 'pcmaster'.

 *Quote:*   

> ¿Qué procesador tiene esa máquina? 

 

La máquina tiene ya 8 años de uso y es una Tyan S8212 http://www.tyan.com/CN_Motherboards_S8212_S8212GM3NR

Incorpora dos CPU's Opteron 2435 https://www.cnet.com/products/amd-opteron-2435-2-6-ghz-processor-49y4747/specs/

También tiene ensamblados 8 módulos de memoria DDR2 kvr667d2d8p5/2g https://www.kingston.com/datasheets/KVR667D2D8P5_2G.pdf

La BIOS es la versión v1.05a de fecha 19/07/2011 http://www.tyan.com/Motherboards=S8212=S8212WGM3NR=downloads=EN

 *Quote:*   

> ¿Puedes ponernos el enlace al script que comprueba las vulnerabilidades? 

 

Primero tienes que tener instalado git en el sistema emerge --ask dev-vcs/git

Luego emitir el siguiente comando: git clone https://github.com/speed47/spectre-meltdown-checker.git

La descarga creará un directorio (/home/<user>/spectre-meltdown-checker) y dentro de él tres ficheros.

Para ejecutar el script entra en el directorio y emite sh spectre-meltdown-checker.sh + Intro

Te devolverá la información pertinente a la máquina en cuestión.

 *Quote:*   

> ¿Tienes actualizado el microcódigo del procesador a la última versión?

 

Si te refieres a la BIOS es la última versión citada antes, no hay otra más reciente.

Si te refieres a otra cosa (microcódigo) lo desconozco. Esta BIOS es antigua no contiene UEFI por consiguiente no me merece la pena invertir en mejorar el hardware, poseo otros equipos más recientes tales como una Ryzen y/o una WorkStation.

El problema de fondo es que últimamente en las instalaciones de Gentoo CON systemd me fallan estrepitosamente (no con OpenRC) y, según tengo entendido, el núcleo de Linux falla con las vulnerabilidades de Meltdown and Spectre, desconozco qué relación existe entre ambos factores y si puede haber solución en algún momento. Por otra parte conozco que el kernel 4.15 solventa esos fallos pero no está en las fuentes de Gentoo, ????

Habrá que esperar soluciones? saludetes  :Wink: 

----------

## quilosaq

 *Luciernaga wrote:*   

> ...
> 
> Por otra parte conozco que el kernel 4.15 solventa esos fallos pero no está en las fuentes de Gentoo, ????
> 
> ...

 El ebuild para construir un núcleo 4.15 está en el repositorio gentoo desde el 28-1-18. Está marcado como "rama de pruebas" (testing) para todas las arquitecturas.

----------

## Luciernaga

 *Quote:*   

> ¿Tienes actualizado el microcódigo del procesador a la última versión?

 

Esta pregunta me trae de cabeza. Si bien antes dije que desconocía el tema ahora tengo más que sombras al respecto.

Este vínculo determina el kernel instalado en el sistema. http://www.imagebam.com/image/1cb6dc808957063

Y este otro determina la información (en detalles) del procesador Intel Xeon. http://www.imagebam.com/image/bb9a05808961303

Para una completa info de los 32 hilos de las dos CPU's ahí ... https://pastebin.com/yEkVXS8d

Hasta donde he leído ....

-primero- puede ser complicado realizar una actualización del microcódigo del procesador Intel.

-segundo- las últimas noticias (al parecer) Intel no procede a actualizar microcódigo a determinadas CPU's, lo cual hasta este momento desconozco si mis Xeon se pueden, o no, actualizar.

-tercero- Linux actualiza el microcódigo de todos los procesadores al instalar el sistema, lo cual no quiere decir que el núcleo instalado solvente el problema de la actualización pertinente.

Entonces, ¿cómo queda la situación actual?

Avanzando en la instalación, en este momento el sistema Gentoo Linux está completado y actualizado con un escritorio KDE Plasma funcionando perfectamente.

http://www.imagebam.com/image/2856a7809037143

Saludetes  :Wink: 

PostData: Acabo de descargar el último microcódigo (microcode-20180312.tgz) liberado por Intel acerca de mis procesadores Xeon y la pregunta es la siguiente: ¿Qué comando tengo que emitir para esta tarea?, por supuesto que asumo en un Terminal y como superusuario root.

----------

## pcmaster

Puedes instalarlo desde Portage:

https://packages.gentoo.org/packages/sys-firmware/intel-microcode

y configurarlo según explica el wiki: https://wiki.gentoo.org/wiki/Microcode

https://wiki.gentoo.org/wiki/Intel_microcode

----------

## Luciernaga

OZÚÚÚ ... en mis preguntas y respuestas he tenido un lapsus que debo aclarar, no tanto en la cuestión de fondo pero si en el contenido, veamos:

La cuestión de fondo:

Desde principios de este año estoy teniendo problemas con instalar Gentoo en mis equipos informáticos (solo con Gentoo) ningún problema con otras distros Linux. Mis equipos son distintos en comparación (unos con otros) con el material que incorporan aunque son COMPATIBLES entre si mismos con el software en general. Específicamente son los siguientes:

1 - Servidor Tyan S8212 (8 años) con 2 CPU's AMD Opteron 2435 y 16GB de memoria DDR2, gráfica nVidia GT740, BIOS normal.

2 - Servidor WorkStation Z10PE-D16-WS (2 años) con 2 CPU's Intel Xeon E5-2630 v3 y 64GB de memoria DDR4, gráfica nVidia GTX760, BIOS UEFI última versión actualizada.

3 - Cliente Sabertooth 990FX R2.0 (2 años) con 1 CPU AMD FX 8370 y 16GB de memoria DDR3, gráfica nVidia GT9600, BIOS UEFI.

4 - Cliente MSI B350 Tomahawk (1 año) con 1 CPU AMD Ryzen 7 1800X y 16GB de memoria DDR4, gráfica ATI Asus Radeon 7 250X, BIOS UEFI actualizada automáticamente.

5 - Cliente VAIO Sony VGN-SR21M con 1 CPU Intel CoreDuo P8400 y 4GB de memoria DDR2, gráfica Radeon HD 3450/3470, BIOS portátil.

En mi último mensaje di la respuesta del servidor WorkStation   :Embarassed:   en vez de la que se solicitaba del servidor Tyan, dado que los problemas con la instalación de Gentoo en cualquiera de mis equipos daban (y siguen dando) resultados distintos, probablemente, por una mala y/o deficiente configuración del núcleo para afrontar los problemas derivados del microcódigo de las CPU's resulta que, y ahora me estoy dando cuenta de ello, que absolutamente nada se comenta de ello en el manual y hay que ir descubriendo a medida de improvisación con los buenos consejos de amigos en este foro.

El contenido

Alguien dijo que cada máquina es un mundo y su comportamiento con el resto puede tener efectos diferentes, por tanto, cada una en particular merece su atención específica. En este momento (al parecer) tengo resueltas las instalaciones de Gentoo en el servidor principal WorkStation y en el cliente Sabertooth, me queda el resto que voy intentándolo poco a poco, especialmente en la Ryzen que me da unos problemas absurdos, tales como que al emitir la orden revdep-rebuild.sh entra en un bucle de reconstruir absolutamente todo el sistema completo.

Doy las gracias a pcmaster por sus consejos y por abrirme la luz para lograr y entender la configuración del microcódigo de las CPU's que buena falta hace, un cordial saludo a todos.

----------

## Luciernaga

Vamos a ver, tengo la extraña sensación de vivir en un KAOS con la configuración y compilación del microcódigo en la máquina servidor WorkStation Z10PE-D16-WS con dos CPU's Intel Xeon E5-2630 v3 .....   :Embarassed: 

No así con las máquinas AMD que funcionan correctamente y cargan el microcódigo correspondiente al efecto.

A trancas y barrancas he llegado a instalar el sistema completamente (con un escritorio GNOME) pero es inestable, al arrancar muestra errores en la consola y no presenta el indicador de sistema, obliga a pulsar Intro para mostrarlo y poder registrar el superusuario y/o usuario.

http://www.imagebam.com/image/288452825347853

Ahora bien, para poder incluir la referencia correspondiente en esta línea del kernel ...   :Crying or Very sad: 

http://www.imagebam.com/image/90ac12825352633

... no encuentro la lectura del nombre del archivo del código y/o los resultados de búsqueda no me lo proporcionan  ....   :Crying or Very sad: 

http://www.imagebam.com/image/8ee9e9825355103

http://www.imagebam.com/image/10086a825359233

Esta imagen muestra el resultado de la herramienta iucode que da 0x000306f2

En la carpeta /lib/firmware/intel-ucode/* presenta una serie de ficheros que, seguro, uno de ellos es el necesitado.

http://www.imagebam.com/image/0c1ec7825360163

Y ahora la pregunta del millón .... ¿cómo descifrar la respuesta que da la herramienta iucode con el contenido de la carpeta intel-ucode?

o dicho de otra forma ¿cómo saber qué fichero de microcódigo es el apropiado para mis dos CPU's?

Es evidente que no se carga automáticamente y en las pruebas y búsquedas realizadas no logro estabilizar el sistema.

Gracias por vuestra ayuda, saludetes  :Smile: 

PostData: Qué tanto de verdad hay en esa nota de la wiki.

 *Quote:*   

> Nota: Tenga en cuenta que inyectar la actualización de microcódigo directamente en el firmware de la placa base (que puede sonar tentador) puede hacer que la CPU0 se actualice pero el resto de las CPU (o núcleos de CPU en un sistema multi-core) se dejen en su revisión inicial (que podría causa más problemas que ejecutarlos todos en la misma versión inicial). Y, dado que la mayoría del firmware de stock motherboard tiene algunas actualizaciones de microcódigo (incluso en sus versiones de lanzamiento iniciales), es una buena razón para que todos se aseguren de que su kernel intente actualizar todas las CPU (y núcleos) a la misma versión (así que, este controlador de actualización se ejecuta incluso si el núcleo tiene la misma versión que está almacenada en el firmware de la placa base). Puede ser deseable inyectar el microcódigo en el firmware (para asegurarse de que esté cargado para la CPU de inicio antes de que se cargue el núcleo y pueda actualizar el resto del microcódigo).

 

----------

## quilosaq

 *Luciernaga wrote:*   

> ...
> 
> ¿cómo descifrar la respuesta que da la herramienta iucode con el contenido de la carpeta intel-ucode?
> 
> o dicho de otra forma ¿cómo saber qué fichero de microcódigo es el apropiado para mis dos CPU's?
> ...

 

iucode_tools: system has processor(s) with signature 0x000306f2

Tu sistema tiene uno o varios procesadores con firma 0x000306f2

selected microcodes:

  054/001: sig 0x000306f2...

Microcódigo seleccionado: el 054

Ahora tienes que buscar el la lista que ha salió antes de esto último y ver donde ponga:

microcode bundle 54: /lib/firmware/intel-ucode/...

(no se ve en tus imágenes)

"intel-ucode/..." es lo que tienes que poner en la configuración del kernel.

https://wiki.gentoo.org/wiki/Intel_microcode

----------

## Luciernaga

Muchas gracias por la ayuda, quilosaq, visto y oído al parche ... lo ví y no supe descifrarlo.

Después de recompilar el núcleo y reiniciar el equipo "continúa" inestable.   :Confused: 

Cómo es que en esta información ...

http://www.imagebam.com/image/10086a825359233

... presenta dos códigos diferentes (54 y 55) para cada CPU siendo las dos unidades EXACTAMENTE iguales.

 *Quote:*   

> (no se ve en tus imágenes)

 

El listado contenía 100 líneas, pero sí incluía las líneas 54 y 55 con diferente código.

```
microcode bundle 54: /lib/firmware/intel-ucode/06-3f-02

microcode bundle 55: /lib/firmware/intel-ucode/06-3f-04

```

Voy a crear un nuevo soporte CD, formatear e instalar de nuevo Gentoo para ver si logro mejorar la estabilidad en Gentoo.

Saludetes  :Wink: 

----------

## Luciernaga

COMPROBADO --- La alternativa SYSTEMD es la que me provocaba inestabilidad y fallos en algunos dispositivos, como por ejemplo: no presentar el indicador de sistema en la consola al iniciar, mostrar errores no reconociendo buses PCIe, no reconocer una segunda tarjeta de red configurada correctamente, etc..

Una enésima instalación de Gentoo (sin SYSTEMD) han desaparecido todos esos incordios en la primera fase de la instalación en mi equipo servidor WorkStation Z10PE-D16-WS.

cat /proc/cpuinfo

http://www.imagebam.com/image/ab7a8b830344883

http://www.imagebam.com/image/e9031a830342463

http://www.imagebam.com/image/9bcb6f830343273

Rulando como nunca sin systemd ...  :Smile: 

http://www.imagebam.com/image/2856a7809037143

----------

