Kernel de la tabla de páginas de aislamiento ( KPTI o PTI , [1] anteriormente llamado KAISER ) [2] [3] es un núcleo de Linux característica que mitiga la vulnerabilidad de seguridad Meltdown (que afecta principalmente a Intel 's x86 CPU ) [4] y mejora del núcleo endurecimiento contra los 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, [7] del kernel de Linux yretroportado 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 relacionada con Spectre . [13]
Antecedentes de KAISER
Los parches KPTI se basaron en KAISER (abreviatura de Kernel Address Isolation para eliminar los canales laterales de manera eficiente ), [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 vencer 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] que dificulta la explotación de otras vulnerabilidades del kernel, [16] que se basa en que las asignaciones de direcciones del kernel permanecen ocultas en el 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 trabajar alrededor de KASLR. [6] [18] [19] [20]
KAISER abordó estos problemas en KASLR eliminando algunas fuentes de fugas de direcciones. [6] Mientras que KASLR simplemente evita que se filtren las asignaciones de direcciones, KAISER también evita que los datos se filtren, cubriendo así el caso Meltdown. [21]
KPTI se basa en KAISER. Sin KPTI habilitado, siempre que ejecute código de espacio de usuario (aplicaciones), Linux también mantendría toda la memoria del kernel mapeada en tablas de páginas , aunque protegida del acceso. La ventaja es que cuando la aplicación realiza una llamada del sistema al kernel o se recibe una interrupción , las tablas de página 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 ( descarga de TLB , intercambio de tabla de página, etc.). [5]
Vulnerabilidad de fusión y KPTI
En enero de 2018, se publicó la vulnerabilidad Meltdown , que se sabe que afecta las CPU x86 de Intel y ARM Cortex-A75 . [22] [23] Era una vulnerabilidad mucho más severa que el bypass de KASLR que KAISER originalmente pretendía arreglar: se encontró 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.
KPTI (basado conceptualmente en KAISER) evita Meltdown al evitar que la mayoría de las ubicaciones protegidas se mapeen en el espacio del usuario.
Actualmente, no se sabe que los procesadores AMD x86 se vean afectados por Meltdown y no necesitan KPTI para mitigarlos. [13] [24] Sin embargo, los procesadores AMD todavía son susceptibles a la omisión de KASLR cuando KPTI está desactivado. [20]
Implementación
KPTI corrige estas filtraciones separando por completo las tablas de páginas de espacio de usuario y espacio de kernel. Un conjunto de tablas de páginas incluye direcciones de espacio de kernel y de espacio de usuario igual que antes, pero solo se usa cuando el sistema se ejecuta en modo kernel. El segundo conjunto de tablas de páginas para usar en modo de usuario contiene una copia del espacio de usuario y un conjunto mínimo de mapeos de espacio de kernel que proporciona la información necesaria para ingresar o salir de llamadas, interrupciones y excepciones del sistema. [5]
En los procesadores que admiten los identificadores de contexto de proceso (PCID), se puede evitar un vaciado de búfer de búsqueda de traducción (TLB), [5] pero incluso entonces tiene un costo de rendimiento significativo, particularmente en cargas de trabajo pesadas e interrupciones de syscall . [25]
La sobrecarga se midió en 0,28% según los autores originales de KAISER; [6] un desarrollador de Linux lo midió en aproximadamente un 5% para la mayoría de las cargas de trabajo y hasta un 30% en algunos casos, incluso con la optimización PCID; [5] para el motor de base de datos PostgreSQL, el impacto en las pruebas de solo lectura en un procesador Intel Skylake fue del 7 al 17% (o del 16 al 23% sin PCID), [26] mientras que un punto de referencia completo perdió del 13 al 19% ( Coffee Lake vs. . Broadwell-E ). [27] Phoronix ha realizado muchos puntos de referencia , [28] [29] [1] Redis se ralentizó entre un 6% y un 7%. [27] La compilación del kernel de Linux se ralentizó un 5% en Haswell . [30]
KPTI se puede desactivar parcialmente con la opción de arranque del kernel "nopti". También se crearon disposiciones para deshabilitar KPTI si los procesadores más nuevos corrigen las fugas de información. [2]
Referencias
- ↑ a b Larabel, Michael (3 de enero de 2018). "Análisis adicional de la CPU Intel" Problema de PTI x86 "En más sistemas" . Phoronix .
- ^ a b Corbet, Jonathan (20 de diciembre de 2017). "El estado actual del aislamiento de la tabla de páginas del kernel" . LWN.net .
- ^ Cimpanu, Catalin (3 de enero de 2018). "Fabricantes de sistemas operativos preparando parches para el error secreto de seguridad de la CPU de Intel" . Ordenador que suena .
- ^ "Spectre, Meltdown: defectos críticos de seguridad de la CPU explicados - ExtremeTech" . ExtremeTech . 2018-01-04 . Consultado el 5 de enero de 2018 .
- ^ a b c d e Corbet, Jonathan (15 de noviembre de 2017). "KAISER: ocultando el kernel del espacio de usuario" . LWN.net .
- ^ a b c d e Gruss, Daniel; Lipp, Moritz; Schwarz, Michael; Fellner, Richard; Maurice, Clémentine; Mangard, Stefan (24 de junio de 2017). KASLR ha muerto: Larga vida a KASLR (PDF) . Ingeniería de Software y Sistemas Seguros 2017.
- ^ Corbet, Jonathan (20 de diciembre de 2017). "Aislamiento de tabla de página del núcleo combinado" . LWN.net .
- ^ Kroah-Hartman, Greg (2 de enero de 2018). "Registro de cambios de Linux 4.14.11" . kernel.org .
- ^ Kroah-Hartman, Greg (5 de enero de 2018). "Registro de cambios de Linux 4.9.75" . kernel.org .
- ^ Kroah-Hartman, Greg (5 de enero de 2018). "Registro de cambios de Linux 4.4.110" .
- ^ @aionescu (14 de noviembre de 2017). "Aislamiento de Windows 17035 Kernel ASLR / VA en la práctica" (Tweet) - a través de Twitter .
- ^ "Apple ya ha implementado parcialmente una solución en macOS para la falla de seguridad de la CPU Intel 'KPTI'" . AppleInsider . Consultado el 3 de enero de 2018 .
- ^ a b Coldewey, Devin (4 de enero de 2018). "¡Kernel panic! ¿Qué son Meltdown y Spectre, los errores que afectan a casi todas las computadoras y dispositivos?" . TechCrunch .
- ^ Gruss, Daniel (3 de enero de 2018). "#FunFact: Enviamos #KAISER a # bhusa17 y lo rechazamos" . Archivado desde el original el 8 de enero de 2018 . Consultado el 8 de enero de 2018 a través de Twitter.
- ^ "Linux kernel 3.14, sección 1.7. Aleatorización del espacio de direcciones del kernel" . kernelnewbies.org . 2014-03-30 . Consultado el 2 de abril de 2014 .
- ^ Bhattacharjee, Abhishek; Lustig, Daniel (29 de septiembre de 2017). Soporte de arquitectura y sistema operativo para memoria virtual . Editores Morgan & Claypool. pag. 56. ISBN 978-1-62705-933-6.
- ^ Kerner, Sean Michael (3 de enero de 2018). "La falla del chip Intel KPTI expone riesgos de seguridad" . eWEEK .
- ^ Jang, Yeongjin; Lee, Sangho; Kim, Taesoo (2016). "Rompiendo la aleatorización del diseño del espacio de direcciones del kernel con Intel TSX" (PDF) . 2016 ACM SIGSAC Conference on Computer and Communications Security . CCS '16. Nueva York, NY, EE. UU .: ACM: 380–392. doi : 10.1145 / 2976749.2978321 . ISBN 978-1-4503-4139-4.
- ^ Gruss, Daniel; Maurice, Clémentine; Fogh, Anders; Lipp, Moritz; Mangard, Stefan (2016). "Prefetch Side-Channel Attacks: omitiendo SMAP y Kernel ASLR" (PDF) . 2016 ACM SIGSAC Conference on Computer and Communications Security . CCS '16. Nueva York, NY, EE. UU .: ACM: 368–379. doi : 10.1145 / 2976749.2978356 . ISBN 978-1-4503-4139-4.
- ^ a b Hund, R .; Willems, C .; Holz, T. (mayo de 2013). "Práctica sincronización de ataques de canal lateral contra el espacio del núcleo ASLR" (PDF) . Simposio del IEEE sobre seguridad y privacidad de 2013: 191–205. doi : 10.1109 / sp.2013.23 .
- ^ "Meltdown" (PDF) .
- ^ "Spectre, Meltdown: defectos críticos de seguridad de la CPU explicados - ExtremeTech" . ExtremeTech . 2018-01-04 . Consultado el 5 de enero de 2018 .
- ^ Coldewey, Devin (4 de enero de 2018). "¡Kernel panic! ¿Qué son Meltdown y Spectre, los errores que afectan a casi todas las computadoras y dispositivos?" . TechCrunch .
- ^ "Una actualización sobre la seguridad de los procesadores AMD" . AMD . 2018-01-04.
- ^ Leyden, John; Williams, Chris (2 de enero de 2018). "La falla de diseño del procesador Intel con fugas de memoria del kernel obliga a Linux, rediseño de Windows" . El registro .
- ^ Freund, Andrés (2 de enero de 2018). "heads up: Fix for Intel hardware bug conducirá a regresiones de rendimiento" . Lista de correo de desarrollo de PostgreSQL (pgsql-hackers) .
- ^ a b Larabel, Michael (2 de enero de 2018). "Puntos de referencia iniciales del impacto en el rendimiento resultante de los cambios de seguridad x86 de Linux" . Phoronix .
- ^ Larabel, Michael (2 de enero de 2018). "El rendimiento de los juegos de Linux no parece afectado por el trabajo de x86 PTI" . Phoronix .
- ^ Larabel, Michael (3 de enero de 2018). "Rendimiento de VM que muestra un impacto mixto con los parches KPTI de Linux 4.15 - Phoronix" . Phoronix .
- ^ Velvindron, Loganaden (4 de enero de 2018). "Impacto en el rendimiento de Linux KPTI en cargas de trabajo reales" . Loganaden Velvindron . Consultado el 5 de enero de 2018 .
enlaces externos
- Parche de documentación de KPTI