Thursday, January 04, 2018

В большинстве процессоров Intel после 1995 г., AMD и ARM64 нашли уязвимость. Ее решение требует изменений в ядрах OS (Russian, English)

Сокращено. Ссылки не сохранены.





См. также:

Дмитрий Бачило: Уязвимость в процессорах Intel (и AMD, и ARM). Meltdown и Spectre
Meltdown (English) - технические детали

Разработчики из Google Project Zero опубликовали детали двух уязвимостей, которые получили кодовые имена Meltdown и Spectre. Процессоры Intel и ARM64 подвержены обеим проблемам, AMD затрагивает только вторая уязвимость. Производители процессоров были уведомлены о проблемах 1 июня 2017 года. Для демонстрации атак подготовлены работающие прототипы эксплоитов, в том числе реализация на JavaScript, работающая в браузере.

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

Исследователи определили два типа техник — Meltdown («Крах») и Spectre («Призрак») — с помощью которых можно обходить эту защиту и узнавать почти все данные, которые обрабатывает компьютер: пароли, зашифрованную информацию и так далее....Пока что настоящие атаки с помощью Meltdown и Spectre не были зафиксированы..

....Так как Meltdown и Spectre действуют на архитектурном уровне, не имеет значения, на какой ОС работает устройство — Windows, MacOS или Android — все платформы уязвимы...

Уязвимость Meltdown (CVE-2017-5754) позволяет приложению прочитать содержимое любой области памяти компьютера, включая память ядра и других пользователей. Проблема также позволяет получить доступ к чужой памяти в системах паравиртуализации (режим полной виртуализации (HVM) проблеме не подвержен) и контейнерной изоляции (в том числе Docker, LXC, OpenVZ), например, пользователь одной виртуальной машины может получить содержимое памяти хост-системы и других виртуальных машин. Уязвимости подвержены процессоры Intel (фактически все процессоры, выпускаемые с 1995 года, за исключением Intel Itanium и Intel Atom, выпущенных до 2013 года) и ARM64 (Cortex-A15/A57/A72/A75). Подготовленный прототип эксплоита позволяет читать память ядра со скоростью 2000 байт в секунду на процессоре Intel Xeon архитектуры Haswell.

Уязвимость Spectre (CVE-2017-5753, CVE-2017-5715) создаёт брешь в механизме изоляции памяти приложений и позволяет атакующему обманным способом получить данные чужого приложения (только приложения, но не памяти ядра). Этой атаке подвержены процессоры Intel, AMD (только при включенном eBPF в ядре) и ARM64 (Cortex-R7/R8, Cortex-A8/A9/A15/A17/A57/A72/A73/A75). По сравнению с Meltdown уязвимость существенно труднее в эксплуатации, но её и значительно труднее исправить. Прототип эксплоита Spectre уже можно найти в открытом доступе.

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

Ниже есть продолжение.

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

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

Пользователям рекомендуется установить обновление ядра сразу после его публикации для дистрибутивов. Исправление проблемы Meltdown для ядра Linux выпущено в виде набора патчей KPTI. Исправление уязвимости Spectre в общем виде пока не выработано, частично предложено обновление микрокода и усиление безопасности отдельных приложений. Обновление для блокирования Meltdown уже выпущено для RHEL, CentOS и Fedora. Проследить за появлением обновлений в других дистрибутивах можно на следующих страницах: Debian, Ubuntu, SUSE (частично исправлена), openSUSE, FreeBSD, OpenBSD, NetBSD. Исправления для Windows и macOS ожидаются в ближайшее время. Для платформы Android исправления были доставлены в последнем обновлении. Проблема также устранена в Chrome OS 63.0.3239.116.

Применение патча обязательно так как пользователи ежедневно запускают чужой код на своих компьютерах, посещая веб сайты с JavaScript (>99%) и одним из инструментов совершения атаки может стать web-браузер. Разработчики Google Chrome работают над интеграцией защиты от совершения атаки через JavaScript прямо в браузер. Исправление будет доступно в релизе Chrome, назначенном на 23 января. Компания Mozilla внесла в Firеfox 57 временные исправления, затрудняющие атаку, ограничив точность работы таймера (performance.now) до 20µs и отключив SharedArrayBuffer.

