Jump to content

Интел МПХ

(Перенаправлено с Расширений защиты памяти )

Intel MPX ( Расширения защиты памяти ) — это прекращенный набор расширений x86 архитектуры набора команд . Intel MPX заявила, что благодаря поддержке компилятора , библиотеки времени выполнения и операционной системы повышает безопасность программного обеспечения за счет проверки ссылок на указатели, чьи обычные намерения во время компиляции злонамеренно используются во время выполнения из-за переполнения буфера . На практике в конструкции было обнаружено слишком много недостатков, чтобы она могла быть полезной, а поддержка была прекращена или удалена из большинства компиляторов и операционных систем. корпорация Intel указала MPX как удаленное в 2019 году и последующих версиях оборудования. В разделе 2.5 руководства разработчика программного обеспечения для архитектур Intel® 64 и IA-32, том 1, [ 1 ]

Расширения

[ редактировать ]

Intel MPX представляет новые регистры границ и новые расширения набора команд , которые работают с этими регистрами. Кроме того, существует новый набор «связанных таблиц», в которых хранятся границы, выходящие за рамки регистров границ. [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]

MPX использует четыре новых 128-битных регистра границ. BND0 к BND3, каждый из которых хранит пару 64-битных значений нижней границы (LB) и верхней границы (UB) буфера. Верхняя граница хранится в форме дополнения , при этом BNDMK (создать границы) и BNDCU (проверьте верхнюю границу) выполнения преобразования. Архитектура включает в себя два регистра конфигурации. BNDCFGx ( BNDCFGU в пользовательском пространстве и BNDCFGS в режиме ядра) и регистр состояния BNDSTATUS, который предоставляет адрес памяти и код ошибки в случае исключения. [ 7 ] [ 8 ]

Двухуровневая трансляция адресов используется для хранения границ в памяти. Верхний уровень состоит из каталога границ (BD), создаваемого при запуске приложения. Каждая запись BD либо пуста, либо содержит указатель на динамически создаваемую таблицу границ (BT), которая, в свою очередь, содержит набор границ указателя вместе с линейными адресами указателей. Границы загружаются ( BNDLDX) и сохранить ( BNDSTX) инструкции прозрачно выполняют преобразование адресов и границы доступа в соответствующей записи BT. [ 7 ] [ 8 ]

Intel MPX был представлен как часть микроархитектуры Skylake . [ 9 ]

Микроархитектура Intel Goldmont также поддерживает Intel MPX. [ 9 ]

Поддержка программного обеспечения

[ редактировать ]
  • glibc удалил поддержку в версии 2.35.
  • В GNU Compiler Collection (GCC) 5.0 добавлена ​​поддержка MPX. [ 10 ] В 2018 году поддержка этих расширений ослабла из-за проблем с обслуживанием и из-за того, что разработчики Intel периодически вносили исправления, в результате чего было предложено отказаться от поддержки в GCC 9.0. [ 11 ] Поддержка была удалена в GCC 9.1. [ 12 ]
  • В компилятор Intel C++ (icc) 15.0 добавлена ​​поддержка Intel MPX. [ 10 ]
  • ядра Программная поддержка Intel MPX на уровне была объединена с основной веткой ядра Linux в версии ядра 3.19, выпущенной 8 февраля 2015 года. [ 13 ] [ 14 ] В 2018 году Томас Гляйкснер предложил удалить поддержку MPX из ядра Linux 4.18. [ 15 ] Запрос на удаление с его удалением был опубликован в декабре 2018 года, во время цикла разработки 4.20. [ 16 ] но не был принят. Вторая попытка была предпринята в июле 2019 года. [ 17 ] Поддержка MPX была удалена в версии 5.6. [ 18 ]
  • QEMU поддерживает MPX начиная с версии 2.6. [ 19 ] и прекратил поддержку в версии 4.0. [ 20 ]
  • В Microsoft Visual Studio 2015 Update 1 добавлена ​​экспериментальная поддержка MPX. [ 21 ]

В исследовании был рассмотрен подробный межуровневый анализ системного стека MPX и сравнение с тремя известными программными механизмами защиты памяти ( AddressSanitizer , SAFECode и SoftBound) и представлены следующие выводы. [ 8 ]

  • Несмотря на то, что Intel MPX представляет собой специально разработанный аппаратный подход с собственным добавленным набором аппаратных регистров, он не быстрее любого из программных подходов. Новые инструкции Intel MPX могут в худшем случае вызвать замедление в 4 раза, хотя оптимизация компилятора амортизирует это и приводит к накладным расходам во время выполнения в среднем на ~ 50%.
  • В отличие от других программных решений, Intel MPX не обеспечивает защиты от временных ошибок безопасности памяти.
  • Чтение и запись из таблиц двунаправленных границ не является потокобезопасным.
  • MPX не поддерживает некоторые распространенные идиомы программирования C / C++ , такие как гибкие члены массива , ссылка на одно поле как на смещение от другого и т. д.
  • MPX конфликтует с некоторыми другими расширениями ISA, что приводит к проблемам с производительностью и безопасностью. В частности, эти проблемы возникают, когда Intel MPX используется в сочетании с другими аппаратными механизмами защиты, такими как Intel TSX и Intel SGX .
  • Инструкции MPX приводят к значительному снижению производительности (более 15%) даже на процессорах Intel без поддержки MPX.

