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

Изоляция таблицы страниц ядра ( 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 ]
Ссылки
[ редактировать ]- ^ Jump up to: а б Ларабель, Майкл (3 января 2018 г.). «Дальнейший анализ проблемы процессора Intel x86 PTI на других системах» . Фороникс .
- ^ Jump up to: а б Корбет, Джонатан (20 декабря 2017 г.). «Текущее состояние изоляции таблицы страниц ядра» . LWN.net .
- ^ Чимпану, Каталин (3 января 2018 г.). «Производители ОС готовят исправления для устранения секретной ошибки безопасности процессора Intel» . Пипящий компьютер .
- ^ «Spectre, Meltdown: объяснение критических недостатков безопасности процессора – ExtremeTech» . ЭкстримТех . 04.01.2018 . Проверено 5 января 2018 г.
- ^ Jump up to: а б с д и Корбет, Джонатан (15 ноября 2017 г.). «KAISER: скрытие ядра из пользовательского пространства» . LWN.net .
- ^ Jump up to: а б с д и Привет, Дэниел; Липп, Мориц; Блэк, Майкл; Феллнер, Ричард; Морис, Клементина; Мангард, Стефан (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 года . Проверено 03 января 2018 г.
- ^ Jump up to: а б Колдьюи, Девин (4 января 2018 г.). «Паника ядра! Что такое Meltdown и Spectre, ошибки, затрагивающие почти каждый компьютер и устройство?» . ТехКранч .
- ^ Грусс, Дэниел (03 января 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 .
- ^ Jump up to: а б Хунд, Р.; Виллемс, К.; Хольц, Т. (май 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 . Проверено 5 января 2018 г.
- ^ Колдьюи, Девин (4 января 2018 г.). «Паника ядра! Что такое Meltdown и Spectre, ошибки, затрагивающие почти каждый компьютер и устройство?» . ТехКранч .
- ^ «Обновление безопасности процессоров AMD» . АМД . 04.01.2018.
- ^ Лейден, Джон; Уильямс, Крис (2 января 2018 г.). «Ошибка конструкции процессора Intel, связанная с утечкой памяти ядра, вынуждает перепроектировать Linux и Windows» . Регистр .
- ^ Фройнд, Андрес (2 января 2018 г.). «Внимание: исправление аппаратной ошибки Intel приведет к снижению производительности» . Список рассылки разработчиков PostgreSQL (pgsql-hackers) .
- ^ Jump up to: а б Ларабель, Майкл (2 января 2018 г.). «Первоначальные тесты влияния на производительность в результате изменений безопасности x86 в Linux» . Фороникс .
- ^ Ларабель, Майкл (2 января 2018 г.). «Работа PTI x86 не влияет на игровую производительность Linux» . Фороникс .
- ^ Ларабель, Майкл (3 января 2018 г.). «Производительность виртуальной машины демонстрирует неоднозначное влияние патчей KPTI для Linux 4.15 – Phoronix» . Фороникс .
- ^ Вельвиндрон, Логанаден (4 января 2018 г.). «Производительность Linux KPTI снижается при реальных рабочих нагрузках» . Логанаден Велвиндрон . Проверено 5 января 2018 г.