Интересен комментарий Торвальдса: текущие патчи безусловно включили KPTI для всех процессоров и архитектур Intel, что может означать, что у компании нет кристаллов, в которых эта ошибка исправлена, а это может значить, что Cannon Lake/Ice Lake выйдут с этой же проблемой.

Дополнение: Компанией Google для ядра Linux предложен вариант патчей c реализацией метода "retpoline" для блокирования атаки Spectre. Накладные расходы от данных патчей не превышают 1.5%. Для применения данного метода требуется сборка специально модифицированным компилятором. Поддержка retpoline уже предложена для GCCи Clang.

...уязвимость затрагивает не только персональные компьютеры, но многопользовательские машины вроде серверов облачных сервисов Google Cloud Services или Amazon Web Services.

Intel в заявлении объяснила, что эксплоиты «не могут повредить, изменить или удалить данные». Но они могут позволить злоумышленникам видеть защищенные данные...

Чтобы защититься от этой уязвимости, разработчики Linux уже выпустили патчи, которые разделяют память ядра от пользовательских процессов...Однако с изоляцией ядра возникла другая проблема. В The Register сообщают, что патчи приводят к падению производительности процессоров Intel на 5-30%. Производитель чипов в ответ заявил, что «влияние на производительность зависит от загрузки и для среднестатистического пользователя будут не существенны и постепенно сведены на нет».

В том же время один из исследователей считает, что больше всего пострадают виртуальные машины и провайдеры облачных услуг. У облака Microsoft Azure намечены технические работы на следующей неделе. В Amazon AWS предупредили, что в пятницу планируется серьезное обновление безопасности.

Несмотря на весь масштаб, имена исследователей, обнаруживших проблему, пока неизвестны. Равно как точные методы и официальное подтверждение возможности самой атаки. Хотя специалисту по информационной безопасности из Амстердамского свободного университета Эрику Босману, как он утверждает, удалось реализовать атаку по вероятному вектору.

... Как оказалось, команда Google Project Zero сообщила о проблеме производителям еще в прошлом 2017 году. Компании начали проводить обновления своих систем, но рассказывать о проблеме публично никто не стал. По предварительным данным, большой анонс должен был пройти 9 января, но СМИ узнали о проблеме раньше, что и послужило причиной большого скандала: акции компании Intel обвалились на несколько пунктов, все мировые СМИ написали об одной из самых массовых проблем в истории производства чипов.

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

...In short: It is possible to exploit the speculative execution of x86 processors in order to read arbitrary kernel-memory...

In a nutshell: Meltdown effectively overcomes the kernel space/user space memory isolation barrier of x86 architecture. The access happens indirectly by exploiting side-channel information that is inadvertently made available by the cache after speculative execution of a prepared instruction stream that is executed out-of-order.

The root cause of the problem is the combination of the following subsystems of a processor’s microarchitecture. Note that none of the individual components is to be blamed for the vulnerability - it is how they work together:


This wasn't foreseeable.
A common cliche is that such bugs happen because people don't take security seriously, or that they are taking "shortcuts". That's not the case here. Speculative execution and timing issues with caches are inherent issues with CPU hardware. "Fixing" this would make CPUs run ten times slower. Thus, while we can tweek hardware going forward, the larger change will be in software.

There's no good way to disclose this. The cybersecurity industry has a process for coordinating the release of such bugs, which appears to have broken down. In truth, it didn't. Once Linus announced a security patch that would degrade performance of the Linux kernel, we knew the coming bug was going to be Big. Looking at the Linux patch, tracking backwards to the bug was only a matter of time. Hence, the release of this information was a bit sooner than some wanted. This is to be expected, and is nothing to be upset about.


https://www.opennet.ru/opennews/art.shtml?num=47856
https://ain.ua/2018/01/04/intel-razdelyai
https://ain.ua/2018/01/04/meltdown-i-spectre
http://blog.cyberus-technology.de/posts/2018-01-03-meltdown.html
http://blog.erratasec.com/2018/01/some-notes-on-meltdownspectre.html
https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html
https://meltdownattack.com/meltdown.pdf PDF
https://spectreattack.com/spectre.pdf PDF

No comments:

Post a Comment