Articulo de referencia

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 , ...

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 punteros 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 como para que sea útil, y el soporte se ha descontinuado o eliminado de la mayoría de los compiladores y sistemas operativos. Intel ha incluido MPX como eliminado del hardware de 2019 en adelante en la sección 2.5 de su Manual del desarrollador de software para arquitecturas Intel® 64 e IA-32, Volumen 1. [ 1 ]

Extensiones

Intel MPX introduce nuevos registros de límites y nuevas extensiones del conjunto de instrucciones que operan sobre estos registros. Además, existe un nuevo conjunto de "tablas de límites" que almacenan límites que van 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 las funciones 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 el 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 memoria. La capa superior consta de un Directorio de Límites (DL) creado al iniciar la aplicación. Cada entrada del DL está vacía o contiene un puntero a una Tabla de Límites (TL) creada dinámicamente, que a su vez contiene un conjunto de límites de punteros junto con las direcciones lineales de los punteros. Las instrucciones de carga ( BNDLDX) y almacenamiento ( BNDSTX) de límites realizan de forma transparente la traducción de direcciones y acceden a los límites en la entrada TL correspondiente. [ 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 de capas cruzadas de la pila del sistema MPX y la comparó con tres mecanismos prominentes de protección de memoria basados ​​en software ( AddressSanitizer , SAFECode y SoftBound) y presenta las siguientes conclusiones. [ 8 ]

  • Aunque Intel MPX es un método especialmente diseñado con asistencia de hardware y su propio conjunto de registros de hardware adicionales, no es más rápido que ninguno de los métodos basados ​​en software. Las nuevas instrucciones Intel MPX pueden provocar una ralentización de hasta cuatro veces en el peor de los casos, si bien las optimizaciones del compilador lo compensan y dan lugar a una sobrecarga en tiempo de ejecución de aproximadamente el 50 % de media.
  • A diferencia de otras soluciones basadas en software, Intel MPX no ofrece protección contra errores de seguridad de memoria temporal.
  • La lectura y escritura en tablas de límites doblemente indireccionadas no es segura para subprocesos.
  • MPX no admite varias convenciones de programación comunes en C / C++ , como miembros de matrices flexibles , referenciar un campo como un desplazamiento desde otro, etc.
  • MPX entra en conflicto con algunas otras extensiones ISA, lo que provoca problemas de rendimiento y seguridad. Más concretamente, estos problemas surgen cuando Intel MPX se utiliza en combinación con otros mecanismos de protección basados ​​en hardware, como Intel TSX e Intel SGX .
  • Las instrucciones MPX conllevan una penalización de rendimiento significativa (más del 15 %) incluso en procesadores Intel que no admiten MPX.

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 ] llegó a conclusiones similares. [ 23 ]

Fusión de un reactor

Otro estudio [ 24 ] que exploraba el alcance de las vulnerabilidades de seguridad de Spectre y Meltdown descubrió que Meltdown puede utilizarse para eludir Intel MPX, mediante la excepción de hardware Bound Range Exceeded (#BR). Según su publicación, los investigadores lograron filtrar información a través de un canal encubierto Flush+Reload desde un acceso fuera de rango 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 las 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. "Análisis de las extensiones de protección de memoria de Intel (MPX) 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. "Intel MPX explicado: almacenamiento de límites en memoria" . intel-mpx.github.io . Consultado el 6 de febrero de 2017 .
  7. 1 2 "Intel Architecture Instruction Set Extensions Programming Reference" (PDF) . Intel . Diciembre de 2013. Consultado el 17 de enero de 2014 .
  8. 1 2 3 4 Oleksenko, Oleksii; Kuvaiskii, Dmitrii; Bhatotia, Pramod; Felber, Pascal; Fetzer, Christof (2017). "Intel MPX explicado: un estudio empírico de Intel MPX y enfoques de verificación de límites basados ​​en software". arXiv : 1702.00719 [ cs.CR ].
  9. 1 2 "Emulador de desarrollo de software de Intel" . Intel . 15 de junio de 2012. Consultado el 4 de noviembre de 2013 .
  10. 1 2 "Diseño de Intel MPX" . Intel.
  11. "GCC 9 parece que eliminará la compatibilidad con Intel MPX" . Phoronix . Consultado el 27 de abril de 2018 .
  12. "Se eliminó la compatibilidad con Intel MPX de GCC 9 - Phoronix" . www.phoronix.com .
  13. "Núcleo de Linux 3.19, Sección 1.2. Compatibilidad con las extensiones de protección de memoria de Intel" . kernelnewbies.org . 9 de febrero de 2015. Consultado el 9 de febrero de 2015 .
  14. Jonathan Corbet (29 de enero de 2014). "Soporte para Intel MPX en Linux" . LWN.net . Consultado el 9 de febrero de 2015 .
  15. "El kernel de Linux podría dejar de ofrecer soporte para las extensiones de protección de memoria" . Phoronix .
  16. " [ GIT PULL ] x86: eliminar Intel MPX" .
  17. " [ PARCHE 0/3 ] [ RFC ] x86: iniciar el proceso de eliminación de MPX" .
  18. " El soporte para Intel MPX ha desaparecido con Linux 5.6 - Phoronix" . www.phoronix.com
  19. "ChangeLog/2.6" .
  20. "QEMU 4 llega con juguetes para admiradores de Arm, revolucionarios de RISC-V, patriotas de POWER... ya se hacen una idea" . The Register .
  21. "Visual Studio 2015 Update 1: Nueva función experimental – MPX" . Microsoft . 2016-01-20.
  22. Serebryany, Konstantin. "Konstantin Serebryany" . Google Research . Archivado del original el 27 de julio de 2023. Consultado el 18 de julio de 2024 .
  23. "Extensiones de protección de memoria Intel de Address Sanitizer" . GitHub . Archivado del 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 ].
  • Referencia de programación de extensiones del conjunto de instrucciones de la arquitectura Intel (PDF) . Intel . Julio de 2013. Consultado el 10 de enero de 2016 .
  • Oleksenko, Oleksii; Kuvaiskii, Dmitrii; Bhatotia, Pramod; Felber, Pascal; Fetzer, Christof (2017). "Intel MPX explicado: un estudio empírico de Intel MPX y enfoques de verificación de límites basados ​​en software". arXiv : 1702.00719 [ cs.CR ].Material complementario en línea disponible en https://intel-mpx.github.io .
  • "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 .
  • "Extensiones ISA de Intel" . Intel . Consultado el 4 de noviembre de 2013 .
  • "Soporte para Intel® Memory Protection Extensions (Intel® MPX) en el compilador GCC" . gcc.gnu.org . Consultado el 4 de noviembre de 2013 .
  • Hansen, Dave (16 de marzo de 2016). "Extensiones de protección de memoria Intel® (Intel® MPX) para Linux" . Recuperado el 17 de mayo de 2018 .