Бреши Spectre и Meltdown: в чем суть и что под угрозой

Обе уязвимости создают возможность совершения весьма опасных атак


09:38 22.01.2018   |   5274 |  Джош Фрулингер |  CSO Magazine, США

Рубрика Технологии



Обнаруженные в микропроцессорах уязвимости настолько фундаментальны и широко распространены, что исследователи называют их поистине катастрофичными.

Из исследования, опубликованного в первые дни наступившего года, стало известно, что практически все процессоры, выпущенные за последние 20 лет, имеют фундаментальную брешь, различные варианты которой получили названия Spectre и Meltdown. Уязвимости обусловлены особенностями реализации определенных функций чипов, призванных ускорять их работу. Сегодня уже доступны программные заплаты, однако они могут негативно влиять на производительность систем. Пока что нет свидетельств, указывающих на использование уязвимостей злоумышленниками, однако такие эксплойты будет трудно распознать, а сами бреши настолько фундаментальны и широко распространены, что исследователи называют их поистине катастрофичными.

Что такое Spectre и Meltdown

Spectre и Meltdown — это названия, которые дали разным вариантам одной и той же фундаментальной уязвимости, касающейся большинства современных процессоров архитектур x86 и ARM. Если ею воспользуются атакующие, они смогут получить доступ к данным, прежде считавшимся защищенными. Исследователи обнаружили сами недоработки в конце 2017 года, а объявили об этом в начале 2018-го. Выявлено три варианта бреши, у каждого свой номер в глобальной базе данных по известным уязвимостям Common Vulnerabilities and Exposures (CVE). Два из них объединены именем Spectre, третий назвали Meltdown.

Все варианты уязвимости позволяют вредоносным программам получать доступ к данным, прав обращаться к которым у них быть не должно. Это возможно за счет использования двух технологий ускорения работы процессоров — упреждающего выполнения (speculative execution) и кэширования.

Что такое упреждающее выполнение

Упреждающее выполнение — это механизм, при помощи которой процессор «предугадывает будущее» для ускорения своей работы. Зная, что код программы имеет несколько логических ветвей, чип выполняет вычисления по ним заранее, еще до того, как определится, какой из них передать управление. Допустим, код содержит следующую логику: «Если А истинно, вычислить функцию X, в противном случае вычислить Y». В этом случае процессор может начать параллельно вычислять X и Y еще до того, как станет известно значение A. Таким образом, когда значение A получено, у процессора уже будет готовый ответ для соответствующей ветви кода. Другой пример: выяснив, что программа часто использует некую функцию, процессор может в период неактивности вычислить ее, чтобы заранее приготовить ответ. В целом эти приемы обеспечивают ускорение работы.

Что такое кэширование

Кэширование — метод, позволяющий ускорить доступ к памяти. Получение данных из оперативной памяти, размещаемой в отдельном чипе, занимает у процессора относительно много времени, но у него есть небольшое количество встроенной памяти — процессорный кэш, к которому можно обратиться очень быстро. Эта область заполняется данными, которые понадобятся процессору в ближайшее время или которые часто используются. Обычно именно в кэше хранятся результаты упреждающего выполнения, за счет чего отчасти и обеспечивается ускорение.

Проблема возникает, когда при кэшировании и упреждающем выполнении происходит взаимодействие с защищенной памятью.

Что такое защищенная память

Защищенная память — одна из ключевых концепций обеспечения компьютерной безопасности. Суть в том, что ни один процесс на компьютере не должен иметь доступа к данным без соответствующих привилегий. Благодаря этому программы могут предотвращать доступ пользователей к некоторым данным, а операционная система не допускает возможности считывания одной программой данных, принадлежащих другой. Для получения доступа к данным процессу необходимо пройти проверку привилегий, в ходе которой выясняется, позволено ли ему видеть запрашиваемые данные.

Однако проверка привилегий может занимать относительно долгое время. Обсуждаемая уязвимость связана прежде всего с тем, что, пока чип ждет выяснения наличия у процесса права на доступ к определенным данным, включается механизм упреждающего выполнения, то есть заранее начинается обработка запрашиваемых данных, еще до получения разрешения на это. При этом теоретически безопасность сохраняется, поскольку результаты упреждающего выполнения защищаются на аппаратном уровне. Процессу не позволено увидеть их до окончания проверки привилегий, а если ее результат отрицательный, данные уничтожаются.

Однако защищенные данные сохраняются в кэше процессора, даже если программа не получает разрешения на доступ к ним. А поскольку обращение к кэшу происходит быстрее, чем к обычной памяти, процесс может попытаться получить доступ к определенным участкам памяти, чтобы выяснить, производилось ли кэширование хранимых в них данных; он по-прежнему не сможет получить доступ к самим данным, но если они были кэшированы, то отказ попытки считывания произойдет гораздо быстрее, чем в противном случае. Это все равно что постучать по коробке, чтобы по звуку понять, пустая ли она. Ввиду особенностей работы компьютерной памяти знание адресов хранения данных может помочь выяснить сами данные. Это называется атакой по сторонним каналам.

В чем различие между Spectre и Meltdown

