Технологии
Из-за ошибки в процессорах Intel необходимо переписать код ОС
В дизайне процессоров Intel выявлена фундаментальная ошибка, которая требует внесения значительных изменений в ядра операционных систем Linux, Windows и macOS для устранения уязвимости на уровне чипа. Обновление микрокода чипа не позволит устранить проблему. Решить её можно только через программное обновление операционных систем или же путём покупки нового процессора, в котором нет ошибки в дизайне.
Программисты наспех вносят изменения в систему виртуальной памяти ядра Linux. В Microsoft также уделили особое внимание данной проблеме и распространили соответствующее обновление Windows среди участников программы тестирования Windows Insider в ноябре и декабре. Выход исправления для всех пользовательских систем запланирован на ближайший «Вторник патчей».
В результате установки этих обновлений производительность систем с процессорами Intel в ОС Linux и Windows существенно снизится. По предварительным оценкам, в зависимости от типа выполняемых задач и модели процессора, падение производительности составит от 5% до 30%. В более новых версиях чипов содержатся функции, такие как PCID, которые позволят уменьшить негативный эффект снижения производительности.
Пока что подробности об уязвимости в дизайне процессоров Intel не разглашаются. Вероятно, подробные сведения будут опубликованы для общественности после массового выпуска обновлений для операционных систем. На текущий момент о проблеме известно немного. Однако сообщается, что ошибке подвержены современные процессоры, выпущенные на протяжении последнего десятилетия. Из-за ошибки в дизайне ряд пользовательских программ – от приложений для работы с базами данных до jаvascript в браузерах – могут получать доступ к защищённым участкам памяти ядра.
Как минимум, вредоносное ПО и хакеры могут воспользоваться этой ошибкой для более простого использования других ошибок безопасности. В худшем случае ошибка может позволить прочитать содержимое памяти ядра, в котором, среди прочего, могут содержаться конфиденциальные сведения о логинах, паролях, секретных ключах и т.д. Программное устранение ошибки заключается в том, что память ядра полностью изолируется от пользовательских процессов, используя KPTI (Kernel Page Table Isolation).
В процессе работы программ для выполнения своих задач (например, для записи данных в файл или открытия сетевого соединения) им всякий раз необходимо передать ядру управление над процессором. Для наиболее быстрого и эффективного перехода от пользовательского режима к режиму ядра и обратно, ядро присутствует во всех адресных пространствах виртуальной памяти всех процессов, хотя для самих программ оно невидимо. Когда ядро необходимо, программа выполняет системный вызов, процессор переключается в режим ядра и получает доступ к нему.
Когда необходимая задача выполнена, процессор получает команду переключиться обратно в пользовательский режим и заново войти в процесс. В пользовательском режиме код и данные ядра остаются вне поля зрения, но присутствуют в таблицах страниц процесса.
Новые обновления для операционных систем переводят ядро в полностью изолированное адресное пространство. В результате, оно становится не только невидимым для запущенных процессов, а полностью отсутствующим в доступных для них адресных пространствах. На самом деле такой подход является ненужным, но из-за ошибки в процессорах Intel он становится необходимым для обеспечения безопасности. Недостатком такого разделения является тот факт, что для переключения между отделёнными адресными пространствами теперь потребуется значительно больше времени для каждого системного вызова и каждого аппаратного прерывания. Для каждого такого переключения теперь потребуется, чтобы процессор полностью выгрузил кэшированные данные и загрузил информацию из памяти. Это приводит к увеличению накладных расходов на работу ядра и замедлению компьютера. В результате, системы на базе процессоров Intel будут работать медленнее.
Программисты наспех вносят изменения в систему виртуальной памяти ядра Linux. В Microsoft также уделили особое внимание данной проблеме и распространили соответствующее обновление Windows среди участников программы тестирования Windows Insider в ноябре и декабре. Выход исправления для всех пользовательских систем запланирован на ближайший «Вторник патчей».
В результате установки этих обновлений производительность систем с процессорами Intel в ОС Linux и Windows существенно снизится. По предварительным оценкам, в зависимости от типа выполняемых задач и модели процессора, падение производительности составит от 5% до 30%. В более новых версиях чипов содержатся функции, такие как PCID, которые позволят уменьшить негативный эффект снижения производительности.
Пока что подробности об уязвимости в дизайне процессоров Intel не разглашаются. Вероятно, подробные сведения будут опубликованы для общественности после массового выпуска обновлений для операционных систем. На текущий момент о проблеме известно немного. Однако сообщается, что ошибке подвержены современные процессоры, выпущенные на протяжении последнего десятилетия. Из-за ошибки в дизайне ряд пользовательских программ – от приложений для работы с базами данных до jаvascript в браузерах – могут получать доступ к защищённым участкам памяти ядра.
Как минимум, вредоносное ПО и хакеры могут воспользоваться этой ошибкой для более простого использования других ошибок безопасности. В худшем случае ошибка может позволить прочитать содержимое памяти ядра, в котором, среди прочего, могут содержаться конфиденциальные сведения о логинах, паролях, секретных ключах и т.д. Программное устранение ошибки заключается в том, что память ядра полностью изолируется от пользовательских процессов, используя KPTI (Kernel Page Table Isolation).
В процессе работы программ для выполнения своих задач (например, для записи данных в файл или открытия сетевого соединения) им всякий раз необходимо передать ядру управление над процессором. Для наиболее быстрого и эффективного перехода от пользовательского режима к режиму ядра и обратно, ядро присутствует во всех адресных пространствах виртуальной памяти всех процессов, хотя для самих программ оно невидимо. Когда ядро необходимо, программа выполняет системный вызов, процессор переключается в режим ядра и получает доступ к нему.
Когда необходимая задача выполнена, процессор получает команду переключиться обратно в пользовательский режим и заново войти в процесс. В пользовательском режиме код и данные ядра остаются вне поля зрения, но присутствуют в таблицах страниц процесса.
Новые обновления для операционных систем переводят ядро в полностью изолированное адресное пространство. В результате, оно становится не только невидимым для запущенных процессов, а полностью отсутствующим в доступных для них адресных пространствах. На самом деле такой подход является ненужным, но из-за ошибки в процессорах Intel он становится необходимым для обеспечения безопасности. Недостатком такого разделения является тот факт, что для переключения между отделёнными адресными пространствами теперь потребуется значительно больше времени для каждого системного вызова и каждого аппаратного прерывания. Для каждого такого переключения теперь потребуется, чтобы процессор полностью выгрузил кэшированные данные и загрузил информацию из памяти. Это приводит к увеличению накладных расходов на работу ядра и замедлению компьютера. В результате, системы на базе процессоров Intel будут работать медленнее.
Читайте также: