Jump to content

Предотвращение доступа в режиме супервизора

Предотвращение доступа в режиме супервизора ( SMAP ) — это функция некоторых реализаций ЦП , таких как микроархитектура Intel Broadwell , которая позволяет программам режима супервизора дополнительно устанавливать в пространстве пользователя сопоставления памяти , чтобы доступ к этим сопоставлениям из режима супервизора вызывал ловушку. сложнее Из-за этого вредоносным программам «обмануть» ядро, заставив его использовать инструкции или данные из программы пользовательского пространства. [1] [2]

История [ править ]

Предотвращение доступа в режиме супервизора разработано в дополнение к предотвращению выполнения в режиме супервизора (SMEP), которое было представлено ранее. SMEP можно использовать для предотвращения непреднамеренного выполнения кода пользовательского пространства в режиме супервизора. SMAP расширяет эту защиту на чтение и запись. [2]

Преимущества [ править ]

Без предотвращения доступа в режиме супервизора код супервизора обычно имеет полный доступ на чтение и запись к сопоставлениям памяти в пространстве пользователя (или имеет возможность получить полный доступ). Это привело к разработке нескольких эксплойтов безопасности, в том числе эксплойтов повышения привилегий , которые заставляют ядро ​​обращаться к памяти пользовательского пространства, когда оно этого не предполагало. [3] Операционные системы могут блокировать эти эксплойты, используя SMAP для принудительного непреднамеренного доступа к памяти пользовательского пространства, вызывающего страничные ошибки . Кроме того, SMAP может раскрыть ошибочный код ядра, который не соответствует предполагаемым процедурам доступа к памяти пользовательского пространства. [1]

Однако использование SMAP в операционной системе может привести к увеличению размера ядра и замедлению доступа к памяти пользовательского пространства из кода супервизора, поскольку SMAP необходимо временно отключать каждый раз, когда код супервизора намеревается получить доступ к памяти пользовательского пространства. [4]

Технические подробности [ править ]

Процессоры указывают на поддержку предотвращения доступа в режиме супервизора через лист расширенных функций CPUID .

SMAP активируется, когда подкачка памяти активна бит SMAP в регистре управления CR4 и установлен . SMAP можно временно отключить для явного доступа к памяти, установив флаг EFLAGS.AC (проверка выравнивания). stac (Установить флаг переменного тока) и clac Инструкции (Сброс флага переменного тока) можно использовать для простой установки или сброса флага. [5]

Когда бит SMAP в CR4 установлен, явные операции чтения и записи памяти на страницы пользовательского режима, выполняемые кодом, работающим с уровнем привилегий меньше 3, всегда будут приводить к ошибке страницы, если флаг EFLAGS.AC не установлен. Неявное чтение и запись (например, в таблицы дескрипторов ) на страницы пользовательского режима всегда будут вызывать ошибку страницы, если SMAP включен, независимо от значения EFLAGS.AC. [5]

Поддержка операционной системы [ править ]

Поддержка ядра Linux для предотвращения доступа в режиме супервизора была реализована Х. Питером Анвином . [1] Он был объединен с основным ядром Linux 3.7 (выпущенным в декабре 2012 г.) и включен по умолчанию для процессоров, поддерживающих эту функцию. [4]

FreeBSD поддерживает предотвращение выполнения в режиме супервизора с 2012 года. [6] и предотвращение доступа в режиме супервизора с 2018 года. [7]

OpenBSD поддерживает предотвращение доступа в режиме супервизора и связанное с ним предотвращение выполнения в режиме супервизора с 2012 года. [8] OpenBSD 5.3 стал первым выпуском с включенной поддержкой этой функции. [9]

Поддержка NetBSD для предотвращения выполнения в режиме супервизора (SMEP) была реализована Максимом Вилларом в декабре 2015 года. [10] Поддержка предотвращения доступа в режиме супервизора (SMAP) также была реализована Максимом Вилларом в августе 2017 года. [11] NetBSD 8.0 была первой версией, в которой поддерживались и включались обе функции. [12]

Поддержка Haiku для предотвращения выполнения в режиме супервизора (SMEP) была реализована Жеромом Дювалем в январе 2018 года. [13]

macOS поддерживает SMAP, по крайней мере, с момента выпуска macOS 10.13 в 2017 году. [14]

См. также [ править ]

Ссылки [ править ]

  1. ^ Jump up to: Перейти обратно: а б с Корбет, Джонатан (26 сентября 2012 г.). «Предотвращение доступа в режиме супервизора» . LWN.net . Проверено 4 августа 2017 г.
  2. ^ Jump up to: Перейти обратно: а б Малникс, Дэвид (22 мая 2015 г.). «Технический обзор семейства процессоров Intel Xeon D: защита доступа в режиме супервизора (SMAP) 4» . Интел . Проверено 4 августа 2017 г.
  3. ^ Корбет, Джонатан (20 июля 2009 г.). «Забава с NULL-указателями, часть 1» . LWN.net . Проверено 4 августа 2017 г.
  4. ^ Jump up to: Перейти обратно: а б Ларабель, Майкл (2 октября 2012 г.). «Intel SMAP пытается улучшить безопасность Linux» . Фороникс . Проверено 4 августа 2017 г.
  5. ^ Jump up to: Перейти обратно: а б «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 3A: Руководство по системному программированию, часть 1» (PDF) . Интел. июль 2017 года . Проверено 4 августа 2017 г.
  6. ^ Белоусов, Константин (01 ноября 2012 г.). «Редакция 242433» . Проверено 19 января 2018 г.
  7. ^ Белоусов, Константин (29 июля 2018 г.). «Редакция 336876» . Проверено 30 июля 2018 г.
  8. ^ Хендерсон, Стюарт (26 марта 2017 г.). «Re: Есть ли в OpenBSD реализация SMEP и SMAP? Или MPX?» . Проверено 4 августа 2017 г. - через marc.info .
  9. ^ «ОпенБСД 5.3» . OpenBSD . 01.05.2013 . Проверено 4 августа 2017 г.
  10. ^ «Значительные изменения с NetBSD 7.0 на 8.0» . НетБСД . 12.10.2017 . Проверено 9 января 2018 г.
  11. ^ Максим Виллар (23 августа 2017 г.). «amd64: поддержка smap» . Проверено 9 января 2018 г.
  12. ^ «Анонс NetBSD 8.0 (17 июля 2018 г.)» . НетБСД . 17 июля 2018 г. Проверено 29 июля 2018 г.
  13. ^ «ядро: поддержка Intel SMAP и SMEP на x86_64» . Хайку (операционная система) . 2018-01-30 . Проверено 4 сентября 2018 г.
  14. ^ "/osfmk/x86_64/idt64.s.auto.html" . Apple Inc. 25 сентября 2017 г. Проверено 19 сентября 2018 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b08cc3370362b8f8cf8563f05e8bd2c9__1699184760
URL1:https://arc.ask3.ru/arc/aa/b0/c9/b08cc3370362b8f8cf8563f05e8bd2c9.html
Заголовок, (Title) документа по адресу, URL1:
Supervisor Mode Access Prevention - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)