CROSSTalk una vulnerabilidad de fuga de datos y si… afecta a Intel
Sencillamente Intel no ha dejado de ser el blanco de diversas vulnerabilidades que conducen a la fuga de datos y de ellas hemos hablado bastante aquí en el blog y en esta nueva, Intel sigue sin serla excepción.
Y es que un equipo de investigadores de la Universidad Libre de Amsterdam ha identificado una nueva vulnerabilidad (CVE-2020-0543) en las estructuras de microarquitectura de los procesadores Intel, la cual es notable por el hecho de que permite restaurar los resultados de algunas instrucciones ejecutadas en otro núcleo del CPU.
Esta es la primera vulnerabilidad del mecanismo de ejecución especulativa de instrucciones, que permite la fuga de datos entre núcleos de CPU separados (anteriormente, las fugas se limitaban a diferentes subprocesos de un núcleo).
Los investigadores llamaron al problema CROSSTalk, pero los documentos de Intel se refieren a la vulnerabilidad como SRBDS (Muestra de datos de búfer de registro especial).
Sobre CROSSTalk
La vulnerabilidad pertenece a la clase de problemas MDS, introducida hace un año, y se basa en la aplicación de métodos de análisis de terceros a los datos en estructuras de microarquitectura.
El principio de CROSSTalk está cerca de la vulnerabilidad RIDL, pero difiere en la fuente de la fuga. La nueva vulnerabilidad manipula una fuga de un búfer intermedio previamente indocumentado que se comparte entre todos los núcleos de CPU.
La esencia del problema es que algunas instrucciones de microprocesador, incluidas RDRAND, RDSEED y SGX EGETKEY, se implementan utilizando la operación de microarquitectura interna SRR (Lecturas de registro especiales).
En los procesadores vulnerables, los datos devueltos para SRR se depositan en un búfer intermedio común a todos los núcleos de la CPU, después de lo cual se transfiere al búfer de llenado asociado con el núcleo físico específico de la CPU en el que se inicia la operación de lectura. A continuación, desde el búfer de relleno, el valor se copia en los registros visibles para las aplicaciones.
El tamaño del búfer compartido intermedio corresponde a la línea de caché, que generalmente es más grande que el tamaño de los datos leídos y las diferentes operaciones de lectura afectan diferentes compensaciones en el búfer.
Como el búfer compartido se copia en todo el búfer de llenado, no solo se mueve la parte necesaria para la operación actual, sino también los datos restantes de otras operaciones, incluidas las realizadas en otros núcleos de CPU.
Si el ataque se organiza con éxito, un usuario local autenticado en el sistema puede determinar el resultado de ejecutar las instrucciones RDRAND, RDSEED y EGETKEY en un proceso extraño o dentro del enclave Intel SGX, independientemente del núcleo de la CPU en el que se ejecuta el código.
Los investigadores que descubrieron el problema publicaron un prototipo de exploit que demostraba la posibilidad de filtrar información sobre valores aleatorios obtenidos a través de las instrucciones RDRAND y RDSEED para restaurar la clave privada ECDSA procesada en el enclave Intel SGX después de realizar solo una operación firmada digitalmente en el sistema.
Con ello se demostró que una amplia gama de procesadores Intel para computadoras de escritorio, móviles y servidores, incluidas Core i3, i5, i7, i9, m3, Celeron, Atom, Xeon, Xeon escalable, etc, son vulnerables.
Es de destacar que Intel fue notificado de la vulnerabilidad en septiembre de 2018 y en julio de 2019 se proporcionó un exploit prototipo que mostró una fuga de datos entre los núcleos de la CPU, pero el desarrollo de la solución se retrasó debido a la complejidad de su implementación.
En la actualización de microcódigo propuesta hoy, el problema se bloquea cambiando el comportamiento de las instrucciones RDRAND, RDSEED y EGETKEY para sobrescribir los datos en el búfer compartido para evitar que la información residual se asiente en él.
Además, la suspensión de acceso al búfer se aplica hasta que se completan las operaciones de lectura y escritura.
Un efecto secundario de esta protección es un aumento en los retrasos cuando se ejecutan RDRAND, RDSEED y EGETKEY, y una reducción en el rendimiento cuando se intenta ejecutar estas instrucciones simultáneamente en diferentes procesadores lógicos. Estas características pueden afectar negativamente el rendimiento de algunas aplicaciones.
Fuente: https://www.vusec.net