Привет All!
Фундаментальная ошибка проектирования всех современных процессоров Intel,
выпущенных за последние 10 лет, заставила
[
https://www.theregister.co.uk/2018/01/02/intel_cpu_design_flaw/] разработчиков
Linux и Windows [
https://twitter.com/aionescu/status/930412525111296000] в
срочном порядке переписывать значительные куски кода ядер для того, чтобы
закрыть недавно открытую в них уязвимость. Архитектура ARM64 также подвержена
уязвимости
[
http://lists.infradead.org/pipermail/linux-arm-kernel/2017-November/542751.html].
Детали уязвимости находятся под эмбарго до тех пор, пока не будут выпущены
исправление, которое намечается на середину января 2018 года, когда выйдет
новое ядро Linux и ежемесячное обновление безопасности для Windows. Проблема
возможно
[
http://pythonsweetness.tumblr.com/post/169166980422/the-mysterious-case-of-the-linux-page-table]
уже исправлена в ядре 4.14.11, учитывая огромный размер инкрементного патча
(229 KiB).
По известным сейчас данным, обход этой аппаратной проблемы может привести к
падению производительности приложений на процессорах Intel от 5 до 30% и даже
до 63% [
https://twitter.com/grsecurity] на некоторых задачах. Более новые чипы
от Intel имеют в своём арсенале возможности (PCID / ASID), позволяющие
сократить провал в производительности при применении исправления.
Суть уязвимости, скорее всего, заключается в том, что процессоры Intel при
спекулятивном выполнении кода не выполняют проверки на безопасность инструкций,
которые позволяют читать сегменты памяти, что позволяет любому
пользовательскому приложению получить доступ к памяти ядра, тем самым позволяя
прочитать закрытые данные, такие как ключи шифрования и пароли. Большую
опасность проблема также представляет для систем виртуализации, так как
позволяет получить доступ к памяти вне гостевой системы.
Для решения проблемы разработчикам ядер пришлось полностью разделить память
ядра и память пользовательских приложений, однако такое решение приводит к
серьёзному падению производительности из-за постоянной необходимости замены
указателей на память. Разработчики ядра Linux в шутку предлагали следующие
аббревиатуры [
https://lkml.org/lkml/2017/12/4/709] для новой модели разделения
памяти ядра и пользовательских процессов: User Address Separation (*_uass) и
Forcefully Unmap Complete Kernel With Interrupt Trampolines (fuckwit_*), однако
остановились на Kernel Page Table Isolation (kpti_*).
Разработчики из GRSecurity протестировали патчи
[
https://lkml.org/lkml/2017/12/4/709] и увидели огромное
[
https://twitter.com/grsecurity] падение производительности. Разработчики
PostgreSQL отметили
[
https://www.postgresql.org/message-id/20180102222354....@alap3.anarazel.de]
падение производительности в тесте pgbench на 23% (при использовании
процессоров с PCID - 17%). Из-за сильного влияния на производительность
разработчики патча предусмотрели опцию для отключения KPTI, которая
активируется через передачу параметра "nopti" при загрузке ядра.
Компания AMD утверждает, что её процессоры уязвимости не подвержены
[
https://lkml.org/lkml/2017/12/27/2]. Работа над исправлением уязвимости в
других операционных системах также активно ведётся
http://www.opennet.ru/opennews/art.shtml?num=47849
С уважением. Anton aka Stalker
Linux Registered User #386476
[#*TEAM:*#] [#_Злой СисОп_#] [*Heavy Metal!*] [*_Усачи_*]