Los Apple M1, M2 y M3 son vulnerables a los ataques «Side-Channel», sobre todo con ordenadores cuánticos, y no se puede corregir por hardware
Apple tiene un problema, y muy serio, por no decir lo que comúnmente llamamos como "marrón", con los chips de la serie M, es decir, todos los que integran los Macbook en sus distintas versiones sin importar cuál sea, ni de portátil ni de SoC. Y es que investigadores de diversas universidades han descubierto una vulnerabilidad gravísima que han denominado como GoFetch, la cual, deja la seguridad criptográfica de Apple en pañales donde un atacante no necesita ni siquiera privilegios en el Sistema Operativo.
Todo se basa en los DMP (Memory-Dependent Prefetched) que integran todos los SoC diseñados por Apple dentro de la gama M, los cuales dejan vendida la seguridad criptográfica de estos chips, permitiendo extraer cualquier clave por y mediante métodos de criptografía. Esto supone que cualquier ordenador cuántico es capaz de sacar claves RSA de 2.048 bits de forma casi inmediata, y otras como Dilithium-2 en apenas 10 horas, dejando la seguridad de los Macbook por el suelo.
Apple soñará con GoFetch este 2024: así funciona la vulnerabilidad que deja vendidos a los SoC M1, M2 y M3
Primero los créditos para los descubridores, porque han sido muchos y no les ha sido fácil:
- Boru Chen, Universidad de Illinois Urbana-Champaign
- Yingchen Wang, Universidad de Texas en Austin
- Pradyumna Shome, Instituto de Tecnología de Georgia
- Christopher W. Fletcher, Universidad de California, Berkeley
- David Kohlbrenner, Universidad de Washington
- Riccardo Paccagnella, Universidad Carnegie Mellon
- Daniel Genkin, Instituto de Tecnología de Georgia
Dicho esto, volvemos a tener una vulnerabilidad de tipo Side-Channel, solo que ahora permite la extracción de claves en un entorno concreto y bastante coloquial para una CPU o SoC como son las ejecuciones de protocolos criptográficos.
Como decíamos arriba, todo se basa en los DMP, en concreto, en los Prefetched, como bien informan sus descubridores, pero antes, vamos a explicarlos muy brevemente, porque si no la explicación queda un poco coja de argumentos.
Qué son y para qué sirven los DMP
Los DMP son componentes físicos dentro del hardware, es decir, dentro del chip, es una parte física que tiene un objetivo concreto: mejorar el rendimiento de la CPU logrando una menor latencia entre la memoria RAM y la caché, donde para ello optimiza el proceso de movimiento de la información gracias a la anticipación.
Esto no solamente mejora la latencia al intentar anticipar los datos necesarios para la caché desde la RAM antes de que sean necesarios para los Cores, es que este proceso se basa en estadísticas anteriores de acierto en los últimos modelos de Apple (también en los Core 13 y Core 14, que incluyen DMP, pero no están afectados por su DOIT especial), y ello mejora la eficiencia del chip en cuestión.
¿Cómo funciona GoFetch exactamente?
Entendido qué es un DMP y cómo funciona, así como cuál es su tarea, vamos con la explicación de la vulnerabilidad GoFetch según sus descubridores:
Los Prefetchers suelen mirar las direcciones de los datos a los que se accede (ignorando los valores de los datos a los que se accede, curiosamente) e intentan adivinar direcciones futuras que podrían ser útiles. El DMP es diferente en este sentido, ya que además de las direcciones, también utiliza los valores de los datos para hacer predicciones (predecir las direcciones a las que ir y buscar previamente).
En particular, si un valor de datos “parece” un puntero (pointer como término), será tratado como una “dirección” (¡donde en realidad no lo es!) y los datos de esta “dirección” se llevarán a la caché. La llegada de esta dirección a la caché es visible y se filtra a través de los canales laterales (los llamados Side-Channel) de esa misma caché.
Nuestro ataque explota este hecho. No podemos filtrar claves de cifrado directamente, pero lo que podemos hacer es manipular datos intermedios dentro del algoritmo de cifrado para que parezcan un puntero a través de un ataque de entrada elegido.
Luego, el DMP ve que el valor de los datos "parece" y cree que es una dirección y trae los datos de esta "dirección" a la caché, lo que filtra la "dirección". No nos importa que el valor de los datos se obtenga previamente, pero el hecho de que los datos intermedios parezcan una dirección los hace visibles a través de un canal de caché y es suficiente para revelar la clave secreta con el tiempo.
Apple GoFetch no se puede solucionar en el hardware, solo se puede parchear por software y tendrá un gran coste en el rendimiento
Al ser un problema de hardware, es decir, a nivel del silicio, de arquitectura propiamente dicho, no hay parche posible en estos términos. Lo único que puede hacer Apple ahora es parchearlo mediante software, y claro, parchear un "agujero" de este calibre donde la criptografía está expuesta a cualquier ataque con ordenadores cuánticos muy potentes en apenas horas, o segundos, dependiendo de los qbits (cúbit o qubit, como cada uno guste) de los que estemos hablando, será un problema para los de la manzana.
Apple va a tener que hacer serios cambios en el código del hardware a nivel microcódigo interno de los SoC de la serie M, donde lo más clave a tratar es que la programación del nuevo firmware debe ser en tiempo constante, es decir, no puede dejar que la encriptación no se compruebe constantemente.
Esto ya ha sido visto en otros ataques de Side-Channel y en todos ha habido penalizaciones de rendimiento, en unos más y en otros menos. El problema es que en el caso de Apple con GoFetch se va a tener que hacer las comprobaciones constantemente para su algoritmo criptográfico, en otras palabras, Apple tiene que implementar una defensa constante y específica para dicho algoritmo, y esto en coste de rendimiento es muy alto para el SoC.
Según se informa, esto será especialmente duro en los M1 y M2, menos en el M3. Resulta que Apple creó un DMP más avanzado para su último SoC, donde dejó en el algoritmo un bit especial que permite invocarse para desactivar la función. No es la panacea, pero podría lograr que la pérdida de rendimiento fuera levemente menor.
Intel aprendió de las vulnerabilidades anteriores y está a salvo gracias a un bit DOIT en una de sus ISA
Esto en Intel no ocurrirá porque Raptor Lake como arquitectura introductora de los DMP en el equipo azul tiene un bit DOIT especial que desactiva dichos DMP mediante una extensión ISA.
Sea como fuere, Apple tiene un problema realmente grave con GoFetch y es cuestión de tiempo que encuentre una solución habiendo casos previos en otras arquitecturas. Solo necesitamos saber cuándo lanzarán el parche y cuánto rendimiento van a perder sus SoC M1, M2 y M3 para sus Macbook, porque el golpe será bastante fuerte, eso seguro.