Sin hackeo ni exploit: un solo bit bastó para derribar la protección.

El especialista en seguridad Christopher Domas descubrió una forma inusual de eludir la protección de la memoria en procesadores antiguos de AMD. Para cambiar la asignación de la memoria RAM basta con modificar un bit en la configuración del controlador, tras lo cual el sistema puede acceder a áreas que normalmente están ocultas incluso para el núcleo del sistema operativo. El método desarrollado por Domas método recibió el nombre Skitter Creek Bath Salts.
El problema afecta a procesadores AMD de las familias 15h y 16h, que se fabricaron en la primera mitad de la década de 2010. AMD confirmó la vulnerabilidad en el boletín AMD-SB-7068. La compañía explicó que los registros del controlador de memoria responsables de la traducción de direcciones del sistema no pueden bloquearse tras su configuración. Un atacante con privilegios suficientes puede modificarlos durante el funcionamiento del equipo.
Normalmente el procesador separa cuidadosamente la memoria ordinaria de la protegida. Algunas regiones de la memoria RAM se reservan para componentes de servicio y no están disponibles ni siquiera para el sistema operativo. Sin embargo, antes de acceder a los módulos de memoria, la dirección física pasa por el controlador, que determina el canal, el módulo, el banco y la celda concretos. Skitter Creek Bath Salts interfiere precisamente en la última etapa de la traducción de direcciones.
Domas demostró que cambiar un bit en un registro del controlador altera el esquema de asignación de direcciones a los bancos de memoria. Como resultado, una misma dirección física comienza a apuntar a otra celda. Los mecanismos de protección del procesador siguen funcionando con las direcciones originales y no detectan la sustitución. De ese modo es posible encontrar una dirección accesible habitual que, tras cambiar el esquema de mapeo, señale la celda deseada dentro de la región cerrada.
La dificultad principal no reside en el propio cambio, sino en determinar adónde se han desplazado los datos. Skitter Creek Bath Salts recopila pares de direcciones originales y modificadas, tras lo cual el solucionador Z3 recupera la transformación matemática entre los dos esquemas de memoria. El mapa resultante permite calcular la dirección mediante la cual se puede acceder a una región protegida concreta de la memoria RAM.
Durante ese cambio el contenido de la memoria queda efectivamente mezclado, por lo que el funcionamiento normal del procesador provocaría rápidamente fallos. El autor del método desactiva temporalmente las interrupciones y los núcleos adicionales, prepara de antemano las cachés y las tablas de traducción de direcciones, modifica la configuración del controlador, lee los datos necesarios y devuelve de inmediato la configuración original. El equipo aún puede quedar bloqueado durante la construcción inicial del mapa, pero una vez obtenido es posible dirigir los accesos a las regiones calculadas con antelación.
En la demostración, Domas accedió a la memoria cerrada del procesador de seguridad de la plataforma AMD (PSP), a la región del modo de gestión del sistema (SMM) y a datos que se almacenan en la memoria RAM cuando el procesador entra en el estado de ahorro de energía C6. El proyecto también contempla acceso a componentes de bajo nivel del procesador, incluido su microcódigo. El autor publicó el código fuente y la descripción técnica de Skitter Creek Bath Salts en GitHub.
Para el usuario normal el peligro inmediato es reducido. El método no permite tomar el control del equipo de forma remota desde cero. Según la estimación de AMD, un atacante necesita previamente privilegios de administrador o la capacidad de ejecutar código a nivel del núcleo. Solo tras obtener tales privilegios se pueden modificar las configuraciones del controlador de memoria y eludir el aislamiento adicional por hardware.
No habrá correcciones para los procesadores afectados. AMD ya ha finalizado el soporte de seguridad para las familias 15h y 16h, por lo que los dispositivos ya no reciben las actualizaciones correspondientes. La compañía indicó la finalización del soporte como el único estado para los modelos afectados.
Skitter Creek Bath Salts fue desarrollado y probado en procesadores de la familia 16h. El autor los eligió en parte porque AMD todavía publicaba una descripción detallada de los registros de traducción de direcciones del controlador de memoria. A partir de la familia 17h, que incluye los procesadores de la arquitectura Zen, esa información desapareció de la documentación pública. Por lo tanto, el trabajo publicado no demuestra que el mismo método sea aplicable a los modernos Ryzen y EPYC.