Vulnerabilidad de seguridad de fusión

¿Qué es la vulnerabilidad de seguridad Meltdown?
Meltdown, también conocido como Rogue Data Cache Load, es una vulnerabilidad de seguridad que afecta a los microprocesadores del tipo Intel x86, IBM Power y ARM, al permitir que algunos procesos maliciosos lean la memoria, incluso sin autorización.
Explotando la condición de carrera, esta vulnerabilidad permite que un proceso pase por alto la verificación normal de privilegios que evita que un proceso acceda a los datos que pertenecen a otros procesos y al sistema operativo, lo que permite que un proceso no autorizado lea datos desde cualquier dirección que esté asignada al espacio de memoria del proceso actual. . Por lo tanto, los datos de una dirección no autorizada se cargan en la memoria caché de la CPU, desde donde el procesador puede ejecutarlos fácilmente, incluso si el verificador de privilegios identifica de alguna manera el proceso no autorizado que intenta acceder a otras direcciones en la RAM. También es posible que el proceso malicioso lea efectivamente cualquier memoria física, kernel o cualquier otro proceso mapeado, aunque no tenga el permiso para hacerlo.

¿Cómo funciona la explotación de Meltdown?
Meltdown aprovecha las siguientes características inherentes al diseño de la CPU:

  • Memoria virtual
  • Niveles de privilegio
  • Canalización de instrucciones y ejecución especulativa
  • caché de la CPU

Las características anteriores proporcionan la base de la forma en que funcionan todas las CPU modernas y se consideran seguras. Sin embargo, meltdown aprovecha la forma en que interactúan entre sí. Los siguientes puntos explican el mecanismo de explotación:

  1. El espacio de direcciones virtuales de un sistema operativo no tiene verificaciones de control de privilegios para maximizar la eficiencia. El mecanismo de control se encarga del control de privilegios de la CPU. Al igual que cualquier otro proceso, al proceso no autorizado también se le asigna un espacio de direcciones aquí.
  2. Si un proceso intenta leer desde una memoria no autorizada, la CPU programará y canalizará la instrucción de lectura. Antes de que se permita que la instrucción produzca algún resultado, la verificación de privilegios se completará en otro lugar. En el caso de una lectura no autorizada, se le informará a la unidad de ejecución que la instrucción falló la verificación de privilegios.
  3. En las primeras etapas de la ejecución de la instrucción, el programador de la CPU programó dos eventos: una verificación de privilegios y los primeros pasos para ejecutar la instrucción. Como parte de eso, mientras esperaba que se completara la verificación de privilegios, la unidad de ejecución comenzó a buscar los datos. En el caso del proceso no autorizado, los datos procedían de una dirección no autorizada, pero el controlador de memoria aún los obtuvo durante la etapa inicial de ejecución de la instrucción, incluso si luego se descartaron y abandonaron cuando la verificación de privilegios se completó y falló.
  4. A pesar de la falla de la instrucción, la unidad de ejecución ya solicitó los datos y el controlador de memoria los obtuvo para estar listos para procesarlos, y aunque la unidad de ejecución descarta los datos al fallar la verificación de privilegios, la memoria caché de la CPU fue de hecho actualizado como una parte automática de la obtención de datos de la memoria, en caso de que se necesiten los mismos datos en breve por segunda vez. En este punto, Meltdown entra en acción.
  5. Al emplear el ataque de canal lateral de temporización de caché, el proceso no autorizado puede determinar si los datos de una dirección específica se mantienen dentro de la memoria caché de la CPU, incluso si no puede leer los datos reales desde allí.
  6. Si la CPU ha almacenado en caché los datos de alguna dirección, entonces una segunda instrucción para leer esa dirección utilizará la memoria caché de la CPU para el propósito (rápido), si no, la CPU tendría que solicitar que los datos se lean de la memoria (más lento) . El proceso no autorizado puede usar esta diferencia en el tiempo para detectar cuál de estos tuvo lugar y si la dirección ya estaba en la memoria caché de la CPU. Meltdown puede usarlo combinado con otras características del conjunto de instrucciones de la CPU para obtener acceso completo a toda la memoria asignada.
  7. ¿Cómo han abordado esta vulnerabilidad los proveedores de procesadores?
    Descubierta a principios de 2018, la vulnerabilidad de fusión causó mucho pánico en la industria de fabricación de procesadores, así como en varias empresas de hardware/software. Por lo tanto, para combatir esta crisis, Intel. AMD, Snapdraggon, etc. lanzaron distintos parches para sus propios productos. Sin embargo, todos implementaron libremente la misma estrategia de mitigación, llamada aislamiento de la tabla de páginas del kernel, que separa por completo las tablas de páginas del espacio del usuario y del espacio del 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 uso en modo de usuario contiene una copia del espacio de usuario y un conjunto mínimo de asignaciones de espacio de núcleo que proporciona la información necesaria para ingresar o salir de llamadas al sistema, interrupciones y excepciones.

    Aunque KPTI ha permitido que el dispositivo sea invulnerable al problema de fusión, también ha resultado en una pérdida de rendimiento, con algunos procesadores Intel perdiendo hasta un 30 % de su rendimiento. Sin embargo, Intel ha asegurado a sus consumidores que el rendimiento emitido se corregirá con el tiempo.
    También se han publicado varias pautas para ayudar a los usuarios finales a no verse afectados por la vulnerabilidad recién descubierta, que incluyen la actualización periódica del software, no hacer clic en hipervínculos no reconocidos y no descargar software o documentos de fuentes no confiables.

    Referencias : https://en.wikipedia.org/wiki/Meltdown_(security_vulnerability)
    https://meltdownattack.com/

Publicación traducida automáticamente

Artículo escrito por ParthDutt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *