KPTI: la nueva característica del kernel para mitigar el “derrumbe”

un nuevo conjunto de vulnerabilidades fueron revelados recientemente. Como parte de la mitigación del “colapso”, el kernel introdujo una nueva característica llamada Aislamiento de tabla de páginas del kernel (KPTI). Este fue un gran cambio que se produjo al final del ciclo típico de desarrollo del kernel, pero brinda una protección importante con alguna penalización en el rendimiento. Kernels actualizados para versiones compatibles de Fedora contienen los parches KPTI. Este artículo es una descripción general de alto nivel de cómo funciona KPTI.

Los procesadores modernos para computadoras de escritorio ofrecen diferentes niveles de seguridad para ejecutar código. El núcleo se ejecuta en el nivel más privilegiado (“espacio del núcleo”) ya que necesita acceder a todas las partes del hardware. Casi todas las demás aplicaciones se ejecutan en un nivel de privilegio más bajo (“espacio de usuario”) y realizan llamadas al sistema en el kernel para acceder a datos privilegiados.

Los procesadores modernos para computadoras de escritorio también admiten memoria virtual . El núcleo se configura tablas de paginas para controlar el mapeo entre una dirección virtual y una dirección física. El acceso entre el kernel y el espacio de usuario también está controlado por tablas de páginas. El espacio de usuario no puede acceder a una página asignada para el kernel, aunque el kernel normalmente puede acceder al espacio de usuario.

La traducción de estas asignaciones puede ser costosa, por lo que el hardware tiene una búfer de búsqueda de traducción (TLB) para almacenar asignaciones. A veces, es necesario eliminar las asignaciones antiguas (“vaciar el TLB”), pero hacerlo es costoso y el código se escribe para minimizar dichas llamadas. Un truco aquí es tener siempre mapeadas las tablas de páginas del kernel cuando se están ejecutando los procesos del usuario. Los permisos de la tabla de páginas evitan que el espacio de usuario acceda a las asignaciones del kernel, pero el kernel puede acceder a las asignaciones inmediatamente cuando se realiza una llamada al sistema.

Meltdown exploit y cómo KPTI lo mitiga

El exploit meltdown demostró que tener el mapeo del kernel disponible en el espacio del usuario puede ser riesgoso. Los procesadores modernos obtienen datos de todas las asignaciones para ejecutarse lo más rápido posible. Los datos que se obtienen previamente dependen de la implementación de la CPU. Cuando un programa de espacio de usuario en ejecución accede a un mapeo del kernel, se producirá una falla y, por lo general, bloqueará el programa. Sin embargo, la CPU puede obtener datos del núcleo sin causar ningún cambio en el programa en ejecución. La captación previa no suele ser un riesgo de seguridad porque todavía hay verificaciones de permisos en las direcciones para que los programas de espacio de usuario no puedan acceder a los datos del kernel. Lo que los investigadores de meltdown descubrieron fue que era posible medir cuánto tiempo tardaban los accesos a datos en datos precargados para obtener información sobre el sistema. Esto es lo que se conoce como un ataque de canal lateral . Los parches de KPTI modificaron la forma en que se configuran las tablas de páginas para que el núcleo ya no esté mapeado en el espacio de usuario. Esto significa que el espacio de usuario no puede precargar ningún dato del kernel y, por lo tanto, se mitiga el exploit.

En realidad, escribir un ataque para recopilar datos útiles de este exploit puede demorar semanas o meses en desarrollarse para un solo sistema. Aún así, en aras de la seguridad, los parches KPTI se fusionaron para close este agujero El efecto secundario de no tener siempre mapeadas las tablas de páginas del kernel significa que los TLB deben vaciarse con más frecuencia, lo que provoca una penalización del rendimiento. Por defecto, Fedora tiene KPTI habilitado para brindar seguridad a los usuarios. KPTI se puede desactivar pasando “nopti” en la línea de comandos si los usuarios no quieren el impacto en el rendimiento.

Related Posts