Изоляция таблицы страниц ядра - Kernel page-table isolation

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

Изоляция таблицы страниц ядра (КПТИ или же PTI,[1] ранее названный КАЙЗЕР)[2][3] это Ядро Linux функция, которая смягчает Meltdown безопасность уязвимость (затрагивает в основном Intel с x86 Процессоры )[4] и улучшает защиту ядра от попыток обойти рандомизация структуры адресного пространства ядра (KASLR). Он работает за счет лучшей изоляции пространство пользователя и память пространства ядра.[5][6] КПТИ был объединен с ядром Linux версии 4.15,[7] и портированный для ядер Linux 4.14.11, 4.9.75 и 4.4.110.[8][9][10] Windows[11] и macOS[12] выпустила аналогичные обновления. КПТИ не занимается Призрак уязвимость.[13]

Справочная информация о KAISER

Патчи КПТИ были основаны на KAISER (сокращение от Изоляция адресов ядра для эффективного удаления побочных каналов),[6] техника, задуманная в 2016 году[14] и опубликован в июне 2017 года, когда о Meltdown еще не было известно. KAISER затрудняет преодоление KASLR, средства защиты от 2014 года для гораздо менее серьезной проблемы.

В 2014 году ядро ​​Linux приняло рандомизация структуры адресного пространства ядра (KASLR),[15] что затрудняет использование других уязвимостей ядра,[16] который основан на отображении адресов ядра, остающемся скрытым от пользовательского пространства.[17] Несмотря на запрет доступа к этим сопоставлениям ядра, оказывается, что существует несколько атаки по побочным каналам в современных процессорах может происходить утечка информации о расположении этой памяти, что позволяет обойти KASLR.[6][18][19][20]

KAISER решил эти проблемы в KASLR, устранив некоторые источники утечки адресов.[6] В то время как KASLR просто предотвращает утечку сопоставлений адресов, KAISER также предотвращает утечку данных, тем самым покрывая случай Meltdown.[21]

КПТИ базируется на KAISER. Без включенного KPTI при выполнении кода (приложений) пользовательского пространства Linux также будет отображать всю свою память ядра в таблицы страниц, хотя и защищен от доступа. Преимущество в том, что когда приложение делает системный вызов в ядро ​​или прерывать получен, таблицы страниц ядра присутствуют всегда, поэтому большинство переключение контекста -связанные накладные расходы (TLB промывка, перестановки таблиц страниц и т. д.) можно избежать.[5]

Уязвимость Meltdown и KPTI

В январе 2018 г. Meltdown уязвимость опубликована, известно, что она влияет на Процессоры Intel x86 и ARM Cortex-A75.[22][23] Это была гораздо более серьезная уязвимость, чем обход KASLR, который KAISER изначально намеревался исправить: было обнаружено, что содержание Также может произойти утечка памяти ядра, а не только расположение отображений памяти, как считалось ранее.

KPTI (концептуально основанный на KAISER) предотвращает Meltdown, предотвращая сопоставление наиболее защищенных местоположений с пространством пользователя.

AMD В настоящее время нет данных о том, что процессоры x86 подвержены воздействию Meltdown и не нуждаются в KPTI для их смягчения.[13][24] Однако процессоры AMD по-прежнему подвержены обходу KASLR, когда KPTI отключен.[20]

Выполнение

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

На процессорах, поддерживающих идентификаторы контекста процесса (PCID), а резервный буфер перевода (TLB) можно избежать,[5] но даже в этом случае это требует значительных затрат на производительность, особенно в системный вызов -тяжелые и прерывистые рабочие нагрузки.[25]

Накладные расходы составили 0,28% согласно первоначальным авторам KAISER;[6] разработчик Linux оценил его примерно в 5% для большинства рабочих нагрузок и до 30% в некоторых случаях, даже с оптимизацией PCID;[5] для движка базы данных PostgreSQL влияние на тесты только для чтения на Intel Skylake процессор составлял 7–17% (или 16–23% без PCID),[26] в то время как полный тест потерял 13–19% (Coffee Lake против. Broadwell-E ).[27] Многие тесты были выполнены Фороникс,[28][29][1] Redis замедлился на 6–7%.[27] Компиляция ядра Linux замедлилась на 5% на Haswell.[30]

KPTI можно частично отключить с помощью параметра загрузки ядра "nopti". Также были созданы условия для отключения KPTI, если новые процессоры исправят утечки информации.[2]

