Cuando los investigadores de seguridad quieren entender qué hace realmente un procesador moderno con el tipo de detalle que determina si ataques como Spectre y Meltdown son posibles, normalmente ejecutan sus experimentos sobre un sistema operativo que nunca fue creado para ese trabajo. Abren macOS o Linux, parchean el kernel a mano y esperan que las modificaciones se mantengan. El enfoque es inestable, difícil de reproducir y en las plataformas de Apple está previsto que quede obsoleto.
Un equipo del Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL) del MIT decidió construir algo diferente. Fractal, un nuevo núcleo de sistema operativo escrito desde cero, trata el hardware en sí como objeto de estudio. Su primer uso importante, una mirada profunda a los predictores de rama (la forma que tiene la CPU de adivinar qué código ejecutar a continuación antes de saberlo con certeza), para no tener que perder el tiempo esperando para descubrirlo) dentro del procesador M1 de Apple, ya ha arrojado hallazgos que trabajos anteriores omitieron, incluida la primera evidencia de que una clase de ataque especulativo conocido como «Phantom» afecta a Apple Silicon.
«Estamos utilizando hardware en formas para las que no fue diseñado», dice Joseph Ravichandran, el estudiante de doctorado del MIT que dirigió el proyecto. «Ni siquiera es obvio que esto sea algo posible que se pueda hacer con el hardware. Pero encontramos una manera de sacar todas estas primitivas diferentes. Es como un microscopio. Si tienes una lupa de mano, puedes ver un poco. Pero si tuvieras un microscopio electrónico, ahora estamos realmente hablando. Eso es lo que es Fractal. El microscopio electrónico de los sistemas operativos».
Una sala limpia para la investigación de chips
El problema central que resuelve Fractal es uno en el que los investigadores han trabajado durante años. Los procesadores modernos mantienen el estado en muchas estructuras internas: predictores de bifurcación, cachés, búferes de traducción y más. Para estudiar cómo se comportan esas estructuras a través del límite entre el código de usuario y el código del núcleo, dos dominios que se supone que el chip debe mantener aislados, los investigadores deben ejecutar experimentos casi idénticos en cada lado de ese límite. En un sistema operativo de propósito general, eso es muy difícil. El propio sistema gestiona los niveles de privilegios, los espacios de direcciones y la programación, e inyecta su propia actividad en cada medición.
Fractal invierte el modelo. Arranca directamente desde cero, sin ningún otro software en ejecución, y expone primitivas que permiten que un solo experimento cambie los niveles de privilegio en tiempo de ejecución mientras ejecuta las mismas instrucciones en el mismo espacio de direcciones. El equipo llama a la técnica subyacente concurrencia de privilegios múltiples y se basa en una nueva construcción que introdujeron: el subproceso externo del kernel, que se encuentra dentro de la memoria de un proceso de usuario pero se ejecuta con privilegios del kernel.
El resultado es una configuración experimental casi sin ruido de fondo. Donde las mediciones tomadas bajo macOS o Linux se ven borrosas por las interrupciones, la actividad del programador y la administración del espacio de direcciones, Fractal produce líneas de base planas y señales limpias.
Lo que Fractal encontró en la M1
El M1 de Apple implementa una especificación ARM llamada CSV2, que se supone que evita que el código que se ejecuta en un nivel de privilegio impulse la especulación en otro. Utilizando Fractal, el equipo del MIT confirmó que la protección funciona para la etapa de ejecución de la predicción de rama indirecta: un programa en modo de usuario no puede hacer que el núcleo ejecute especulativamente un objetivo elegido a través del predictor de rama indirecta.
Pero el equipo también encontró algo que los diseñadores del chip quizás no pretendían. La CPU todavía busca el objetivo en el caché de instrucciones antes de que se active la protección. Esa búsqueda es observable a través de un canal lateral, lo que significa que el código de usuario aún puede influir en lo que el kernel introduce en sus cachés a través del límite de privilegios. El mismo patrón apareció entre procesos a los que se les asignaron diferentes identificadores de espacio de direcciones.
El equipo también produjo la primera evidencia de que Apple Silicon exhibe especulación fantasma, un tipo de predicción errónea demostrada anteriormente solo en los procesadores AMD e Intel. En Phantom, la CPU puede malinterpretar las instrucciones ordinarias, incluida una no operativa, como bifurcaciones, lo que desencadena un comportamiento especulativo que el programa nunca solicitó. En el M1, Fractal demostró que las recuperaciones de Phantom tienen éxito tanto en niveles de privilegios como en espacios de direcciones, aunque la fase de ejecución permanece bloqueada.
Un experimento separado de Fractal anuló un hallazgo de un trabajo anterior sobre el predictor de rama condicional del M1, que había informado que el entrenamiento de privilegios cruzados funcionaba en los núcleos de rendimiento de Apple pero no en sus núcleos de eficiencia. El equipo de Fractal demostró que el predictor de rama condicional no tiene ningún aislamiento de privilegios, en ninguno de los tipos de núcleo, y que el resultado anterior probablemente fue un artefacto de macOS que migra silenciosamente subprocesos entre núcleos durante las llamadas al sistema.
«Para nosotros, es una verdadera variable independiente», dijo Ravichandran. «Se cambia el nivel de privilegio, nada más cambia. Lo único que podría explicar si el ataque tiene éxito o no es el nivel de privilegio».
Una herramienta, no única
Fractal admite x86_64, ARM64 y RISC-V y consta de más de 31.000 líneas de código. El equipo lo diseñó como infraestructura en lugar de como un experimento único, con llamadas familiares al sistema POSIX, una biblioteca C y puertos de herramientas estándar como vim, GCC y dash shell, para que los investigadores puedan mover el código del experimento existente con una fricción mínima.
El equipo del MIT reveló sus hallazgos sobre M1 al equipo de seguridad de productos de Apple. En un cambio inusual, los ingenieros de Apple también examinaron Fractal.
La ambición a largo plazo es mayor que cualquier resultado individual. Ravichandran quiere que Fractal se convierta en la investigación de microarquitectura lo que herramientas como QEMU y FFmpeg son en sus campos: infraestructura compartida sobre la que construye toda la comunidad. «Mi esperanza es que nuestros resultados como comunidad sean significativamente más confiables y precisos», dice Ravichadran. «Con este ruido reducido, esta claridad y esta garantía de que está ejecutando el núcleo correcto, el sistema correcto».
«Fractal es una fuerte contribución a la arquitectura porque convierte un flujo de trabajo de ingeniería inversa microarquitectónica, a menudo ad hoc, en una infraestructura de investigación reutilizable», dice el profesor asistente de la Universidad del Sur de California, Mengyuan Li, que no participó en el artículo. «Al reducir el ruido del software y brindar a los investigadores un control más estricto sobre los límites de privilegios, los experimentos de hardware difíciles son mucho más fáciles de interpretar».
Escrito por Raquel Gordon
Fuente: Instituto de Tecnología de Massachusetts
