stringtranslate.com

Intel MPX

Intel MPX ( Memory Protection Extensions ) es un conjunto de extensiones descontinuadas para la arquitectura del conjunto de instrucciones x86 . Con soporte para compiladores , bibliotecas de tiempo de ejecución y sistemas operativos , Intel MPX afirmaba mejorar la seguridad del software al verificar las referencias de puntero cuyas intenciones normales en tiempo de compilación se explotan maliciosamente en tiempo de ejecución debido a desbordamientos de búfer . En la práctica, se han descubierto demasiados fallos en el diseño para que sea útil, y el soporte se ha desaprobado o eliminado de la mayoría de los compiladores y sistemas operativos. Intel ha incluido MPX como eliminado en el hardware de 2019 y posteriores en la sección 2.5 de su Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32, volumen 1. [1]

Extensiones

Intel MPX introduce nuevos registros de límites y nuevas extensiones de conjuntos de instrucciones que operan sobre estos registros. Además, hay un nuevo conjunto de "tablas de límites" que almacenan límites más allá de lo que cabe en los registros de límites. [2] [3] [4] [5] [6]

MPX utiliza cuatro nuevos registros de límites de 128 bits, cada uno BND0de BND3los cuales almacena un par de valores de límite inferior (LB) y límite superior (UB) de 64 bits de un búfer. El límite superior se almacena en forma de complemento a uno , y BNDMK(crear límites) y BNDCU(verificar límite superior) realizan la conversión. La arquitectura incluye dos registros de configuración BNDCFGx( BNDCFGUen el espacio de usuario y BNDCFGSen modo kernel) y un registro de estado BNDSTATUS, que proporciona una dirección de memoria y un código de error en caso de excepción. [7] [8]

La traducción de direcciones de dos niveles se utiliza para almacenar límites en la memoria. La capa superior consta de un directorio de límites (BD) creado al iniciar la aplicación. Cada entrada del BD está vacía o contiene un puntero a una tabla de límites (BT) creada dinámicamente, que a su vez contiene un conjunto de límites de puntero junto con las direcciones lineales de los punteros. Las instrucciones de carga de límites ( BNDLDX) y almacenamiento ( BNDSTX) realizan de forma transparente la traducción de direcciones y los límites de acceso en la entrada BT adecuada. [7] [8]

Intel MPX se introdujo como parte de la microarquitectura Skylake . [9]

La microarquitectura Intel Goldmont también es compatible con Intel MPX. [9]

Soporte de software

Análisis

Un estudio examinó una disección detallada entre capas de la pila del sistema MPX y la comparación con tres importantes mecanismos de protección de memoria basados ​​en software ( AddressSanitizer , SAFECode y SoftBound) y presenta las siguientes conclusiones. [8]

Además, una revisión concluyó que MPX no estaba listo para producción y que AddressSanitizer era una mejor opción. [8] Una revisión realizada por Kostya Serebryany en Google, desarrollador de AddressSanitizer, [22] tuvo hallazgos similares. [23]

Fusión de un reactor

Otro estudio [24] que explora el alcance de las vulnerabilidades de seguridad de Spectre y Meltdown descubrió que Meltdown puede utilizarse para eludir Intel MPX, utilizando la excepción de hardware Bound Range Exceeded (#BR). Según su publicación, los investigadores pudieron filtrar información a través de un canal encubierto Flush+Reload desde un acceso fuera de límites en una matriz protegida por el sistema MPX. Su prueba de concepto no se ha divulgado públicamente.

Véase también

Referencias

  1. ^ Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32 Volumen 1: Arquitectura básica. Intel . Noviembre de 2020 . Consultado el 3 de marzo de 2021 .
  2. ^ "Extensiones ISA de Intel". Intel . Consultado el 4 de noviembre de 2013 .
  3. ^ "Introducción a las extensiones de protección de memoria de Intel". Intel . 16 de julio de 2013 . Consultado el 10 de septiembre de 2013 .
  4. ^ "Discusión sobre las extensiones de protección de memoria (MPX) de Intel y comparación con AddressSanitizer". code.google.com . Consultado el 4 de noviembre de 2013 .
  5. ^ "Compatibilidad con Intel® Memory Protection Extensions (Intel® MPX) en el compilador GCC". gcc.gnu.org . Consultado el 4 de noviembre de 2013 .
  6. ^ "Explicación de Intel MPX: almacenamiento de límites en la memoria". intel-mpx.github.io . Consultado el 6 de febrero de 2017 .
  7. ^ ab "Referencia de programación de extensiones del conjunto de instrucciones de la arquitectura Intel" (PDF) . Intel . Diciembre de 2013 . Consultado el 17 de enero de 2014 .
  8. ^ abcd Oleksenko, Oleksii; Kuvaiskii, Dmitrii; Bhatotia, Pramod; Felber, Pascal; Fetzer, Christof (2017). "Explicación de Intel MPX: un estudio empírico de Intel MPX y enfoques de verificación de límites basados ​​en software". arXiv : 1702.00719 [cs.CR].
  9. ^ ab "Emulador de desarrollo de software de Intel". Intel . 15 de junio de 2012 . Consultado el 4 de noviembre de 2013 .
  10. ^ ab "Diseño de Intel MPX". Intel.
  11. ^ "Parece que GCC 9 eliminará la compatibilidad con Intel MPX". Phoronix . Consultado el 27 de abril de 2018 .
  12. ^ "Compatibilidad con Intel MPX eliminada de GCC 9 - Phoronix". www.phoronix.com .
  13. ^ "Kernel Linux 3.19, Sección 1.2. Soporte para las extensiones de protección de memoria Intel". kernelnewbies.org . 9 de febrero de 2015 . Consultado el 9 de febrero de 2015 .
  14. ^ Jonathan Corbet (29 de enero de 2014). "Compatibilidad con Intel MPX en Linux". LWN.net . Consultado el 9 de febrero de 2015 .
  15. ^ "El núcleo de Linux podría abandonar el soporte para extensiones de protección de memoria". Phoronix .
  16. ^ "[GIT PULL] x86: eliminar Intel MPX".
  17. ^ "[PATCH 0/3] [RFC] x86: iniciar el proceso de eliminación de MPX".
  18. ^ "El soporte para Intel MPX ha muerto con Linux 5.6 - Phoronix". www.phoronix.com .
  19. ^ "Registro de cambios/2.6".
  20. ^ "QEMU 4 llega con juguetes para los admiradores de Arm, los revolucionarios de RISC-V, los patriotas de POWER... ya se hacen una idea". The Register .
  21. ^ "Visual Studio 2015 Update 1: Nueva función experimental: MPX". Microsoft . 20 de enero de 2016.
  22. ^ Serebryany, Konstantin. "Konstantin Serebryany". Búsqueda de Google . Archivado desde el original el 2023-07-27 . Consultado el 2024-07-18 .
  23. ^ "AddressSanitizerIntelMemoryProtectionExtensions". GitHub . Archivado desde el original el 18 de julio de 2024 . Consultado el 4 de noviembre de 2013 .
  24. ^ Canela, Claudio; Van Bulck, Jo; Schwarz, Michael; Lipp, Moritz; von Berg, Benjamín; Ortner, Philipp; Piessens, Frank; Evtyushkin, Dmitry; Gruss, Daniel (2018). "Una evaluación sistemática de defensas y ataques de ejecución transitoria". arXiv : 1811.05441 [cs.CR].

Enlaces externos