Изоляция таблицы страниц ядра

Изоляция таблицы страниц ядра ( KPTI или PTI , [1] ранее назывался KAISER ) [2] [3] — это функция ядра Linux которая смягчает уязвимость безопасности Meltdown (затрагивающую в основном Intel , x86 процессоры ). [4] и улучшает защиту ядра от попыток обойти рандомизацию структуры адресного пространства ядра (KASLR). Это работает за счет лучшей изоляции пользовательского пространства и памяти пространства ядра. [5] [6] KPTI был объединен с ядром Linux версии 4.15. [7] и перенесен на ядра Linux 4.14.11, 4.9.75 и 4.4.110. [8] [9] [10] Окна [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]
По оценкам первоначальных авторов KAISER, накладные расходы составили 0,28%; [6] разработчик Linux оценил его примерно в 5 % для большинства рабочих нагрузок и в некоторых случаях до 30 %, даже с учетом оптимизации PCID; [5] для ядра базы данных PostgreSQL влияние на тесты только чтения на процессоре Intel Skylake составило 7–17% (или 16–23% без PCID), [26] в то время как полный бенчмарк потерял 13–19% ( Coffee Lake против Broadwell-E ). [27] Многие тесты были проведены компанией Phoronix . [28] [29] [1] Redis замедлился на 6–7%. [27] замедлилась на 5% Компиляция ядра Linux на Haswell . [30]
KPTI можно частично отключить с помощью опции загрузки ядра nopti. Также были созданы условия для отключения КПТИ, если новые процессоры устранят утечку информации. [2]
Ссылки
[ редактировать ]- ^ Перейти обратно: а б Ларабель, Майкл (3 января 2018 г.). «Дальнейший анализ проблемы процессора Intel x86 PTI на других системах» . Фороникс .
- ^ Перейти обратно: а б Корбет, Джонатан (20 декабря 2017 г.). «Текущее состояние изоляции таблицы страниц ядра» . LWN.net .
- ^ Чимпану, Каталин (3 января 2018 г.). «Производители ОС готовят исправления для устранения секретной ошибки безопасности процессора Intel» . Пипящий компьютер .
- ^ «Spectre, Meltdown: объяснение критических недостатков безопасности процессора – ExtremeTech» . ЭкстримТех . 04.01.2018 . Проверено 05 января 2018 г.
- ^ Перейти обратно: а б с д и Корбет, Джонатан (15 ноября 2017 г.). «KAISER: скрытие ядра из пользовательского пространства» . LWN.net .
- ^ Перейти обратно: а б с д и Привет, Дэниел; Липп, Мориц; Блэк, Майкл; Феллнер, Ричард; Морис, Клементина; Мангард, Стефан (24 июня 2017 г.). KASLR мертв: да здравствует KASLR (PDF) . Инженерное безопасное программное обеспечение и системы 2017.
- ^ Корбет, Джонатан (20 декабря 2017 г.). «Изоляция таблицы страниц ядра объединена» . LWN.net .
- ^ Кроа-Хартман, Грег (2 января 2018 г.). «Журнал изменений Linux 4.14.11» . ядро.орг .
- ^ Кроа-Хартман, Грег (5 января 2018 г.). «Журнал изменений Linux 4.9.75» . ядро.орг .
- ^ Кроа-Хартман, Грег (5 января 2018 г.). «Журнал изменений Linux 4.4.110» .
- ^ @aionescu (14 ноября 2017 г.). «Изоляция ядра Windows 17035 ASLR/VA на практике» ( твит ) – через Twitter .
- ^ «Apple уже частично реализовала в macOS исправление уязвимости безопасности процессора Intel KPTI» . AppleInsider . 3 января 2018 года . Проверено 3 января 2018 г.
- ^ Перейти обратно: а б Колдьюи, Девин (4 января 2018 г.). «Паника ядра! Что такое Meltdown и Spectre, ошибки, затрагивающие почти каждый компьютер и устройство?» . ТехКранч .
- ^ Грусс, Дэниел (3 января 2018 г.). «#ЗабавныйФакт: мы отправили #KAISER на #bhusa17 и получили отказ» . Архивировано из оригинала 08 января 2018 г. Проверено 8 января 2018 г. - через Twitter.
- ^ «Ядро Linux 3.14, раздел 1.7. Рандомизация адресного пространства ядра» . kernelnewbies.org . 30 марта 2014 г. Проверено 2 апреля 2014 г.
- ^ Бхаттачарджи, Абхишек; Люстиг, Дэниел (29 сентября 2017 г.). Архитектурная и операционная поддержка виртуальной памяти . Издательство Морган и Клейпул. п. 56. ИСБН 978-1-62705-933-6 .
- ^ Кернер, Шон Майкл (3 января 2018 г.). «Недостаток чипа Intel KPTI создает угрозу безопасности» . еНЕДЕЛЯ .
- ^ Чан, Ёнджин; Ли, Санго; Ким, Тэсу (2016). «Нарушение рандомизации макета адресного пространства ядра с помощью Intel TSX» (PDF) . Материалы конференции ACM SIGSAC 2016 г. по компьютерной и коммуникационной безопасности . ККС '16. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 380–392. дои : 10.1145/2976749.2978321 . ISBN 978-1-4503-4139-4 .
- ^ Грусс, Дэниел; Морис, Клементина; Фог, Андерс; Липп, Мориц; Мангард, Стефан (2016). «Атаки по побочным каналам с предварительной выборкой» (PDF) . Материалы конференции ACM SIGSAC 2016 г. по компьютерной и коммуникационной безопасности . ККС '16. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 368–379. дои : 10.1145/2976749.2978356 . ISBN 978-1-4503-4139-4 . S2CID 15973158 .
- ^ Перейти обратно: а б Хунд, Р.; Виллемс, К.; Хольц, Т. (май 2013 г.). «Практические атаки по побочным каналам по времени на ASLR ядра» (PDF) . Симпозиум IEEE 2013 по безопасности и конфиденциальности . стр. 191–205. дои : 10.1109/sp.2013.23 . ISBN 978-0-7695-4977-4 . S2CID 215754624 .
- ^ «Крах» (PDF) .
- ^ «Spectre, Meltdown: объяснение критических недостатков безопасности процессора – ExtremeTech» . ЭкстримТех . 04.01.2018 . Проверено 05 января 2018 г.
- ^ Колдьюи, Девин (4 января 2018 г.). «Паника ядра! Что такое Meltdown и Spectre, ошибки, затрагивающие почти каждый компьютер и устройство?» . ТехКранч .
- ^ «Обновление безопасности процессоров AMD» . АМД . 04.01.2018.
- ^ Лейден, Джон; Уильямс, Крис (2 января 2018 г.). «Ошибка конструкции процессора Intel, связанная с утечкой памяти ядра, вынуждает перепроектировать Linux и Windows» . Регистр .
- ^ Фройнд, Андрес (2 января 2018 г.). «Внимание: исправление аппаратной ошибки Intel приведет к снижению производительности» . Список рассылки разработчиков PostgreSQL (pgsql-hackers) .
- ^ Перейти обратно: а б Ларабель, Майкл (2 января 2018 г.). «Первоначальные тесты влияния на производительность в результате изменений безопасности x86 в Linux» . Фороникс .
- ^ Ларабель, Майкл (2 января 2018 г.). «Работа PTI x86 не влияет на игровую производительность Linux» . Фороникс .
- ^ Ларабель, Майкл (3 января 2018 г.). «Производительность виртуальной машины демонстрирует неоднозначное влияние патчей KPTI для Linux 4.15 – Phoronix» . Фороникс .
- ^ Вельвиндрон, Логанаден (4 января 2018 г.). «Производительность Linux KPTI снижается при реальных рабочих нагрузках» . Логанаден Велвиндрон . Проверено 05 января 2018 г.