Aislamiento de tabla de páginas del kernel


El aislamiento de la tabla de páginas del kernel ( KPTI o PTI , [1] anteriormente llamado KAISER ) [2] [3] es una característica del kernel de Linux que mitiga la vulnerabilidad de seguridad Meltdown (que afecta principalmente a las CPU x86 de Intel ) [4] y mejora el endurecimiento del kernel. contra intentos de eludir la aleatorización del diseño del espacio de direcciones del kernel (KASLR). Funciona aislando mejor el espacio del usuario y la memoria del espacio del kernel. [5] [6] KPTI se fusionó con la versión 4.15 del kernel de Linux, [7] y respaldado a los kernels de Linux 4.14.11, 4.9.75 y 4.4.110. [8] [9] [10] Windows [11] y macOS [12] lanzaron actualizaciones similares. KPTI no aborda la vulnerabilidad Spectre relacionada . [13]

Los parches KPTI se basaron en KAISER (abreviatura de Kernel Address Isolation to have Side-channels Efficiently Removal ), [6] una técnica concebida en 2016 [14] y publicada en junio de 2017 cuando aún no se conocía Meltdown. KAISER hace que sea más difícil derrotar a KASLR, una mitigación de 2014 para un problema mucho menos grave.

En 2014, el kernel de Linux adoptó la aleatorización del diseño del espacio de direcciones del kernel (KASLR), [15] , lo que dificulta la explotación de otras vulnerabilidades del kernel, [16] que depende de que las asignaciones de direcciones del kernel permanezcan ocultas del espacio del usuario. [17] A pesar de prohibir el acceso a estas asignaciones de kernel, resulta que hay varios ataques de canal lateral en los procesadores modernos que pueden filtrar la ubicación de esta memoria, lo que hace posible solucionar KASLR. [6] [18] [19] [20]

KAISER abordó estos problemas en KASLR eliminando algunas fuentes de fuga de direcciones. [6] Mientras que KASLR simplemente evita que se filtren las asignaciones de direcciones, KAISER también evita que se filtren datos, cubriendo así el caso Meltdown. [21]

KPTI se basa en KAISER. Sin KPTI habilitado, siempre que se ejecuta código de espacio de usuario (aplicaciones), Linux también mantendría toda la memoria del núcleo asignada en tablas de páginas , aunque protegida del acceso. La ventaja es que cuando la aplicación realiza una llamada al sistema en el kernel o se recibe una interrupción , las tablas de páginas del kernel siempre están presentes, por lo que se pueden evitar la mayoría de los gastos generales relacionados con el cambio de contexto ( flujo de TLB , intercambio de tablas de páginas, etc.). [5]

En enero de 2018, se publicó la vulnerabilidad Meltdown , que se sabe que afecta a las CPU x86 de Intel y ARM Cortex-A75 . [22] [23] Era una vulnerabilidad mucho más grave que la derivación de KASLR que KAISER originalmente pretendía corregir: se descubrió que el contenido de la memoria del kernel también podía filtrarse, no solo las ubicaciones de las asignaciones de memoria, como se pensaba anteriormente.