Los recién expuestos Vulnerabilidad de GoFetch que afecta a los chips M1, M2 y M3 de Apple permite a un atacante extraer claves secretas de aplicaciones criptográficas en un sistema objetivo. El exploit funciona ejecutando un proceso fraudulento en el mismo clúster de CPU que el proceso objetivo en la máquina objetivo. Actualmente no existe una mitigación sencilla para esta vulnerabilidad, ya que reside en el hardware.
¿Cuál es la vulnerabilidad de GoFetch?
GoFetch es una vulnerabilidad de canal lateral de caché. Este tipo de vulnerabilidad se dirige a un caché particular del sistema mediante el análisis de datos secundarios.
Los chips de silicio de Apple M1, M2 y M3 poseen un Prefetcher dependiente de la memoria de datos, que es una parte de hardware del chip responsable de predecir las direcciones de memoria de los datos a los que es probable que acceda el código ejecutado en la computadora en un futuro cercano y almacenarlos en un cache. Sin embargo, los DMP, a diferencia de los captadores previos clásicos que solo almacenan el patrón de acceso a la memoria, «también tienen en cuenta el contenido de la memoria de datos directamente para determinar qué captar previamente», como está escrito en la publicación de Boru Chen, Yingchen Wang, Pradyumna Shome, Christopher W. Fletcher, David Kohlbrenner, Riccardo Paccagnella y Daniel Genkin que revela todos los detalles sobre la vulnerabilidad GoFetch.
El DMP tiene un comportamiento que hace posible la vulnerabilidad GoFetch: a veces confunde el contenido de la memoria con el valor del puntero que se utiliza para cargar otros datos. Como explicaron los investigadores, la vulnerabilidad GoFetch se puede explotar creando «entradas elegidas para operaciones criptográficas, de una manera en la que los valores similares a punteros sólo aparezcan si hemos adivinado correctamente algunos bits de la clave secreta». Por lo tanto, al repetir esas operaciones en diferentes bits, es posible adivinar todos los bits de una clave secreta.
Las pruebas realizadas por los investigadores demostraron que era posible extraer claves de productos de cifrado populares (OpenSSL Diffie-Hellman Key Exchange, descifrado Go RSA), pero también de criptografía poscuántica como CRISTALES-Kyber y CRISTALES-Dilitio. Sin embargo, los investigadores escribieron que «si bien demostramos ataques de extremo a extremo en cuatro implementaciones criptográficas diferentes, es probable que más programas estén en riesgo dadas estrategias de ataque similares».
¿Qué es una vulnerabilidad de canal lateral de caché?
Imagina que tienes una caja fuerte cerrada cuyo código no conoces, pero sabes que el sonido que hace el dial cuando lo giras cambia dependiendo del número en el que estés. Entonces, escuchas atentamente el sonido que hace el dial cuando lo giras y puedes descubrir la combinación de esa manera, aunque no sepas los números reales.
Un ataque de canal lateral funciona de manera similar. En lugar de intentar romper el cifrado directamente, un atacante busca otras pistas que puedan revelar la información secreta. Por ejemplo, podrían usar un dispositivo para medir la cantidad de energía que utiliza una computadora mientras realiza operaciones de cifrado. Al analizar los patrones en el uso de energía, pueden descubrir la clave que se utilizó para cifrar los datos, aunque no conozcan el algoritmo. Esta puede ser una forma muy eficaz de eludir las medidas de seguridad y obtener acceso a información confidencial.
¿Cuáles son las condiciones obligatorias para la explotación exitosa de la vulnerabilidad GoFetch?
Para explotar con éxito la vulnerabilidad GoFetch, un atacante primero debe poder ejecutar código con los privilegios del usuario que inició sesión, lo que significa que la computadora objetivo ya ha sido comprometida. Luego, el código de explotación utilizado por el atacante debe ejecutarse como un proceso que se ejecuta en el mismo clúster de CPU de la máquina de destino.
“Estas condiciones no son tan imposibles, lamentablemente el malware lo demuestra todos los días. No se necesitan privilegios especiales”, dijo Fred Raynal, director ejecutivo de Quarkslab, una empresa francesa de seguridad ofensiva y defensiva, en una entrevista escrita concedida a TechRepublic.
Raynal agregó: “En OS X, un proceso no puede acceder (depurar) la memoria de otro proceso para el mismo usuario. Puede, pero aparece una ventana emergente. Con este ataque, no hay ventanas emergentes. Es totalmente invisible y no se necesitan privilegios adicionales para acceder a los datos entre dos procesos”.
¿Qué sistemas son vulnerables a GoFetch?
Las computadoras Apple que poseen el chip M1, M2 o M3 son vulnerables a GoFetch. Hay una diferencia en el M3 porque al desactivar el bit de sincronización independiente de datos se desactiva el DMP, lo que no es posible en el M1 y el M2.
Los investigadores notaron que existe un DMP similar en la última arquitectura de 13.ª generación (Raptor Lake) de Intel, pero con criterios de activación más restrictivos, lo que la hace resistente a la vulnerabilidad GoFetch. Además, al igual que el chip M3, los procesadores Raptor Lake pueden desactivar DMP utilizando el bit de sincronización independiente del operando de datos.
Mitigación de amenazas de GoFetch
Según los investigadores, deshabilitar el DMP generaría fuertes penalizaciones de rendimiento y probablemente no sea posible en las CPU M1 y M2.
Se podrían aplicar técnicas criptográficas similares a las de cegamiento. «Por ejemplo, instrumentando el código para agregar/eliminar máscaras a valores sensibles antes/después de ser almacenados/cargados desde la memoria», explican los investigadores. Sin embargo, una desventaja importante de este enfoque es que requiere cambios de código potencialmente personalizados para DMP en cada implementación criptográfica, así como fuertes penalizaciones de rendimiento para algunos esquemas criptográficos.
También es posible ejecutar únicamente todo el código criptográfico en los núcleos Icestorm, ya que el DMP no se activa en ellos. Sin embargo, esta solución reduciría en gran medida el rendimiento y existe el riesgo de que en el futuro el DMP también se habilite silenciosamente en esos núcleos.
DESCARGAR: Glosario rápido de contramedidas de ciberseguridad de TechRepublic Premium
Por lo tanto, el soporte de hardware parece ser la solución a largo plazo, tal como escriben los investigadores:
“A largo plazo, consideramos que la solución correcta sería ampliar el contrato de hardware y software para tener en cuenta el DMP. Como mínimo, el hardware debe exponer al software una forma de desactivar selectivamente el DMP cuando se ejecutan aplicaciones críticas para la seguridad. Esto ya tiene un precedente incipiente en la industria. Por ejemplo, las extensiones DOIT de Intel mencionan específicamente la desactivación de su DMP a través de una extensión ISA. A más largo plazo, lo ideal sería un control más detallado, por ejemplo, para restringir el DMP para que solo realice una captación previa de búferes específicos o regiones de memoria no sensibles designadas”.
La mejor protección por ahora sigue siendo prohibir la ejecución remota de código en la computadora vulnerable para que un atacante no pueda explotar GoFetch, como ocurre con cualquier otro tipo de código malicioso. Por lo tanto, se recomienda encarecidamente mantener siempre el hardware, los sistemas y el software actualizados y parcheados para evitar verse comprometidos por cualquier malware o atacante que luego pueda ejecutar un exploit de GoFetch.
Además, no se debe permitir a los usuarios instalar ningún software proveniente de terceros que no sean de confianza; También deben tener cuidado con los correos electrónicos de phishing que podrían contener código malicioso o enlaces a código malicioso.
Divulgación: Trabajo para Trend Micro, pero las opiniones expresadas en este artículo son mías.