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

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

Справочная информация о KAISER [ править ]

Патчи KPTI были основаны на KAISER (сокращение от Kernel Address Isolation для эффективного удаления побочных каналов ) [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 vs . Broadwell-E ). [27] Многие тесты были выполнены Phoronix , [28] [29] [1] Redis замедлился на 6–7%. [27]Компиляция ядра Linux на Haswell замедлилась на 5% . [30]

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

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

  1. ^ a b Ларабель, Майкл (2018-01-03). «Дальнейший анализ процессора Intel» Выпуск x86 PTI «В других системах» . Фороникс .
  2. ^ a b Корбет, Джонатан (20 декабря 2017 г.). «Текущее состояние изоляции таблицы страниц ядра» . LWN.net .
  3. ^ Cimpanu, Каталин (2018-01-03). «Производители ОС готовят исправления для устранения секретной ошибки безопасности процессора Intel» . Пищевой компьютер .
  4. ^ «Spectre, Meltdown: объяснение критических недостатков безопасности процессора - ExtremeTech» . ExtremeTech . 2018-01-04 . Проверено 5 января 2018 .
  5. ^ а б в г д Корбет, Джонатан (2017-11-15). «КАЙЗЕР: сокрытие ядра от пользовательского пространства» . LWN.net .
  6. ^ a b c d e Грусс, Даниэль; Липп, Мориц; Шварц, Майкл; Фелльнер, Ричард; Морис, Клементина; Мангард, Стефан (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 . Проверено 3 января 2018 .
  13. ^ a b Колдеви, Девин (2018-01-04). «Паника ядра! Что такое Meltdown и Spectre, ошибки, затрагивающие почти каждый компьютер и устройство?» . TechCrunch .
  14. ^ Грусс, Даниэль (2018-01-03). «#FunFact: Мы отправили #KAISER на # bhusa17 и получили его отклонение» . Архивировано 8 января 2018 года . Проверено 8 января 2018 г. - через Twitter.
  15. ^ «Ядро Linux 3.14, раздел 1.7. Рандомизация адресного пространства ядра» . kernelnewbies.org . 2014-03-30 . Проверено 2 апреля 2014 .
  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) . 2016 ACM SIGSAC конференция по компьютерной и коммуникационной безопасности . CCS '16. Нью-Йорк, Нью-Йорк, США: ACM: 380–392. DOI : 10.1145 / 2976749.2978321 . ISBN  978-1-4503-4139-4.
  19. ^ Грусс, Даниэль; Морис, Клементина; Фог, Андерс; Липп, Мориц; Мангард, Стефан (2016). «Атаки с предварительной выборкой по побочному каналу: обход SMAP и ASLR ядра» (PDF) . 2016 ACM SIGSAC конференция по компьютерной и коммуникационной безопасности . CCS '16. Нью-Йорк, Нью-Йорк, США: ACM: 368–379. DOI : 10.1145 / 2976749.2978356 . ISBN  978-1-4503-4139-4.
  20. ^ a b Hund, R .; Willems, C .; Хольц, Т. (май 2013 г.). «Практические тайминговые атаки по побочному каналу против ASLR в пространстве ядра» (PDF) . Симпозиум IEEE по безопасности и конфиденциальности 2013 г .: 191–205. DOI : 10,1109 / sp.2013.23 .
  21. ^ "Мелтдаун" (PDF) .
  22. ^ «Spectre, Meltdown: объяснение критических недостатков безопасности процессора - ExtremeTech» . ExtremeTech . 2018-01-04 . Проверено 5 января 2018 .
  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. ^ a b Ларабель, Майкл (2018-01-02). «Первоначальные тесты воздействия на производительность в результате изменений в системе безопасности Linux x86» . Фороникс .
  28. ^ Ларабель, Майкл (2018-01-02). «Игровая производительность Linux не зависит от работы PTI x86» . Фороникс .
  29. ^ Ларабель, Майкл (2018-01-03). «Производительность ВМ демонстрирует неоднозначное влияние с использованием исправлений KPTI для Linux 4.15 - Phoronix» . Фороникс .
  30. ^ Velvindron, Loganaden (2018-01-04). «Производительность Linux KPTI сказывается на реальных рабочих нагрузках» . Логанаден Велвиндрон . Проверено 5 января 2018 .

Внешние ссылки [ править ]

  • Патч документации КПТИ