Кроме того, обзор пришел к выводу, что MPX не готов к производству, и AddressSanitizer . лучшим вариантом является [ 8 ] A review by Kostya Serebryany at Google, AddressSanitizer's developer, [ 22 ] были аналогичные выводы. [ 23 ]

Еще одно исследование [ 24 ] изучение масштабов уязвимостей безопасности Spectre и Meltdown обнаружило, что Meltdown можно использовать для обхода Intel MPX с использованием аппаратного исключения Bound Range Exceeded (#BR). Согласно их публикации, исследователям удалось осуществить утечку информации через скрытый канал Flush+Reload из внешнего доступа к массиву, защищенному системой MPX. Их доказательство концепции не было публично раскрыто.

См. также

[ редактировать ]
  1. ^ Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32, том 1: Базовая архитектура . Интел . ноябрь 2020 года . Проверено 03 марта 2021 г.
  2. ^ «Расширения Intel ISA» . Интел . Проверено 4 ноября 2013 г.
  3. ^ «Введение в расширения защиты памяти Intel» . Интел . 16 июля 2013 г. Проверено 10 сентября 2013 г.
  4. ^ «Обсуждение расширений Intel Memory Protection Extensions (MPX) и сравнение с AddressSanitizer» . code.google.com . Проверено 4 ноября 2013 г.
  5. ^ «Поддержка расширений Intel® Memory Protection Extensions (Intel® MPX) в компиляторе GCC» . gcc.gnu.org . Проверено 4 ноября 2013 г.
  6. ^ «Объяснение Intel MPX: сохранение границ в памяти» . intel-mpx.github.io . Проверено 06 февраля 2017 г.
  7. ^ Перейти обратно: а б «Справочник по программированию расширений набора команд архитектуры Intel» (PDF) . Интел . Декабрь 2013 года . Проверено 17 января 2014 г.
  8. ^ Перейти обратно: а б с д Олексенко, Алексей; Кувайский, Дмитрий; Бхатотия, Прамод; Фельбер, Паскаль; Фетцер, Кристоф (2017). «Объяснение Intel MPX: эмпирическое исследование Intel MPX и программных подходов к проверке границ». arXiv : 1702.00719 [ cs.CR ].
  9. ^ Перейти обратно: а б «Эмулятор разработки программного обеспечения Intel» . Интел . 15 июня 2012 г. Проверено 4 ноября 2013 г.
  10. ^ Перейти обратно: а б «Проектирование Intel MPX» . Интел.
  11. ^ «Похоже, что в GCC 9 будет удалена поддержка Intel MPX» . Фороникс . Проверено 27 апреля 2018 г.
  12. ^ «Поддержка Intel MPX удалена из GCC 9 — Phoronix» . www.phoronix.com .
  13. ^ «Ядро Linux 3.19, раздел 1.2. Поддержка расширений Intel Memory Protection Extensions» . kernelnewbies.org . 9 февраля 2015 года . Проверено 9 февраля 2015 г.
  14. ^ Джонатан Корбет (29 января 2014 г.). «Поддержка Intel MPX в Linux» . LWN.net . Проверено 9 февраля 2015 г.
  15. ^ «Ядро Linux может прекратить поддержку расширений защиты памяти» . Фороникс .
  16. ^ «[GIT PULL] x86: удалить Intel MPX» .
  17. ^ «[ИСПРАВЛЕНИЕ 0/3] [RFC] x86: запустите процесс удаления MPX» .
  18. ^ «Поддержка Intel MPX прекращена в Linux 5.6 — Phoronix» . www.phoronix.com .
  19. ^ «Журнал изменений/2.6» .
  20. ^ «QEMU 4 поставляется с игрушками для поклонников Arm, революционеров RISC-V, патриотов POWER… ну, вы поняли» . Регистр .
  21. ^ «Обновление 1 для Visual Studio 2015: новая экспериментальная функция — MPX» . Майкрософт . 20 января 2016 г.
  22. ^ Серебряный Константин. «Константин Серебряный» . Google Исследования . Архивировано из оригинала 27 июля 2023 г. Проверено 18 июля 2024 г.
  23. ^ «АдрессанитизерIntelMemoryProtectionExtensions» . Гитхаб . Архивировано из оригинала 18 июля 2024 г. Проверено 4 ноября 2013 г.
  24. ^ Канелла, Клаудио; Ван Балк, Джо; Шварц, Майкл; Липп, Мориц; фон Берг, Бенджамин; Ортнер, Филипп; Писсенс, Франк; Евтюшкин Дмитрий; Грусс, Дэниел (2018). «Систематическая оценка временных атак и защиты». arXiv : 1811.05441 [ cs.CR ].
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 342516d3acf88aa9087ab4aab9d5dea3__1721317320
URL1:https://arc.ask3.ru/arc/aa/34/a3/342516d3acf88aa9087ab4aab9d5dea3.html
Заголовок, (Title) документа по адресу, URL1:
Intel MPX - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)