Подробное техническое описание Spectre и Meltdown можно найти в записи на сайте Google Project Zero, благодаря которой мир изначально узнал о проблеме. Вкратце, и Spectre, и Meltdown могут позволить атакующим получить, не имея соответствующих привилегий, доступ к данным с применением описанных выше методов. Уязвимости различаются по результатам их использования.

Брешь Meltdown («расплавление») получила такое название, поскольку она «расплавляет» защитные границы, реализованные на аппаратном уровне. Используя Meltdown, атакующий может с помощью работающей на компьютере программы получить доступ к данным, которые ей не должны быть доступны, в том числе принадлежащим другим программам, а также к данным, доступ к которым должен быть только у пользователя с правами администратора. Meltdown не требует особых знаний о том, как работает программа, захватываемая атакующим; однако эту уязвимость можно использовать только на процессорах Intel определенных типов. Сама проблема достаточно серьезная, но для нее уже выпускаются исправления.

Посредством вариантов Spectre атакующий может заставить программу выдать часть ее собственных закрытых данных. Эксплуатация бреши требует более детальных знаний внутреннего устройства программы и не дает возможности получить доступ к данным других программ, однако такая атака сработает практически на любом существующем процессоре. Название Spectre («призрак») отчасти происходит от Speculative Execution, отчасти от вероятности широкого круга атак. И хотя на сегодня уже доступны заплаты против данной уязвимости, в дальнейшем, без сомнения, будут обнаружены и другие варианты — «призрак» будет навещать нас снова и снова.

В чем опасность Spectre и Meltdown

Обе уязвимости создают возможность совершения весьма опасных атак. Например, код JavaScript на сайте может, используя Spectre, заставить браузер выдать имя и пароль пользователя. С помощью Meltdown атакующие могут просматривать данные, принадлежащие другим пользователям и даже другим виртуальным серверам, работающим на том же оборудовании, а это потенциальная катастрофа для операторов платформ облачных вычислений.

Но, помимо самой вероятности конкретных атак, важен тот факт, что бреши присутствуют в большинстве аппаратных платформ, на которых работает ежедневно используемое нами ПО. При этом даже формально защищенный код становится уязвимым, поскольку использованные при его написании предположения о процессах безопасности оказались ложными.

Заплаты против Spectre и Meltdown

Сама уязвимость присутствует на аппаратном уровне, и устранить ее нельзя. Но большинство производителей выпускают программные заплаты, позволяющие обойти проблемы. В частности, у заплаты KAISER, разработанной еще в 2017 году для улучшения защищенности Linux, есть «побочный эффект» в виде предотвращения атак Meltdown. Крупнейшие провайдеры облачных сервисов уже установили заплаты на свои серверы. Исправления выпускают Intel, Microsoft, Apple и Google, на очереди и другие.

Учитывая, что одним из наиболее опасных векторов атак Spectre является использование движков JavaScript в браузерах, их особенно важно обновлять до последних версий.

Более старые системы, особенно Windows XP, скорее всего, заплат уже не получат. Останутся без них и миллионы недорогих Android-фонов, не получающих обновления безопасности от Google, причем многие из этих аппаратов не такие уж и старые.

Когда появятся заплаты для ПК, «маков», iPhone, Android-фонов и браузеров

По состоянию на 11 января Microsoft выпустила заплаты для большинства версий Windows, начиная с Windows 7, в которых также исправлены браузеры Internet Explorer и Edge. Кроме того, на сайте корпорации приводятся ссылки на обновления микропрограмм от большинства крупнейших производителей компьютерных систем. Однако некоторые компьютеры на процессорах AMD после установки заплат перестали запускаться, поэтому для таких систем распространение заплат пока прекращено.

Apple еще 3 января выпустила исправленные версии macOS, iOS и tvOS, а также браузера Safari.

Google опубликовала список моделей хромбуков, для которых вышли заплаты, а также тех, которые не нуждаются в исправлениях (таких устройств большинство), и тех, для которых заплаты уже не выйдут ввиду окончания срока поддержки.

Заплата для Firefox появится 23 января, сейчас она доступна в бета-версии браузера. Тогда же выйдет заплата для Chrome, а пока что для защиты в браузере можно самостоятельно включить экспериментальную функцию изоляции сайтов.

В связи с многочисленностью смартфонов на Android ответ на вопрос о том, будет ли исправлена конкретная модель, не всегда положителен. Большинство аппаратов, предлагаемых непосредственно компанией Google и гигантами наподобие Samsung, уже получили заплаты или получат позднее, но для многих исправлений не будет. Итальянская компания RiCompo, предлагающая технику со скидкой в обмен на старую, создала сайт, на котором можно получить свежую информацию о заплатах для многих марок и моделей смартфонов.

Снижают ли заплаты быстродействие

Принцип действия таких заплат основан на изменении или запрете использования программным обеспечением функций упреждающего выполнения и кэширования. Разумеется, учитывая, что эти средства предназначены для ускорения работы систем, их отключение может привести к обратному. В первых публикациях сообщалось, что снижение производительности может достигнуть 30%, однако тесты показывают, что реальное замедление чаще составляет 5-10%.


Теги: показывать на главной Самое интересное Intel Процессоры Уязвимости Кибербезопасность
На ту же тему: