Исправления KPTI были основаны на KAISER (сокращение от Kernel Address Isolation to have Side-channels Efficiently Removed ), [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]
В январе 2018 года была опубликована уязвимость Meltdown , которая, как известно, затрагивает процессоры Intel x86 и ARM Cortex-A75 . [22] [23] Это была гораздо более серьезная уязвимость, чем обход KASLR, который KAISER изначально намеревался исправить: было обнаружено, что может быть утечка содержимого памяти ядра, а не только мест расположения отображений памяти, как считалось ранее.
KPTI (концептуально основанный на KAISER) предотвращает Meltdown, не позволяя большинству защищенных местоположений отображаться в пространстве пользователя.
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] Phoronix провел множество тестов производительности , [28] [29] [1] Redis замедлился на 6–7%. [27] Компиляция ядра Linux замедлилась на 5% на Haswell . [30]
KPTI можно частично отключить с помощью опции загрузки ядра "nopti". Также были созданы положения для отключения KPTI, если новые процессоры исправят утечки информации. [2]
Ссылки
^ ab Ларабель, Майкл (2018-01-03). «Дальнейший анализ проблемы Intel CPU "x86 PTI" на других системах». Phoronix .
^ ab Corbet, Jonathan (2017-12-20). "Текущее состояние изоляции таблиц страниц ядра". LWN.net .
^ Cimpanu, Catalin (2018-01-03). «Производители ОС готовят исправления для секретной ошибки безопасности процессоров Intel». Bleeping Computer .
^ abcde Корбет, Джонатан (15.11.2017). "KAISER: скрытие ядра от пространства пользователя". LWN.net .
^ abcde Грусс, Дэниел; Липп, Мориц; Шварц, Майкл; Феллнер, Ричард; Морис, Клементина; Мангард, Стефан (24 июня 2017 г.). KASLR мертв: да здравствует KASLR (PDF) . Инженерное безопасное программное обеспечение и системы 2017.
^ @aionescu (14.11.2017). «Изоляция ядра Windows 17035 ASLR/VA на практике» ( твит ) – через Twitter .
^ "Apple уже частично реализовала исправление в macOS для уязвимости безопасности процессора Intel 'KPTI'". AppleInsider . 3 января 2018 г. Получено 03.01.2018 .
^ ab Coldewey, Devin (2018-01-04). «Паника ядра! Что такое Meltdown и Spectre, ошибки, затрагивающие почти каждый компьютер и устройство?». TechCrunch .
^ Gruss, Daniel (2018-01-03). "#FunFact: Мы отправили #KAISER на #bhusa17 и получили отклонение". Архивировано из оригинала 2018-01-08 . Получено 2018-01-08 – через Twitter.
^ "Ядро Linux 3.14, Раздел 1.7. Рандомизация адресного пространства ядра". kernelnewbies.org . 2014-03-30 . Получено 2014-04-02 .
^ Бхаттачарджи, Абишек; Люстиг, Дэниел (29.09.2017). Архитектурная и операционная системная поддержка виртуальной памяти. Morgan & Claypool Publishers. стр. 56. ISBN978-1-62705-933-6.
^ Jang, Yeongjin; Lee, Sangho; Kim, Taesoo (2016). «Breaking Kernel Address Space Layout Randomization with Intel TSX» (PDF) . Труды конференции ACM SIGSAC 2016 года по компьютерной и коммуникационной безопасности . CCS '16. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 380–392. doi : 10.1145/2976749.2978321 . ISBN978-1-4503-4139-4.
^ Грасс, Дэниел; Морис, Клементин; Фог, Андерс; Липп, Мориц; Мангард, Стефан (2016). «Атаки по боковым каналам предварительной выборки» (PDF) . Труды конференции ACM SIGSAC 2016 года по компьютерной и коммуникационной безопасности . CCS '16. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 368–379. doi :10.1145/2976749.2978356. ISBN978-1-4503-4139-4. S2CID 15973158.
^ ab Hund, R.; Willems, C.; Holz, T. (май 2013 г.). "Практические атаки по сторонним каналам синхронизации против ASLR пространства ядра" (PDF) . Симпозиум IEEE 2013 г. по безопасности и конфиденциальности . стр. 191–205. doi :10.1109/sp.2013.23. ISBN978-0-7695-4977-4. S2CID 215754624.
^ Колдевей, Девин (2018-01-04). «Паника ядра! Что такое Meltdown и Spectre, ошибки, затрагивающие почти каждый компьютер и устройство?». TechCrunch .
^ «Обновление безопасности процессоров AMD». AMD . 2018-01-04.
^ Лейден, Джон; Уильямс, Крис (2018-01-02). «Недостаток конструкции процессора Intel, приводящий к утечке памяти ядра, заставляет перепроектировать Linux и Windows». The Register .
^ Фройнд, Андрес (2018-01-02). "heads up: Fix for Intel Hardware Bug приведет к регрессии производительности". Список рассылки по разработке PostgreSQL (pgsql-hackers) .
^ ab Ларабель, Майкл (2018-01-02). «Первоначальные тесты влияния на производительность, вызванного изменениями безопасности Linux x86». Phoronix .
^ Ларабель, Майкл (2018-01-02). «Производительность игр Linux, похоже, не пострадала от работы x86 PTI». Phoronix .
^ Ларабель, Майкл (03.01.2018). «Производительность виртуальной машины демонстрирует неоднозначное влияние исправлений KPTI для Linux 4.15 – Phoronix». Phoronix .
^ Velvindron, Loganaden (2018-01-04). "Linux KPTI performance hit on real workloads". Loganaden Velvindron . Получено 2018-01-05 .
Внешние ссылки
17. Изоляция таблицы страниц (PTI) — документация ядра Linux