TLBleed
TLBleed es una vulnerabilidad de hardware en algunos procesadores modernos que tienen un búfer de traducción de comandos y admiten subprocesos múltiples simultáneos. La vulnerabilidad permite que una aplicación de usuario (un atacante local, cuando se inicia un programa especial) que se ejecuta en uno de los subprocesos de hardware extraiga información sin autorización sobre la ejecución de otro subproceso utilizando un canal encubierto . La fuga de información se puede utilizar potencialmente para acceder de forma segura a datos confidenciales que otro subproceso está procesando.
Breve descripción
TLBleed es un ataque de canal lateral y, por lo tanto, comparte similitudes con otras vulnerabilidades de microprocesadores como Meltdown y Spectre . El enfoque tradicional para explotar dichas vulnerabilidades se basa en medir el tiempo de acceso a las celdas de la memoria caché del procesador individual para determinar qué celdas específicas fueron cargadas en la memoria caché por el proceso atacado. De esta forma, es posible extraer información indirecta sobre la ejecución y datos protegidos del proceso víctima. En el caso de un ataque TLBleed, el canal lateral no es un caché de datos regular, sino el búfer de traducción asociativo (TLB), un caché especial que almacena correspondencias entre las páginas de memoria virtual y las páginas de memoria física del procesador, que se utiliza para acelerar la traducción. de direcciones virtuales. Una oportunidad de ataque clave la proporciona el hecho de que en la implementación del modo de subprocesos múltiples simultáneos (SMT) en los procesadores Intel, el búfer de traducción asociativo se comparte y es utilizado por todos los subprocesos de hardware simultáneamente (puede existir un canal de terceros similar en el microprocesador). implementaciones de otras empresas, pero dicho análisis aún no se ha producido).
La esencia del ataque es la siguiente. El tiempo de acceso a las celdas TLB individuales determina a qué páginas de memoria accede el proceso atacado. Al mismo tiempo, incluso la granularidad mínima de direccionamiento (4096 bytes en los sistemas modernos) no es suficiente para obtener directamente los datos del proceso atacado (por ejemplo, la vulnerabilidad Meltdown utiliza el direccionamiento indirecto para cargar y luego identificar una celda de caché específica, el cuya dirección determina parte del secreto ). Sin embargo, al analizar la naturaleza del acceso a la memoria (orden de acceso a las páginas de memoria, intervalos entre accesos) utilizando métodos de aprendizaje automático , es posible identificar una sección del código ejecutable. Si, por ejemplo, en el algoritmo de encriptación, al procesar un "1" lógico, se llama a una sección del código, y al procesar un "0" lógico, otra, resulta posible restaurar completamente los datos encriptados.
Historia
El estudio original fue hecho público por un grupo de científicos de la Universidad Libre de Ámsterdam el 22 de junio de 2018. Los detalles de la vulnerabilidad fueron revelados más tarde por el líder del proyecto, Ben Gras, en la conferencia de seguridad informática Black Hat . [1] [2] A pesar de que la vulnerabilidad se demostró en muchos procesadores Intel de varias arquitecturas modernas, la empresa se negó a solicitar un identificador CVE para la vulnerabilidad, citando su insignificancia. Según los investigadores, esta posición no refleja el estado real de las cosas, ya que TLBleed es un tipo de ataque significativamente nuevo, representa una amenaza importante y puede servir como punto de partida para la búsqueda de otras vulnerabilidades similares. [3]
Mecanismo
Para implementar el ataque descrito, es necesario resolver una serie de problemas técnicos:
- Averigüe de antemano la configuración de TLB (asociatividad, tamaño) en el procesador utilizado. Para hacer esto, puede usar fuentes abiertas de información [4] o usar ingeniería inversa usando instrucciones de bajo nivel [5] . Además de los datos sobre los parámetros TLB, también se requiere averiguar la correspondencia entre las direcciones virtuales y las celdas TLB para luego poder rastrear el estado de celdas arbitrarias accediendo a las direcciones virtuales requeridas. En el caso más simple, la ubicación del búfer de traducción asociativa está determinada por los bits bajos de la dirección de la página, pero se pueden usar funciones de mapeo más complejas, como XOR bit a bit del número de flujo y ciertos bits de la dirección de la página.
- Encuentre una forma de rastrear los accesos del proceso atacado a las celdas TLB. Los autores del estudio utilizan un ataque de tiempo de acceso clásico para determinar si el proceso de la víctima ha utilizado una determinada celda TLB. Se introduce una complejidad adicional por el hecho de que, como regla, el búfer de traducción asociativo en los procesadores modernos es una estructura de dos niveles (similar a la organización jerárquica del caché , L1 TLB y L2 TLB). Sin embargo, es posible determinar a partir del tiempo de acceso si la dirección de la página requerida está en el TLB de uno de los niveles (de lo contrario, se realiza el procedimiento de traducción multinivel de la dirección virtual, que lleva cientos de ciclos de procesador). ).
- Ejecute código malicioso en el mismo núcleo de hardware que el hilo del proceso de la víctima. Se argumenta que el cumplimiento de esta condición para la implementación real de la vulnerabilidad es muy difícil y requiere esfuerzos no triviales. Sin embargo, los sistemas operativos modernos proporcionan mecanismos para vincular procesos a núcleos de hardware de procesadores específicos, lo que simplifica enormemente la tarea. [6]
- Utilizar las estadísticas de accesos del proceso víctima a varias celdas TLB para recuperar información sobre la ejecución del proceso atacado. El atacante tiene total libertad de elección sobre cómo y qué información extraer de las estadísticas recopiladas. En particular, se puede intentar determinar qué sección del código está ejecutando el proceso atacado en un momento u otro. En este caso, la tarea se plantea como la restauración de la dependencia , donde está el vector de llamadas a celdas TLB en función del tiempo, y es la sección de código requerida. En muchos casos, esta información es suficiente para reproducir fielmente los datos procesados. En particular, ciertas operaciones se realizan en algoritmos de cifrado en función de los bits entrantes, lo que permite aprovechar la vulnerabilidad.
Influencia
A partir de agosto de 2018, la vulnerabilidad solo se demostró en los procesadores Intel. Se supone que los procesadores de otras empresas, en los que los subprocesos de hardware comparten el búfer de traducción de páginas, también pueden ser vulnerables a este tipo de ataque, pero no se han presentado implementaciones del concepto. [7] AMD afirma que sus procesadores no se ven afectados por la vulnerabilidad. [3]
Después de la publicación de información sobre la vulnerabilidad, el proyecto OpenBSD deshabilitó por completo el soporte para subprocesos múltiples simultáneos en el sistema. [8] [9] El jefe de OpenBSD Theo de Raadt cree que, a pesar de que la vulnerabilidad puede eliminarse teóricamente al prohibir que los procesos de diferentes contextos se ejecuten en núcleos de procesador comunes, en la práctica tal solución no es factible debido a la complejidad. . [ocho]
Mecanismos de defensa
- La forma principal y obvia de eliminar la vulnerabilidad es deshabilitar el modo de subprocesos múltiples simultáneos ( Hyper Threading ). Obviamente, deshabilitar SMT conduce a una caída significativa en el rendimiento y al uso ineficiente del hardware del microprocesador. Aplicado al sistema OpenBSD . [ocho]
- Separación de acceso de software de subprocesos de hardware en la línea de caché TLB. Para usar el método, se requiere prohibir que cada uno de los subprocesos de hardware acceda a ciertas áreas de la memoria virtual, de modo que, como resultado, las líneas TLB utilizadas por los subprocesos no se crucen. El método es difícil de implementar, ya que viola el concepto de memoria virtual coherente . Sin embargo, este enfoque se puede aplicar potencialmente a nivel del sistema operativo y no requiere cambios de hardware.
- Separación de hilos de acceso de hardware en TLB. De hecho, requiere la división del TLB común en varios búferes independientes direccionados por cada uno de los flujos por separado. Se debe esperar una degradación del rendimiento debido a una disminución en el tamaño total de TLB por subproceso de hardware.
Véase también
- Meltdown es un ataque de ejecución especulativa similar que rompe el aislamiento entre los procesos y el kernel del sistema operativo dentro del mismo contexto de ejecución.
- Spectre es un ataque similar basado en la ejecución especulativa que rompe el aislamiento entre los procesos del sistema.
Notas
- ↑ Black Hat EE. UU. 2018 . www.blackhat.com Fecha de acceso: 19 de diciembre de 2018. Archivado desde el original el 7 de enero de 2019. (indefinido)
- ↑ Ataque de CPU de canal lateral TLBleed detallado en Black Hat . eSEMANA. Recuperado: 19 de diciembre de 2018. (indefinido)
- ↑ 12Williams , Chris . Conozca TLBleed: un ataque de CPU con fuga de claves criptográficas del que Intel cree que no deberíamos preocuparnos , The Register ( 22 de junio de 2018). Archivado desde el original el 8 de diciembre de 2018. Consultado el 19 de diciembre de 2018.
- ↑ WikiChip- WikiChip . es.wikichip.org. Consultado el 19 de diciembre de 2018. Archivado desde el original el 26 de octubre de 2020.
- ↑ [ https://www.cs.vu.nl/~giuffrida/papers/revanc_eurosec17.pdf RevAnC: un marco para cachés de tablas de página de hardware de ingeniería inversa] // el décimo taller europeo. Archivado desde el original el 20 de diciembre de 2018.
- ↑ sched_setaffinity(2) - Página del manual de Linux . man7.org. Consultado el 19 de diciembre de 2018. Archivado desde el original el 20 de diciembre de 2018. (indefinido)
- ↑ Halfacree, Gareth . Los investigadores advierten sobre la vulnerabilidad TLBleed Hyper-Threading (inglés) , bit-tech.net (25 de junio de 2018). Archivado desde el original el 13 de febrero de 2019. Consultado el 19 de diciembre de 2018.
- ↑ 1 2 3 El jefe de OpenBSD, de Raadt, dice que no hay una solución fácil para el nuevo error de la CPU de Intel . www.itwire.com (25 de junio de 2018). Consultado el 25 de junio de 2018. Archivado desde el original el 25 de junio de 2018.
- ↑ OpenBSD deshabilita la compatibilidad con hyperthreading para CPU Intel debido a posibles filtraciones de datos . www.itwire.com (21 de junio de 2018). Fecha de acceso: 19 de diciembre de 2018. Archivado desde el original el 9 de julio de 2018.
Enlaces
Ataques de hackers de la década de 2010 |
---|
Los ataques más grandes |
|
---|
Grupos y comunidades de hackers |
|
---|
piratas informáticos solitarios |
|
---|
Vulnerabilidades críticas detectadas |
- Heartbleed (SSL, 2014)
- Bashdoor (Bash, 2014)
- CANICHE (SSL, 2014)
- Rootpipe (OSX, 2014)
- JASBUG (Windows, 2015)
- Stagefright (Android, 2015)
- DROWN (TLS, 2016)
- Badlock (SMB/CIFS, 2016)
- Vaca sucia (Linux, 2016)
- Azul eterno ( SMBv1 , 2017)
- Doble Pulsar (2017)
- KRACK (2017)
- ROCA (2017)
- Nacido en azul (2017)
- Fusión (2018)
- Espectro (2018)
- Torreón azul (2019)
|
---|
Virus informáticos |
|
---|
Década de 2000 • Década de 2010 • Década de 2020 |