Уязвимости meltdown и spectre

Уязвимости meltdown и spectre

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

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

Данные ошибки безопасности были обнаружены Янном Хорном (Jann Horn), исследователем безопасности из проекта Project Zero.

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

Аппаратные ошибки нужно исправить программно

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

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

Google предупреждает, что уязвимостям подвержена продукция основных производителей процессоров и чипсетов (Intel, AMD, ARM), все основные операционные системы (Windows, Linux, macOS, Android, ChromeOS), провайдеры облачных услуг (Amazon, Google, Microsoft) и разработчики приложений.

Уязвимости обнаружены в технике “спекулятивное исполнение”

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

Цель спекулятивного исполнения — подготовить вычислительные результаты, которые когда-либо понадобятся. Если для приложения не нужны “спекулированные” данные, процессор просто проигнорирует данную технику.

Хорн обнаружил способ использовать спекулятивное исполнение для чтения данных из памяти ЦП, которые не должны быть доступны для приложений пользовательского уровня.

Он обнаружил три уязвимости, которые он объединил в двух типах атак, названных Meltdown (CVE-2017-5753 и CVE-2017-5715) и Spectre (CVE-2017-5754).

Что такое Meltdown и Spectre

Google описывает атаки следующим образом:

Meltdown нарушает основные принципы изоляции между пользовательскими приложениями и операционной системой. Эта атака позволяет программе получать доступ к памяти и таким образом к секретам других программ и операционной системы.

Имя Meltdown (с англ. расплавление) используется, потому что “ошибка расплавляет границы безопасности, которые обычно обеспечиваются аппаратным обеспечением”.

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

Имя Spectre (с англ. фантом, призрак) выбрано исходя из первопричины — спекулятивного исполнения. Проблемы исправить очень непросто, поэтому она будет преследовать пользователя долгое время.

Google сообщает, что “эксплуатировать Spectre сложнее, чем Meltdown, но исправить уязвимость Spectre тоже будет очень трудно”.

Сложно обнаружить

Google предостерегает, что обнаружить атаки с использованием этих двух методов на данный момент практически невозможно.

Компания сообщает: “Эксплуатация уязвимостей не оставляет следов в традиционных файлах журналов”. Хотя теоретически обнаружить атаки возможно, антивирусные продукты не смогут распознать их на практике.

По этой причине Google не смог установить, использовались ли Meltdown или Spectre в реальных сценариях атак или нет.

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

Большинство процессоров с 1995 года уязвимы

Google считает, что “каждый процессор Intel с реализацией внеочередного исполнения потенциально подвержен уязвимости. Таким образом, уязвимыми для Meltdown являются практически все процессоры с 1995 года (за исключением Intel Itanium и Intel Atom) до 2013 года”.

Meltdown был проверен только против процессоров Intel, AMD и ARM процессоры не тестировались. Тем не менее, доля Intel на рынке стационарных ПК составляет 80%, а на рынках ноутбуков и серверов — 90%. Это означает, что уязвимостям подвержено абсолютное большинство ПК, ноутбуков и серверов.

Читайте также:  Nonetype object has no attribute append

Влияние Meltdown на мобильные устройства неизвестно, но патчи для Android уже доступны.

Google проверила Spectre против процессоров Intel, AMD и ARM. Атака оказалась успешной в случае с ПК, ноутбуками, облачными серверами и смартфонами. Считается, что атака затрагивает почти все выпущенные в последние годы процессоры.

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

Технически подкованные пользователи могут ознакомиться с отчетами по уязвимостям Meltdown и Spectre .

Vulnerabilities in modern computers leak passwords and sensitive data.

Meltdown and Spectre work on personal computers, mobile devices, and in the cloud. Depending on the cloud provider’s infrastructure, it might be possible to steal data from other customers.

Meltdown

Meltdown breaks the most fundamental isolation between user applications and the operating system. This attack allows a program to access the memory, and thus also the secrets, of other programs and the operating system.

If your computer has a vulnerable processor and runs an unpatched operating system, it is not safe to work with sensitive information without the chance of leaking the information. This applies both to personal computers as well as cloud infrastructure. Luckily, there are software patches against Meltdown.

Spectre

Spectre breaks the isolation between different applications. It allows an attacker to trick error-free programs, which follow best practices, into leaking their secrets. In fact, the safety checks of said best practices actually increase the attack surface and may make applications more susceptible to Spectre

Who reported Meltdown?

Who reported Spectre?

Questions & Answers

Am I affected by the vulnerability?

Most certainly, yes.

Can I detect if someone has exploited Meltdown or Spectre against me?

Probably not. The exploitation does not leave any traces in traditional log files.

