Linux 6.6 llega con Shadow Stac, mejoras en FS, optimizaciones y mas
Hace poco Linus Torvalds, el creador y mantenedor del kernel de Linux, anunció el lanzamiento de la versión 6.6, después de agotar todas las excusas para retrasar el trabajo. Esta nueva versión trae varias características nuevas y mejoras, particularmente en términos de seguridad, soporte de hardware y rendimiento. Una de las características nuevas más notables de Linux 6.6 es el programador EEVDF, que reemplaza al programador CFS.
Entre las principales características de Linux 6.6 se encuentra la implementación del Intel Shadow Stack (que a pesar de su nombre también beneficia a ciertos chips AMD), una tecnología de seguridad de hardware que protege las aplicaciones contra ataques de programación orientada al retorno (ROP, por sus siglas en inglés) en procesadores Intel Tiger Lake y posteriores.
Principales novedades de Linux 6.6
En esta nueva versión que se presenta de Linux 6.6, se agregaron configuraciones adicionales para colas de trabajo independientes para mejorar la eficiencia de la reutilización de la caché del procesador en sistemas grandes con múltiples cachés de tercer nivel (L3). El kernel también incluye una utilidad tools/workqueue/wq_dump.py para verificar la configuración actual de las colas de trabajo.
Otro de los cambios que se destaca, es que se agregó soporte para parámetros numéricos a la configuración /sys/devices/system/cpu/smt/ control que determinan la cantidad de subprocesos disponibles para cada núcleo de CPU (anteriormente solo se admitían valores «on» y «off» para habilitar o deshabilitar soporte de subprocesos múltiples simétrico). La nueva característica se puede utilizar en algunos procesadores PowerPC que admiten subprocesos múltiples simétricos hotplug («hotplug SMT») para habilitar selectivamente SMT en núcleos específicos durante la operación.
En el lado del sistema de archivos, Linux 6.6 trae mejoras para el soporte de dispositivos zonales y compresión para F2FS, soporte para mmaps compartidos en modo sin caché para FUSE, correcciones para netfilter y BPF, numerosas correcciones para el controlador AMDGPU, correcciones de regresión para soporte MIDI 2.0 y una mejor administración de energía Intel RAPL.
Linux 6.6 también agrega un compilador BPF justo a tiempo para la arquitectura PA-RISC, soporte de conexión en caliente SMT para la arquitectura PowerPC, un nuevo indicador para la API de montaje que evita que un montaje comparta superbloques en la memoria con otros montajes, soporte para SEV -Invitados SNP y TDX en Hyper-V y soporte de operaciones de red iniciales para el subsistema io_uring. Se ha agregado al subsistema BPF soporte para la desfragmentación de paquetes IPv4 e IPv6, así como la capacidad de filtrar paquetes fragmentados. Se agregó un nuevo controlador, update_socket_protocol, a BPF para permitir que los programas de BPF cambien el protocolo solicitado para nuevos sockets.
Ademas de ello, se ha agregado información al archivo /proc/pid/smaps para diagnosticar la efectividad del mecanismo para fusionar páginas de memoria idénticas (KSM: Kernel Samepage Merging).
Se eliminó la API Frontswap, lo que permite colocar la partición de intercambio en una memoria que no se puede abordar directamente y no proporciona información operativa sobre la disponibilidad de espacio libre. Esta API se usó solo en zswap, por lo que se decidió usar esta funcionalidad directamente en zswap, eliminando capas innecesarias.
XFS ha sido preparado para la posibilidad de utilizar la utilidad fsck para verificar y corregir problemas identificados en línea, sin desmontar el sistema de archivos. Además, XFS implementó la capacidad de utilizar publicaciones grandes en el caché de la página y agregó algunas optimizaciones relacionadas que mejoraron significativamente el rendimiento para algunos tipos de carga de trabajo.
El sistema de archivos tmpfs ha agregado soporte para atributos extendidos de usuario (usuario xattrs), E/S directa y cuotas de usuarios y grupos. Se estabilizaron las compensaciones de directorio, lo que resolvió los problemas con la exportación de tmpfs a través de NFS.
Ademas de ello, se agregó una implementación del mecanismo Shadow Stack, que permite bloquear el funcionamiento de muchos exploits, utilizando las capacidades de hardware de los procesadores Intel para proteger contra la sobrescritura de la dirección de retorno de una función en caso de un desbordamiento del búfer en la pila.
La esencia de la protección es que después de transferir el control a una función, el procesador almacena las direcciones de retorno no solo en la pila normal, sino también en una pila «Shadow» separada, que no se puede cambiar directamente. Antes de que salga la función, la dirección de retorno se extrae de la pila oculta y se compara con la dirección de retorno de la pila principal. Las direcciones no coincidentes provocan la generación de una excepción, bloqueando situaciones en las que el exploit logró sobrescribir una dirección en la pila principal. La pila de sombra de hardware solo se admite en compilaciones de 64 bits y la emulación de software se utiliza en compilaciones de 32 bits.
De los demás cambios que se destacan de esta nueva versión:
- Se agregó soporte inicial para instrucciones ARM SME (Scalable Matrix Extension).
- Se han ampliado las capacidades de la utilidad perf .
- Se agregó una nueva interfaz de caracteres (/dev/vfio/devices/vfioX) al subsistema VFIO para administrar dispositivos VFIO, lo que permite al usuario abrir directamente un archivo de dispositivo sin acceder a la interfaz de grupo heredada /dev/vfio/$ groupID .
- El servidor NFS ya no admite tipos de cifrado Kerberos heredados que utilizan los algoritmos DES y 3DES.
- La implementación de la familia de direcciones AF_XDP (eXpress Data Path) se ha ampliado para funcionar con paquetes almacenados en múltiples buffers.
- Los programas que utilizan sockets AF_XDP ahora pueden recibir y transmitir paquetes desde múltiples buffers a la vez.
- La bandera de desarrollo experimental se eliminó del módulo ksmbd, que ofrece una implementación a nivel de kernel de un servidor de archivos basado en el protocolo SMB3.
- Se agregó soporte para combinar operaciones de lectura (consultas de «lectura compuesta»).
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.