
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 los intentos de eludir la aleatorización del diseño del espacio de direcciones del kernel (KASLR). Funciona aislando mejor la memoria del espacio de usuario y del espacio del kernel. [ 5 ] [ 6 ] KPTI se fusionó con la versión 4.15 del kernel de Linux, [ 7 ] y se adaptó a versiones anteriores de 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 ]
Información general sobre KAISER
Los parches KPTI se basaron en KAISER (acrónimo de Kernel Address Isolation to have Side-channels Efficiently Removed, aislamiento de direcciones del kernel para eliminar eficazmente los canales laterales ), [ 6 ] una técnica concebida en 2016 [ 14 ] y publicada en junio de 2017, cuando aún no se conocía Meltdown. KAISER dificulta la elusión de KASLR, una solució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 dependen de que las asignaciones de direcciones del kernel permanezcan ocultas para el espacio de usuario. [ 17 ] A pesar de prohibir el acceso a estas asignaciones del kernel, resulta que existen varios ataques de canal lateral en los procesadores modernos que pueden filtrar la ubicación de esta memoria, lo que permite eludir KASLR. [ 6 ] [ 18 ] [ 19 ] [ 20 ]
KAISER abordó estos problemas en KASLR eliminando algunas fuentes de fuga de direcciones. [ 6 ] Mientras que KASLR solo evita la fuga de asignaciones de direcciones, KAISER también evita la fuga de datos, cubriendo así el caso Meltdown. [ 21 ]
KPTI se basa en KAISER. Sin KPTI habilitado, al ejecutar código de espacio de usuario (aplicaciones), Linux mantendría toda su memoria del kernel mapeada en tablas de páginas , aunque protegida del acceso. La ventaja es que cuando la aplicación realiza una llamada al sistema del 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 las sobrecargas relacionadas con el cambio de contexto ( vaciado de la TLB , intercambio de tablas de páginas, etc.). [ 5 ]
Vulnerabilidad a la fusión nuclear y KPTI
En enero de 2018, se publicó la vulnerabilidad Meltdown , conocida por afectar a las CPU x86 de Intel y ARM Cortex-A75 . [ 4 ] [ 13 ] Era una vulnerabilidad mucho más grave que la omisión de KASLR que KAISER pretendía solucionar originalmente: se descubrió que también se podía filtrar el contenido de la memoria del kernel, no solo las ubicaciones de las asignaciones de memoria, como se pensaba anteriormente.
KPTI (basado conceptualmente en KAISER) previene el Meltdown al impedir que la mayoría de las ubicaciones protegidas se asignen al espacio de usuario.
Actualmente no se sabe que los procesadores AMD x86 se vean afectados por Meltdown y no necesitan KPTI para mitigarlo. [ 13 ] [ 22 ] Sin embargo, los procesadores AMD siguen siendo susceptibles a la omisión de KASLR cuando KPTI está deshabilitado. [ 20 ]
Implementación
KPTI corrige estas fugas separando completamente las tablas de páginas del espacio de usuario y del espacio del kernel. Un conjunto de tablas de páginas incluye direcciones tanto del espacio del kernel como del espacio de usuario, al igual que antes, pero solo se utiliza cuando el sistema se ejecuta en modo kernel. El segundo conjunto de tablas de páginas, para uso en modo usuario, contiene una copia del espacio de usuario y un conjunto mínimo de asignaciones del espacio del kernel que proporciona la información necesaria para entrar o salir de llamadas al sistema, interrupciones y excepciones. [ 5 ]
En los procesadores que admiten los identificadores de contexto de proceso (PCID), se puede evitar el vaciado del búfer de traducción anticipada (TLB), [ 5 ] pero incluso así conlleva un coste de rendimiento significativo, particularmente en cargas de trabajo con muchas llamadas al sistema e interrupciones. [ 23 ]
La sobrecarga se midió en 0,28% según los autores originales de KAISER; [ 6 ] un desarrollador de Linux la midió en aproximadamente 5% para la mayoría de las cargas de trabajo y hasta 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 de 7–17% (o 16–23% sin PCID), [ 24 ] mientras que una prueba de rendimiento completa perdió 13–19% ( Coffee Lake vs. Broadwell-E ). [ 25 ] Phoronix ha realizado muchas pruebas de rendimiento , [ 26 ] [ 27 ] [ 1 ] Redis se ralentizó en 6–7%. [ 25 ] La compilación del kernel de Linux se ralentizó en 5% en Haswell . [ 28 ]
KPTI puede deshabilitarse parcialmente con la opción de arranque del kernel "nopti". También se crearon disposiciones para deshabilitar KPTI si los procesadores más recientes corrigen las fugas de información. [ 2 ]
Referencias
- 1 2 Larabel, Michael (2018-01-03). "Análisis adicional del problema "x86 PTI" de la CPU Intel en más sistemas" . Phoronix .
- 1 2 Corbet, Jonathan (2017-12-20). "El estado actual del aislamiento de la tabla de páginas del kernel" . LWN.net .
- ↑ Cimpanu, Catalin (2018-01-03). "Los fabricantes de sistemas operativos preparan parches para un fallo de seguridad secreto en las CPU de Intel" . Bleeping Computer .
- 1 2 "Spectre, Meltdown: Explicación de fallos críticos de seguridad de la CPU – ExtremeTech" . ExtremeTech . 4 de enero de 2018. Consultado el 5 de enero de 2018 .
- 1 2 3 4 5 Corbet, Jonathan (2017-11-15). "KAISER: ocultando el kernel del espacio de usuario" . LWN.net .
- 1 2 3 4 5 Gruss, Daniel; Lipp, Moritz; Schwarz, Michael; Fellner, Richard; Mauricio, Clementina; 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 (2017-12-20). "Kernel page-table isolation merged" . LWN.net .
- ↑ Kroah-Hartman, Greg (2018-01-02). "Linux 4.14.11 Changelog" . kernel.org .
- ↑ Kroah-Hartman, Greg (2018-01-05). "Linux 4.9.75 Changelog" . kernel.org .
- ↑ Kroah-Hartman, Greg (2018-01-05). "Registro de cambios de Linux 4.4.110" .
- ↑ @aionescu (14-11-2017). "Aislamiento ASLR/VA del kernel de Windows 17035 en la práctica" ( Tweet ) – vía Twitter .
- ↑ "Apple ya ha implementado parcialmente una solución en macOS para la vulnerabilidad de seguridad de la CPU Intel 'KPTI'" . AppleInsider . 3 de enero de 2018. Consultado el 3 de enero de 2018 .
- 1 2 3 Coldewey, Devin (2018-01-04). "¡Pánico del kernel! ¿Qué son Meltdown y Spectre, los errores que afectan a casi todos los ordenadores y dispositivos?" . TechCrunch .
- ↑ Gruss, Daniel (3 de enero de 2018). "#DatoCurioso: Presentamos #KAISER a #bhusa17 y fue rechazado" . Archivado del original el 8 de enero de 2018. Recuperado el 8 de enero de 2018 a través de Twitter.
- ↑ "Núcleo de Linux 3.14, Sección 1.7. Aleatorización del espacio de direcciones del núcleo" . kernelnewbies.org . 30 de marzo de 2014. Consultado el 2 de abril de 2014 .
- ↑ Bhattacharjee, Abhishek; Lustig, Daniel (29 de septiembre de 2017). Soporte arquitectónico y de sistema operativo para memoria virtual . Morgan & Claypool Publishers. pág. 56. ISBN 978-1-62705-933-6.
- ↑ Kerner, Sean Michael (2018-01-03). "Fallo en el chip KPTI de Intel expone riesgos de seguridad" . eWEEK .
- ↑ Jang, Yeongjin; Lee, Sangho; Kim, Taesoo (2016). "Rompiendo la aleatorización del espacio de direcciones del kernel con Intel TSX" (PDF) . Actas de la Conferencia ACM SIGSAC de 2016 sobre seguridad informática y de comunicaciones . CCS '16. Nueva York, NY, EE. UU.: ACM. págs. 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). "Ataques de canal lateral con precarga" (PDF) . Actas de la Conferencia ACM SIGSAC de 2016 sobre seguridad informática y de comunicaciones . CCS '16. Nueva York, NY, EE. UU.: ACM. págs. 368–379 . doi : 10.1145/2976749.2978356 . ISBN 978-1-4503-4139-4. S2CID 15973158 .
- 1 2 Hund, R.; Willems, C.; Holz, T. (mayo de 2013). "Ataques prácticos de canal lateral de temporización contra ASLR en el espacio del kernel" (PDF) . Simposio IEEE de 2013 sobre seguridad y privacidad . págs. 191–205 . doi : 10.1109/sp.2013.23 . ISBN 978-0-7695-4977-4. S2CID 215754624 .
- ↑ "Colapso" (PDF) .
- ↑ "Actualización sobre la seguridad de los procesadores AMD" . AMD . 4 de enero de 2018.
- ↑ Leyden, John; Williams, Chris (2 de enero de 2018). "Un fallo de diseño en el procesador Intel que provoca fugas de memoria del kernel obliga a rediseñar Linux y Windows" . The Register .
- ↑ Freund, Andres (2018-01-02). "Atención: la solución a un error de hardware de Intel provocará regresiones en el rendimiento" . Lista de correo de desarrollo de PostgreSQL (pgsql-hackers) .
- 1 2 Larabel, Michael (2018-01-02). "Initial Benchmarks Of The Performance Impact Resulting From Linux's x86 Security Changes" . Phoronix .
- ↑ Larabel, Michael (2018-01-02). "El rendimiento de los juegos en Linux no parece verse afectado por el trabajo de PTI para x86" . Phoronix .
- ↑ Larabel, Michael (2018-01-03). "El rendimiento de las máquinas virtuales muestra un impacto mixto con los parches KPTI de Linux 4.15 – Phoronix" . Phoronix .
- ↑ Velvindron, Loganaden (2018-01-04). "Linux KPTI rendimiento impactado en cargas de trabajo reales" . Loganaden Velvindron . Recuperado el 2018-01-05 .
Enlaces externos
- 17. Aislamiento de tabla de páginas (PTI) - Documentación del kernel de Linux
- Parche de documentación de KPTI
- Características del kernel de Linux
- Memoria virtual
- Arquitectura X86
- Vulnerabilidades de CPU de ejecución transitoria