До недавнего времени информационная безопасность локального компьютера строилась на принципе полной изоляции одной выполняющейся программы от другой. Это значило, что при отсутствии ошибки в программном обеспечении ни одному из процессоров недоступны данные другого без предоставления явного доступа.
Предполагалось, что такая изоляция надёжно обеспечивается центральным процессором. Однако, в прошлом году была найдена наиболее серьёзная компьютерная ошибка из всех, когда-либо существовавших.
- Что подвержено уязвимости?
- Как изолируются процессы?
- Как возникает Meltdown?
- Каким процессорам угрожает Meltdown?
- Есть ли возможность программной защиты?
Что подвержено уязвимости?
Этой ошибке в той или иной степени подвержен ноутбук, планшет, сервер и т. д. Серьёзная угроза состоит в том, что от неё не застрахованы компьютеры, обслуживающие оборудование для современной связи, и даже автомобили, поезда или самолёты. Словом, в опасности любой процессор, кроме микроконтроллера. Хорошей новостью можно назвать лишь то, что не всем процессорам эта ошибка угрожает с существенной вероятностью. Но есть и плохая: наиболее уязвима большая часть продукции компании Intel.
Как изолируются процессы?
Чтобы не возникало пересечения пространств, у приложений отсутствует доступ к физической памяти компьютера. Вместо этого они работают с виртуальными адресными пространствами, причём их отображение на физической памяти происходит так, что совмещение исключено. Контролируются адресные пространства с помощью блока управления памятью (Memory Management Unit, или MMU). Попытки превысить выделенную этим блоком для приложения память вовремя пресекает процессор.
Даже в случае, если имеется формальный доступ к соответствующим адресам. С первого взгляда кажется, что такая система не подвержена вообще никаким ошибкам. Однако, даже в этом случае информационная безопасность не может быть полной.
Как возникает Meltdown?
Дело в том, что в работе процессора существуют внутренние алгоритмы, чья работа даёт результат, который косвенным путём может прочесть та или иная программа.
С помощью спекулятивных алгоритмов обеспечивается основное преимущество Intel — высокая производительность. Основываются они на том, что любая периферия работает медленней, чем центральный процессор. Это касается и оперативной памяти. Если выполнение очередной инструкции требует ожидать данные, поступающие извне, то в период ожидания процессором инициируется выполнение следующего кода. Выбор исходит из наибольшей вероятности поступления тех или иных данных. Выполняя следующую строку, он не ждёт, пока будет вычислено предыдущее условие.
Теперь рассмотрим, что случается, если результаты вычислений негативны. В этом случае они будут отброшены процессором. Вычисление проводится снова, теперь в последовательном режиме. Оценка вероятности выполнения данного условия будет снижена модулем, предсказывающим ветвления. То же самое происходит, если, согласно сообщению MMU, имеет место некорректный код при выходе переменной за пределы памяти, выделенной для процесса.
Все данные, обрабатываемые процессором, делятся, таким образом, на спекулятивные и последовательные. Но и те, и другие без разбора отправляются в кэш. Туда же отправляются и хранящиеся по некорректным адресам значения, которое может быть обнаружено пользовательской программой по скорости ответа. А далее методом косвенной адресации может быть прочитана вся память системы.
Такая уязвимость, получившая название Meltdown представляет собой серьёзную угрозу информационной безопасности.
Каким процессорам угрожает Meltdown
Однозначно уязвимы следующие линейки:
- Xeon.
- Celeron.
- Pentium.
Под вопросом находится ARM Cortex-A75, в том числе ARM для новых моделей iPhone и iPad. Существует большая степень вероятности, что уязвимости не подвергается MIPS.
Есть ли возможность программной защиты?
Существует ли возможность защититься от этой недавно обнаруженной уязвимости с помощью надёжных программ. Теоретически — имеется, практически она также осуществима. Ведь с помощью Meltdown эксплуатируется лишь игнорирование процессорами того или иного уровня доступа к ячейкам памяти. Однако чтение памяти, находящееся за пределами выделенных приложениям виртуальных пространств читать невозможно. И это помогает эффективно защититься от Meltdown. Для каждой популярной оперативной системы уже выходят или готовы к выходу патчи, функция которых — перенос памяти из ядер в другие области. Они не только выставляют привилегии, но и контролируют адресный доступ. Именно контроль доступа по адресам недоступен для уязвимости Meltdown.