Mitigaciones de vulnerabilidades de la CPU
Ditana activa de forma predeterminada las mitigaciones de vulnerabilidades de la CPU en modo de alta seguridad. El instalador detecta qué mitigaciones necesita su CPU concreta leyendo /sys/devices/system/cpu/vulnerabilities/ y luego ofrece cada una como una casilla que se puede marcar o desmarcar por separado en el diálogo Expert Settings → CPU Vulnerability Mitigation Options. Esta página documenta cada opción en detalle.
Configuración predeterminada del kernel frente a las mitigaciones de Ditana
Sección titulada «Configuración predeterminada del kernel frente a las mitigaciones de Ditana»Los valores predeterminados del kernel Linux buscan un equilibrio entre seguridad y rendimiento, y dejan ciertas vulnerabilidades sin mitigar salvo que se activen explícitamente. Ditana las activa de forma predeterminada: para la mayoría de las cargas de trabajo, el costo es insignificante, mientras que el beneficio para la seguridad es considerable. En el instalador puede revertir cualquier mitigación por separado si tiene una carga de trabajo que se beneficia de ello de forma demostrable.
La lógica de mitigación depende del hardware. Solo se configuran las vulnerabilidades que la CPU realmente presenta; todo lo demás se deja con el valor predeterminado del kernel.
Después de la instalación
Sección titulada «Después de la instalación»Varias mitigaciones implican desactivar Simultaneous Multi-Threading (SMT, también conocido como Hyper-Threading) como reserva. El encabezado de terminal personalizado de Ditana muestra qué mitigaciones están activas y si SMT está activado o desactivado.
También puede comprobarlo con:
lscpuPara comparar el rendimiento con y sin una mitigación concreta, edite la línea de comandos del kernel para un solo arranque y quite el parámetro asociado a la mitigación que quiere probar. En una instalación ZFS, que es lo que genera el perfil Standard, esto se hace con el editor de entornos de arranque de ZFSBootMenu; en un sistema que arranca mediante GRUB, presione e en el menú. Más abajo, cada entrada indica sus parámetros en «Parámetro aplicado». Reinicie y ejecute su carga de trabajo real; las pruebas de rendimiento sintéticas rara vez reflejan el impacto real.
Para que un cambio sea permanente en una instalación ZFS, establezca la línea de comandos en el entorno de arranque:
sudo zfs set org.zfsbootmenu:commandline="rw <options>" ditana-root/ROOTzfs get org.zfsbootmenu:commandline ditana-root/ROOTPara que sea permanente en un sistema que arranca mediante GRUB, edite /etc/default/grub, busque la línea GRUB_CMDLINE_LINUX_DEFAULT (antes, guarde una copia de seguridad), quite el parámetro y luego ejecute:
sudo grub-mkconfig -o /boot/grub/grub.cfgSi un cambio impide el arranque, edite la línea de comandos del kernel en el menú de GRUB para recuperar el sistema y luego repita la edición y grub-mkconfig.
Mitigaciones que Ditana activa de forma predeterminada
Sección titulada «Mitigaciones que Ditana activa de forma predeterminada»Spectre variante 2: Branch Target Injection
Sección titulada «Spectre variante 2: Branch Target Injection»Ataque de ejecución especulativa que permite a los atacantes leer datos confidenciales mediante predictores de saltos indirectos mal entrenados. Ditana aplica la mitigación completa (Indirect Branch Prediction Barrier siempre activa en lugar de condicional).
Todas las mitigaciones de Spectre variante 2 pueden forzarse en el arranque para todos los programas. Esto agregará sobrecarga, ya que se restringirán las especulaciones de saltos indirectos de todos los programas.
Identificador de lscpu |
Spectre v2 |
| Nombre de la opción | Enforce Spectre Variant 2 Mitigation |
| Parámetro aplicado | spectre_v2=on |
L1 Terminal Fault (L1TF)
Sección titulada «L1 Terminal Fault (L1TF)»Afecta a las CPU Intel y permite el acceso no autorizado a los datos de la caché L1. Ditana impone la mitigación completa con un vaciado agresivo de la caché.
De forma predeterminada, el kernel no impone la desactivación de SMT, lo que deja vulnerables a los sistemas con SMT cuando ejecutan invitados que no son de confianza con EPT activado.
Identificador de lscpu |
L1tf |
| Nombre de la opción | Enforce L1 Terminal Fault Mitigation |
| Parámetro aplicado | l1tf=full,force |
Microarchitectural Data Sampling (MDS)
Sección titulada «Microarchitectural Data Sampling (MDS)»Permite a los atacantes tomar muestras de datos de los búferes de la CPU. La mitigación completa puede desactivar SMT si es necesario.
De forma predeterminada, el kernel no impone la desactivación de SMT, lo que deja vulnerables a los sistemas con SMT cuando ejecutan código que no es de confianza.
Identificador de lscpu |
Mds |
| Nombre de la opción | Enforce MDS Mitigation |
| Parámetro aplicado | mds=full,nosmt |
TSX Asynchronous Abort (TAA)
Sección titulada «TSX Asynchronous Abort (TAA)»Afecta a las CPU con Transactional Synchronization Extensions. La mitigación completa puede desactivar SMT si es necesario.
Es posible que TSX se desactive si el microcódigo proporciona un MSR de control de TSX. En ese caso, el sistema no es vulnerable.
Identificador de lscpu |
Tsx async abort |
| Nombre de la opción | Enforce TSX Async Abort Mitigation |
| Parámetro aplicado | tsx_async_abort=full,nosmt |
Meltdown (vaciado de L1D)
Sección titulada «Meltdown (vaciado de L1D)»Ataque de ejecución especulativa que permite leer la memoria del kernel desde el espacio de usuario. Ditana fuerza el vaciado de la caché de datos L1.
La línea de comandos del kernel permite controlar las mitigaciones de vaciado de L1D en el arranque con la opción
l1d_flush=. De forma predeterminada, el mecanismo está desactivado.
Identificador de lscpu |
Meltdown |
| Nombre de la opción | Enforce Meltdown Mitigation |
| Parámetro aplicado | l1d_flush=on |
MMIO Stale Data
Sección titulada «MMIO Stale Data»Fuga de datos a través de E/S asignada a memoria. La mitigación completa puede desactivar SMT.
full,nosmt: igual quefull, con SMT desactivado en las CPU vulnerables. Esta es la mitigación completa.
Identificador de lscpu |
Mmio stale data |
| Nombre de la opción | Enforce MMIO Stale Data Mitigation |
| Parámetro aplicado | mmio_stale_data=full,nosmt |
Retbleed: Cross-Thread Return Address Predictions
Sección titulada «Retbleed: Cross-Thread Return Address Predictions»Ataque de ejecución especulativa que filtra direcciones de retorno. La mitigación seleccionada automáticamente puede desactivar SMT.
auto,nosmt: selecciona automáticamente una mitigación y desactiva SMT si es necesario para la mitigación completa.
Identificador de lscpu |
Retbleed |
| Nombre de la opción | Enforce Retbleed Mitigation |
| Parámetro aplicado | retbleed=auto,nosmt |
Consulte también kernel.org: Cross-Thread Return Address Predictions.
Speculative Return Stack Overflow (SRSO)
Sección titulada «Speculative Return Stack Overflow (SRSO)»Ataques especulativos a través del búfer de la pila de retorno. Combina barreras IBPB con el modo estricto de spectre_v2-user.
Mitigation: IBPB: protección similar a «safe RET», pero emplea una barrera IBPB en los cambios de dominio de privilegios (usuario→kernel, invitado→anfitrión).
Identificador de lscpu |
Spec rstack overflow |
| Nombre de la opción | Enforce SRSO Mitigation |
| Parámetro aplicado | spec_rstack_overflow=ibpb spectre_v2_user=on |
Gather Data Sampling (GDS)
Sección titulada «Gather Data Sampling (GDS)»Afecta a las instrucciones AVX. Fuerza la mitigación por microcódigo, o desactiva AVX donde no hay microcódigo disponible.
Si se especifica
gather_data_sampling=force, se usará la mitigación por microcódigo cuando esté disponible, o se desactivará AVX en los sistemas afectados cuyo microcódigo no se haya actualizado para incluir la mitigación.
Identificador de lscpu |
Gather data sampling |
| Nombre de la opción | Enforce Gather Data Sampling Mitigation |
| Parámetro aplicado | gather_data_sampling=force |
Register File Data Sampling (RFDS)
Sección titulada «Register File Data Sampling (RFDS)»Permite tomar muestras de datos de los registros de la CPU.
Este parámetro anula el valor predeterminado en tiempo de compilación que establece
CONFIG_MITIGATION_RFDS.
Identificador de lscpu |
Reg file data sampling |
| Nombre de la opción | Enforce RFDS Mitigation |
| Parámetro aplicado | reg_file_data_sampling=on |
Consulte también kernel.org: RFDS.
Vulnerabilidades que no aparecen en el instalador
Sección titulada «Vulnerabilidades que no aparecen en el instalador»Para estas, el kernel aplica de forma predeterminada la mitigación máxima: Ditana no tiene nada que agregar.
El kernel informa de otras cinco que no se mencionan en ningún lugar de arriba, porque Ditana tampoco les agrega nada: Ghostwrite, Indirect Target Selection, old microcode, TSA y VMSCAPE. El kernel decide lo que necesita cada una según el procesador que encuentra y deja el resultado donde lo muestran lscpu y /sys/devices/system/cpu/vulnerabilities/.
Spectre variante 1: Bounds Check Bypass
Sección titulada «Spectre variante 1: Bounds Check Bypass»No hay garantía de que estén cubiertos todos los posibles vectores de ataque de Spectre variante 1.
Identificador de lscpu: Spectre v1
iTLB multihit
Sección titulada «iTLB multihit»Identificador de lscpu: Itlb multihit. Consulte kernel.org: iTLB multihit.
SRBDS: Special Register Buffer Data Sampling
Sección titulada «SRBDS: Special Register Buffer Data Sampling»Identificador de lscpu: Srbds. Consulte kernel.org: SRBDS.
Speculative Store Bypass (SSB)
Sección titulada «Speculative Store Bypass (SSB)»El kernel ofrece mitigación para este tipo de vulnerabilidades de diversas formas.
Identificador de lscpu: Spec store bypass.
Reducción de mitigaciones: por su cuenta y riesgo
Sección titulada «Reducción de mitigaciones: por su cuenta y riesgo»El instalador también ofrece dos opciones que reducen las mitigaciones. Aumentan considerablemente su exposición a vulnerabilidades conocidas de la CPU. Úselas solo si tiene un motivo claro y justificado.
Desactivar el Indirect Branch Tracking de Intel: ibt=off
Sección titulada «Desactivar el Indirect Branch Tracking de Intel: ibt=off»Desactiva el Indirect Branch Tracking del kernel. IBT es la mitad de Control-flow Enforcement Technology que protege las transferencias de control hacia adelante (forward-edge): el hardware comprueba que todo salto o llamada indirecta termine en una instrucción endbr, y eso es lo que dificulta la programación orientada a saltos y la orientada a llamadas. Se trata de integridad del flujo de control, no de una mitigación de ejecución especulativa: Branch Target Injection es Spectre v2, tratada más arriba en spectre_v2=on. Este parámetro del kernel no está documentado en la referencia oficial de parámetros del kernel, aunque en ciertas distribuciones suele estar activado de forma predeterminada sin que se comunique explícitamente.
El kernel documenta la otra mitad de CET, la pila de sombra (shadow stack) del espacio de usuario, en shstk; el propio IBT no tiene allí una página propia.
Desactivar todas las mitigaciones: mitigations=off
Sección titulada «Desactivar todas las mitigaciones: mitigations=off»Esto es más drástico que desmarcar cada una de las mitigaciones del diálogo. Con mitigations=off, el kernel omite todas las mitigaciones que conoce, incluidas las que Ditana no muestra porque están activadas de forma predeterminada. El techo de rendimiento sube; el piso de seguridad cae en picada.
Solo es útil para pruebas de rendimiento, sistemas totalmente desconectados de cualquier red y bajo pleno control físico, o entornos en los que dispone de defensas de una categoría completamente distinta.
Consulte kernel.org: parámetros del kernel.
Descargo de responsabilidad
Sección titulada «Descargo de responsabilidad»Las indicaciones de esta página se basan en la documentación oficial sobre vulnerabilidades de la CPU y en la referencia de parámetros de la línea de comandos del kernel. Las distintas ramas del kernel se apartan ocasionalmente de estos valores predeterminados de forma sutil; nuestras pruebas abarcan los kernels que admite Ditana, pero las combinaciones de hardware poco habituales pueden producir casos límite.
Si tiene una carga de trabajo que se beneficia de otro valor predeterminado, o si encuentra un modelo de CPU en el que la detección de Ditana es incompleta o incorrecta: abra una incidencia en GitHub o escriba a [email protected]. La lógica de detección son datos, no código; por eso, las mejoras suelen ser unas pocas líneas de KDL.
Esta traducción la hizo una máquina. Los lectores la mejoran en Weblate.