Рекомендации

  1. ^ а б Ларабель, Майкл (2018-01-03). «Дальнейший анализ процессора Intel» Проблема PTI x86 «В других системах». Фороникс.
  2. ^ а б Корбет, Джонатан (2017-12-20). «Текущее состояние изоляции таблицы страниц ядра». LWN.net.
  3. ^ Чимпану, Каталин (03.01.2018). «Производители ОС готовят исправления для устранения секретной ошибки безопасности процессора Intel». Пищевой компьютер.
  4. ^ «Spectre, Meltdown: объяснение критических недостатков безопасности процессора - ExtremeTech». ExtremeTech. 2018-01-04. Получено 2018-01-05.
  5. ^ а б c d е Корбет, Джонатан (2017-11-15). «KAISER: сокрытие ядра от пользовательского пространства». LWN.net.
  6. ^ а б c d е Грусс, Даниэль; Липп, Мориц; Шварц, Майкл; Фелльнер, Ричард; Морис, Клементина; Мангард, Стефан (24.06.2017). KASLR мертв: да здравствует KASLR (PDF). Разработка безопасного программного обеспечения и систем 2017.
  7. ^ Корбет, Джонатан (2017-12-20). "Объединение изоляции таблицы страниц и таблицы ядра". LWN.net.
  8. ^ Кроа-Хартман, Грег (2018-01-02). «Журнал изменений Linux 4.14.11». kernel.org.
  9. ^ Кроа-Хартман, Грег (2018-01-05). «Журнал изменений Linux 4.9.75». kernel.org.
  10. ^ Кроа-Хартман, Грег (2018-01-05). «Журнал изменений Linux 4.4.110».
  11. ^ @aionescu (14.11.2017). «Изоляция ASLR / VA ядра Windows 17035 на практике» (Твит) - через Twitter.
  12. ^ «Apple уже частично реализовала исправление в macOS для уязвимости системы безопасности процессора Intel« KPTI »». AppleInsider. Получено 2018-01-03.
  13. ^ а б Колдеви, Девин (2018-01-04). «Паника ядра! Что такое Meltdown и Spectre, ошибки, затрагивающие почти каждый компьютер и устройство?». TechCrunch.
  14. ^ Грусс, Даниэль (2018-01-03). "#FunFact: Мы отправили #KAISER на # bhusa17 и получили его отклонение". В архиве из оригинала на 2018-01-08. Получено 2018-01-08 - через Twitter.
  15. ^ «Ядро Linux 3.14, раздел 1.7. Рандомизация адресного пространства ядра». kernelnewbies.org. 2014-03-30. Получено 2014-04-02.
  16. ^ Бхаттачарджи, Абхишек; Люстиг, Даниэль (2017-09-29). Поддержка архитектуры и операционной системы для виртуальной памяти. Издатели Morgan & Claypool. п. 56. ISBN  978-1-62705-933-6.
  17. ^ Кернер, Шон Майкл (2018-01-03). «Недостаток микросхемы KPTI Intel подвергает риску безопасность». eWEEK.
  18. ^ Чан, Ёнджин; Ли, Санго; Ким, Тэсу (2016). «Нарушение рандомизации адресного пространства ядра с помощью Intel TSX» (PDF). Конференция ACM SIGSAC по компьютерной и коммуникационной безопасности, 2016 г.. CCS '16. Нью-Йорк, Нью-Йорк, США: ACM: 380–392. Дои:10.1145/2976749.2978321. ISBN  978-1-4503-4139-4.
  19. ^ Грусс, Даниэль; Морис, Клементина; Фог, Андерс; Липп, Мориц; Мангард, Стефан (2016). «Атаки с предварительной выборкой по побочному каналу: обход SMAP и ASLR ядра» (PDF). Конференция ACM SIGSAC по компьютерной и коммуникационной безопасности, 2016 г.. CCS '16. Нью-Йорк, Нью-Йорк, США: ACM: 368–379. Дои:10.1145/2976749.2978356. ISBN  978-1-4503-4139-4.
  20. ^ а б Hund, R .; Willems, C .; Хольц, Т. (май 2013 г.). «Практическая синхронизация атак по побочному каналу против ASLR в пространстве ядра» (PDF). Симпозиум IEEE по безопасности и конфиденциальности 2013 г.: 191–205. Дои:10.1109 / sp.2013.23.
  21. ^ "Мелтдаун" (PDF).
  22. ^ «Spectre, Meltdown: объяснение критических недостатков безопасности процессора - ExtremeTech». ExtremeTech. 2018-01-04. Получено 2018-01-05.
  23. ^ Колдеви, Девин (2018-01-04). «Паника ядра! Что такое Meltdown и Spectre, ошибки, затрагивающие почти каждый компьютер и устройство?». TechCrunch.
  24. ^ «Обновление безопасности процессоров AMD». AMD. 2018-01-04.
  25. ^ Лейден, Джон; Уильямс, Крис (2018-01-02). «Недостаток в конструкции процессора Intel, связанный с утечкой памяти из-за ядра, вынуждает переработать Linux и Windows». Реестр.
  26. ^ Фройнд, Андрес (2018-01-02). "Внимание! Исправление аппаратной ошибки Intel приведет к снижению производительности". PostgreSQL список рассылки разработчиков (pgsql-hackers).
  27. ^ а б Ларабель, Майкл (2018-01-02). «Первоначальные контрольные показатели воздействия на производительность в результате изменений безопасности Linux x86». Фороникс.
  28. ^ Ларабель, Майкл (2018-01-02). «Игровая производительность Linux не зависит от работы PTI x86». Фороникс.
  29. ^ Ларабель, Майкл (2018-01-03). «Производительность ВМ демонстрирует неоднозначное влияние на патчи KPTI для Linux 4.15 - Phoronix». Фороникс.
  30. ^ Велвиндрон, Логанаден (04.01.2018). «Производительность Linux KPTI сказывается на реальных рабочих нагрузках». Логанаден Велвиндрон. Получено 2018-01-05.

внешняя ссылка