Can my antivirus detect or block this attack?

While possible in theory, this is unlikely in practice. Unlike usual malware, Meltdown and Spectre are hard to distinguish from regular benign applications. However, your antivirus may detect malware which uses the attacks by comparing binaries after they become known.

What can be leaked?

If your system is affected, our proof-of-concept exploit can read the memory content of your computer. This may include passwords and sensitive data stored on the system.

Has Meltdown or Spectre been abused in the wild?

Is there a workaround/fix?

There are patches against Meltdown for Linux ( KPTI (formerly KAISER)), Windows, and OS X. There is also work to harden software against future exploitation of Spectre, respectively to patch software after exploitation through Spectre ( LLVM patch, MSVC, ARM speculation barrier header).

Which systems are affected by Meltdown?

Which systems are affected by Spectre?

Almost every system is affected by Spectre: Desktops, Laptops, Cloud Servers, as well as Smartphones. More specifically, all modern processors capable of keeping many instructions in flight are potentially vulnerable. In particular, we have verified Spectre on Intel, AMD, and ARM processors.

Which cloud providers are affected by Meltdown?

What is the difference between Meltdown and Spectre?

Why is it called Meltdown?

The vulnerability basically melts security boundaries which are normally enforced by the hardware.

Why is it called Spectre?

The name is based on the root cause, speculative execution. As it is not easy to fix, it will haunt us for quite some time.

Is there more technical information about Meltdown and Spectre?

Yes, there is an academic paper and a blog post about Meltdown, and an academic paper about Spectre. Furthermore, there is a Google Project Zero blog entry about both attacks.

Читайте также:  Не работает печка на соболе причины

What are CVE-2017-5753 and CVE-2017-5715?

What is the CVE-2017-5754?

Can I see Meltdown in action?




Can I use the logo?

Logo Logo with text Code illustration
Meltdown PNG / SVG PNG / SVG PNG / SVG
Spectre PNG / SVG PNG / SVG PNG / SVG

Is there a proof-of-concept code?

Yes, there is a GitHub repository containing test code for Meltdown.

Where can I find official infos/security advisories of involved/affected companies?

