Orientaciones para mitigar las vulnerabilidades de canal lateral de ejecución especulativa y microarquitectónica basadas en silicio

Se aplica a: ✔️ Máquinas virtuales Linux ✔️ Máquinas virtuales Windows ✔️ Conjuntos de escalado flexibles ✔️ Conjuntos de escalado uniformes

Precaución

En este artículo, se hace referencia a CentOS, una distribución de Linux que está cerca del estado Fin de vida (EOL). Tenga en cuenta su uso y planeación en consecuencia.

Este artículo ofrecen orientaciones para una nueva clase de vulnerabilidades de canal lateral de ejecución especulativa y microarquitectónica basadas en silicio que afectan a muchos procesadores y sistemas operativos modernos. Entre ellos figuran Intel, AMD y ARM. Puede encontrar detalles específicos sobre estas vulnerabilidades basadas en silicio en los siguientes avisos de seguridad y CVE:

La revelación de estas vulnerabilidades de la CPU ha dado lugar a preguntas de los clientes que buscan más claridad.

Microsoft ha implementado mitigaciones en todos nuestros servicios en la nube. La infraestructura que ejecuta Azure y aísla las cargas de trabajo de los clientes entre sí está protegida. Esto significa que un atacante potencial que use la misma infraestructura no puede atacar su aplicación mediante estas vulnerabilidades.

Azure utiliza un mantenimiento con conservación de memoria siempre que es posible para minimizar el impacto en el cliente y eliminar la necesidad de reinicios. Azure seguirá utilizando estos métodos al realizar actualizaciones del host en todo el sistema y proteger a los clientes.

Encontrará más información acerca de cómo integrar la seguridad en todos los aspectos de Azure en el sitio de documentación de Azure Security Center.

Nota

Desde que este documento se publicó por primera vez, se han divulgado varias variantes de esta clase de vulnerabilidad. Microsoft continúa realizando grandes esfuerzos por proteger a nuestros clientes y proporcionarles orientación. Esta página se actualizará a medida que se publiquen más correcciones.

Los clientes que ejecutan código que no es de confianza dentro de su máquina virtual deben tomar medidas para protegerse frente a estos puntos vulnerables; así, lea a continuación para obtener más orientación sobre todas las vulnerabilidades.

Otros clientes deben evaluar estos puntos vulnerables desde la perspectiva de la defensa en profundidad y considerar las implicaciones en la seguridad y el rendimiento de la configuración que han elegido.

Mantener actualizados los sistemas operativos

Aunque no se necesita una actualización del sistema operativo para aislar de otros clientes las aplicaciones que se ejecutan en Azure, mantener el software actualizado siempre es un procedimiento recomendado. Las actualizaciones de seguridad para Windows más recientes contienen mitigaciones para estas vulnerabilidades. De forma similar, las distribuciones de Linux han publicado varias actualizaciones para corregir estas vulnerabilidades. Estas son las acciones recomendadas para actualizar el sistema operativo:

Oferta Acción recomendada
Azure Cloud Services Habilite las actualizaciones automáticas o asegúrese de ejecutar la versión más reciente del sistema operativo invitado.
Máquinas virtuales Linux en Azure Instale las actualizaciones de su proveedor de sistema operativo. Para más información, consulte Linux más adelante en este documento.
Máquinas virtuales Windows en Azure Instale las últimas actualizaciones acumulativas de seguridad.
Otros servicios PaaS de Azure No es necesaria ninguna acción para los clientes que usan estos servicios. Azure mantiene actualizadas las versiones de sistema operativo de forma automática.

Instrucciones adicionales si ejecuta código que no es de confianza

Los clientes que permiten a los usuarios que no son de confianza ejecutar código arbitrario tal vez deseen implementar algunas características de seguridad adicionales en las máquinas virtuales o en los servicios en la nube de Azure. Estas características protegen frente a los vectores de divulgación entre procesos que describen varias vulnerabilidades de ejecución especulativa.

Escenarios de ejemplo donde se recomiendan las características de seguridad adicionales:

  • Permite la ejecución de código que no es de confianza en la máquina virtual.
    • Por ejemplo, permite que uno de sus clientes cargue un archivo binario o un script que, a continuación, se ejecutará en la aplicación.
  • Permite iniciar sesión en la máquina virtual con cuentas con privilegios reducidos a usuarios que no son de confianza.
    • Por ejemplo, permite iniciar sesión en una de las máquinas virtuales mediante escritorio remoto o SSH a un usuario con privilegios reducidos.
  • Permite acceder a las máquinas virtuales implementadas mediante virtualización anidada a usuarios que no son de confianza.
    • Por ejemplo, controla el host de Hyper-V, pero asigna las máquinas virtuales a usuarios que no son de confianza.

Los clientes que no implementan un escenario relacionado con código que no es de confianza no necesitan habilitar estas características de seguridad adicionales.

Habilitación de la seguridad adicional

Si ejecuta código que no sea de confianza, puede habilitar características de seguridad adicionales en la máquina virtual o en el servicio en la nube. Al mismo tiempo, asegúrese de que el sistema operativo está actualizado para habilitar las características de seguridad dentro de la máquina virtual o el servicio en la nube

Windows

El sistema operativo de destino debe estar actualizado para habilitar estas características de seguridad adicionales. Aunque hay numerosas mitigaciones habilitadas de forma predeterminada, las características adicionales que se describen aquí deben habilitarse manualmente y pueden afectar al rendimiento.

Opción 1

Paso 1: siga las instrucciones descritas en KB4072698 para comprobar que las protecciones están habilitadas mediante el módulo de PowerShell SpeculationControl.

Nota

Si descargó este módulo anteriormente, deberá instalar la versión más reciente.

Para validar las protecciones habilitadas frente a estas vulnerabilidades, consulte Descripción de la salida del script de PowerShell Get-SpeculationControlSettings.

Si las protecciones no están habilitadas, póngase en contacto con el equipo de soporte técnico de Azure para habilitar controles adicionales en la máquina virtual de Azure.

Paso 2: para habilitar la compatibilidad del sistema operativo con la sesión concurrente de direcciones virtuales del kernel (KVAS) y la inserción de destino de rama (BTI), siga las instrucciones descritas en KB4072698 para habilitar las protecciones con las claves del Registro de Session Manager. Es necesario reiniciar.

Paso 3: Para las implementaciones que usan la virtualización anidada (solo D3 y E3), estas instrucciones se aplican en la máquina virtual que está usando como host de Hyper-V.

  1. Siga las instrucciones descritas en el artículo KB4072698 para habilitar las protecciones mediante las claves del Registro MinVmVersionForCpuBasedMitigations.
  2. Establezca el tipo de programador del hipervisor en Core mediante las instrucciones descritas aquí.

Opción 2

Deshabilite la característica de hyper-threading en la máquina virtual: los clientes que ejecutan código que no es de confianza en una máquina virtual de hyper-threading deben deshabilitarlo o pasar a un tamaño de máquina virtual que no sea hyper-threading. Remítase a este documento para obtener una lista de tamaños de máquina virtual de hyper-threading (donde la proporción de vCPU a Core es 2:1). Para comprobar si la máquina virtual tiene habilitada la característica de hyper-threading, consulte el siguiente script mediante la línea de comandos de Windows desde la máquina virtual.

Escriba wmic para especificar la interfaz interactiva. A continuación, escriba el comando siguiente para ver la cantidad de procesadores físicos y lógicos en la máquina virtual.

CPU Get NumberOfCores,NumberOfLogicalProcessors /Format:List

Si el número de procesadores lógicos es mayor que el de procesadores físicos (núcleos), la característica de hyper-threading está habilitada. Si está ejecutando una máquina virtual de hyper-threading, póngase en contacto con el equipo de soporte técnico de Azure para deshabilitar la característica de hyper-threading. Una vez que el hyper-threading esté deshabilitado, se requerirá un reinicio completo de la máquina virtual. Consulte Número de núcleos para saber por qué se reduce el número de núcleos de máquina virtual.

Opción 3

En el caso de CVE-2022-23816 y CVE-2022-21123 (confusión de tipo de rama de la CPU de AMD), siga tanto Opción 1 como Opción 2 más arriba.

Linux

Se requiere que el sistema operativo de destino esté completamente actualizado para habilitar el conjunto de características de seguridad adicionales. Algunas de las mitigaciones estarán habilitadas de forma predeterminada. La siguiente sección describe las características que están desactivadas de forma predeterminada y sujetas a la compatibilidad de hardware (microcódigo). La habilitación de estas características puede afectar al rendimiento. Consulte la documentación del proveedor de su sistema operativo para más instrucciones

Paso 1: deshabilite la característica de Hyper-Threading en la máquina virtual. Los clientes que ejecutan código que no es de confianza en una máquina virtual con Hyper-Threading deben deshabilitar esta característica o pasar a una máquina virtual sin Hyper-Threading. Remítase a este documento para obtener una lista de tamaños de máquina virtual de hyper-threading (donde la proporción de vCPU a Core es 2:1). Para comprobar si está ejecutando una máquina virtual de hyper-threading, ejecute el comando lscpu en la máquina virtual Linux.

Si Thread(s) per core = 2, el hyper-threading se ha habilitado.

Si Thread(s) per core = 1, el hyper-threading se ha deshabilitado.

Salida de ejemplo para una máquina virtual con hyper-threading habilitado:

CPU Architecture:      x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1

Si está ejecutando una máquina virtual de hyper-threading, póngase en contacto con el equipo de soporte técnico de Azure para deshabilitar la característica de hyper-threading. Una vez que el hyper-threading esté deshabilitado, se requerirá un reinicio completo de la máquina virtual. Consulte Número de núcleos para saber por qué se reduce el número de núcleos de máquina virtual.

Paso 2: Para mitigar cualquiera de las vulnerabilidades siguientes de memoria basada en la CPU, consulte la documentación del proveedor de su sistema operativo:

Recuento de núcleos

Cuando se crea una máquina virtual de hyper-threading, Azure asigna dos subprocesos por núcleo, que se denominan vCPU. Cuando el hyper-threading está deshabilitado, Azure quita un subproceso y usa los núcleos de subprocesos únicos (núcleos físicos). La proporción de vCPU y CPU es 2:1, de modo que, una vez que el hyper-threading se deshabilite, el número de CPU en la máquina virtual aparecerá reducido a la mitad. Por ejemplo, una máquina virtual D8_v3 es una máquina virtual de hyper-threading que se ejecuta en 8 vCPU (2 subprocesos por núcleo, por 4 núcleos). Cuando el hyper-threading se deshabilite, las CPU caerán hasta 4 núcleos físicos con 1 subproceso por núcleo.

Pasos siguientes

Encontrará más información acerca de cómo integrar la seguridad en todos los aspectos de Azure en el sitio de documentación de Azure Security Center.