Link
Intel Security Advisory / Newsroom / Whitepaper
ARM Security Update
AMD Security Information
RISC-V Blog
NVIDIA Security Bulletin / Product Security
Microsoft Security Guidance / Information regarding anti-virus software / Azure Blog / Windows (Client) / Windows (Server)
Amazon Security Bulletin
Google Project Zero Blog / Need to know
Android Security Bulletin
Apple Apple Support
Lenovo Security Advisory
IBM Blog
Dell Knowledge Base / Knowledge Base (Server)
Hewlett Packard Enterprise Vulnerability Alert
HP Inc. Security Bulletin
Huawei Security Notice
Synology Security Advisory
Cisco Security Advisory
F5 Security Advisory
Mozilla Security Blog
Red Hat Vulnerability Response / Performance Impacts
Debian Security Tracker
Ubuntu Knowledge Base
SUSE Vulnerability Response
Fedora Kernel update
Qubes Announcement
Fortinet Advisory
NetApp Advisory
LLVM Spectre (Variant #2) Patch / Review __builtin_load_no_speculate / Review llvm.nospeculateload
CERT Vulnerability Note
MITRE CVE-2017-5715 / CVE-2017-5753 / CVE-2017-5754
VMWare Security Advisory / Blog
Citrix Security Bulletin / Security Bulletin (XenServer)
Xen Security Advisory (XSA-254) / FAQ

Acknowledgements

We would like to thank Intel for awarding us with a bug bounty for the responsible disclosure process, and their professional handling of this issue through communicating a clear timeline and connecting all involved researchers. Furthermore, we would also thank ARM for their fast response upon disclosing the issue.

This work was supported in part by the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme (grant agreement No 681402).

This work was supported in part by NSF awards #1514261 and #1652259, financial assistance award 70NANB15H328 from the U.S. Department of Commerce, National Institute of Standards and Technology, the 2017-2018 Rothschild Postdoctoral Fellowship, and the Defense Advanced Research Project Agency (DARPA) under Contract #FA8650-16-C-7622.

© 2018 Graz University of Technology. All Rights Reserved.

Содержание статьи

Корень проблемы

Изначально в блоге Google Project Zero сообщалось об успешной реализации трех вариантов атаки на кеш процессора:

  • злонамеренная загрузка данных в кеш;
  • обход границ массива;
  • инъекция целевой ветви.

Формально их описали как две сходные уязвимости — Meltdown (первый вариант атаки) и Spectre (второй и третий варианты). Сценарии их практического использования зависят от микроархитектуры ЦП и операционной системы, в разной степени затрагивая производителей железа, облачных провайдеров и сообщество Linux.

Авторы исследования знали о проблеме давно. 1 июня 2017 года они отправили свои отчеты в Intel, AMD и ARM, пообещав не публиковать детали до тех пор, пока разработчики не выпустят патчи. Однако произошла утечка информации, из-за которой им пришлось обнародовать подробности раньше.

Уязвимости имеют много сходных черт на концептуальном уровне. Обе делают возможным проведение атаки по стороннему каналу, используя недостатки физической реализации процессоров. Впервые данный класс атак подробно описал Пол Кёхер (Paul Köcher) еще в 1996 году применительно к популярным криптосистемам. Он также выступил соавтором исследования Meltdown и Spectre.

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

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

Читайте также:  Чем удалить супер клей с ткани

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

Бомба замедленного действия

Сама идея внеочередного исполнения инструкций была предложена IBM в 1963 году. Рядовые пользователи столкнулись с ней только в 1995 году, когда появился первый Pentium Pro. С тех пор линейный конвейер канул в Лету, а все современные процессоры используют архитектуру с внеочередным (out-of-order) и одновременно упреждающим (или спекулятивным — speculative) механизмом исполнения команд.

Как же это работает? Для программиста все выглядит просто. Он отправил очередь инструкций на вход и получил ее исполнение на выходе. Однако внутри процессора творится своя магия. Современное процессорное ядро использует многоуровневый конвейер с нелинейными путями. Все входящие инструкции в нем кешируются и декодируются по нескольку штук за такт. Они дробятся на микрооперации, которые переупорядочиваются в собственном буфере (ROB, Re-Order Buffer). Ни одна из них не работает с реальными адресами памяти и физическими регистрами процессора. Блок управления памятью транслирует виртуальные адреса и определяет параметры доступа к ним.

После ROB микрооперации отправляются в станцию резервации, где обрабатываются параллельно на разных исполнительных блоках. Вдобавок современные процессоры используют разные типы кешей для ускорения обработки данных, изначально загружаемых в не слишком быструю оперативную память. Простейший кеш для инструкций применялся еще в 1982 году, а кеш данных используется с 1985 года. Сейчас они оба относятся к базовому кешу первого уровня (L1), помимо которого появились L2 и L3 общего назначения.

Блоковая диаграмма конвейера Intel Skylake / Kaby Lake (источник: wikichip.org)

Все эти архитектурные навороты создавались для уменьшения времени простоя отдельных исполнительных блоков процессора. Пока один блок ожидает загрузки данных из оперативной памяти для своей инструкции, другой параллельно обрабатывает следующие. В этом ему помогает MMU (Memory Management Unit) и общая архитектура конвейера, который старается работать на упреждение и постоянно подгружает наиболее востребованные данные в кеш.

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

В большей мере задержками в проверке условий и длинным забеганием вперед по ветвям инструкций грешат процессоры Intel с длинным конвейером (кроме Itanium и первых Atom), но AMD и даже ARM это тоже касается — просто в эксплоитах для них потребуется более точный таймер, другие размеры массивов и техники забивания кеша. Если Meltdown для них пока не смогли убедительно воспроизвести, то Spectre — вполне.

Блоковая диаграмма конвейера AMD Zen (источник: wikichip.org)

Целых 27 лет ведущие разработчики считали, что скорость обработки инструкций важнее безопасности, а все проверки можно делать уже после пробного исполнения команд «на выходе» из конвейера. В том или ином виде внеочередное исполнение сегодня реализовано во всех процессорах. Из-за параллельной работы исполнительных блоков задержка в обработке исключения, лаг MMU и очистки кеша тоже есть всегда, просто в случае микроархитектуры Core они заметнее и ими проще воспользоваться.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Ссылка на основную публикацию
Утилиты асус для ноутбука
Драйверы и утилиты от производителя для ноутбуков и нетбуков ASUS под операционную систему Windows 10 / 8.1 / 8 /...
Теплопроводность олова и меди
Все изделия, используемые человеком, способны передавать и сохранять температуру прикасаемого к ним предмета или окружающей среды. Способность отдачи тепла одного...
Терминальные лицензии windows server 2008 r2
Установка сервера терминалов в 2008/2008R2 2 часть / активация сервера терминалов 2008 r2 Установка сервера терминалов в 2008/2008R2 2 часть...
Утилиты для виндовс 10 64 бит
Скачать антивирус NOD32 на компьютер Windows 10 бесплатно на русском языке для защиты ноутбука или ПК от вирусов и потенциального...
Adblock detector