на главнуюВсе эхи RU.SAN_IZONE
войти ?

Раскрыты подробности двух атак на процессоры Intel, AMD и ARM64

От Anton Gorlov (2:5059/37) к All

В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)


Привет All!


04.01.2018 02:19 Раскрыты подробности двух атак на процессоры Intel, AMD и ARM64


Разработчики из Google Project Zero опубликовали [https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html] детали двух уязвимостей, которые получили кодовые имена Meltdown [https://meltdownattack.com/] и Spectre [https://spectreattack.com/]. Процессоры Intel и ARM64 подвержены обеим проблемам, AMD затрагивает [https://www.amd.com/en/corporate/speculative-execution] только вторая уязвимость. Производители процессоров были уведомлены о проблемах 1 июня 2017 года. Для демонстрации атак подготовлены работающие прототипы эксплоитов, в том числе реализация на JavaScript, работающая в браузере.

Уязвимость Meltdown [https://spectreattack.com/meltdown.pdf] (CVE-2017-5754 [https://security-tracker.debian.org/tracker/CVE-2017-5754]) позволяет приложению прочитать содержимое любой области памяти компьютера, включая память ядра и других пользователей. Проблема также позволяет получить доступ к чужой памяти в системах паравиртуализации (режим полной виртуализации (HVM ) проблеме не подвержен) [http://seclists.org/oss-sec/2018/q1/3] и контейнерной изоляции (в том числе Docker, LXC, OpenVZ), например, пользователь одной виртуальной машины может получить содержимое памяти хост-системы и других виртуальных машин. Уязвимости подвержены процессоры Intel (фактически все процессоры, выпускаемые с 1995 года, за исключением Intel Itanium и Intel Atom, выпущенных до 2013 года) и ARM64 [https://developer.arm.com/support/security-update] (Cortex-A15/A57/A72/A75). Подготовленный прототип эксплоита [https://www.youtube.com/watch?v=bReA1dvGJ6Y] позволяет читать память ядра со скоростью 2000 байт в секунду на процессоре Intel Xeon архитектуры Haswell.

Уязвимость Spectre [https://spectreattack.com/spectre.pdf](CVE-2017-5753 [https://security-tracker.debian.org/tracker/CVE-2017-5753], CVE-2017-5715 [https://security-tracker.debian.org/tracker/CVE-2017-5715]) создаёт брешь в механизме изоляции памяти приложений и позволяет атакующему обманным способом получить данные чужого приложения (только приложения, но не памяти ядра). Этой атаке подвержены процессоры Intel, AMD (только при включенном eBPF в ядре) и ARM64 [https://developer.arm.com/support/security-update] (Cortex-R7/R8, Cortex-A8/A9/A15/A17/A57/A72/A73/A75). По сравнению с Meltdown уязвимость существенно труднее в эксплуатации, но её и значительно труднее исправить. Прототип эксплоита Spectre уже можно найти в открытом доступе.

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

Суть уязвимостей в том, что при определённых обстоятельствах отмотанное назад упреждающее выполнение не всегда протекает бесследно и не все изменения откатываются, например, могут оставаться в кэше процессора. Для проведения атаки Meltdown осуществляется [http://blog.cyberus-technology.de/posts/2018-01-03-meltdown.html] обращение к произвольным областям памяти ядра. Данные области запрашиваются в результате упреждающей операции, но далее процессор определяет, что приложение не имеет прав на доступ к этой памяти, операция откатывается назад и генерируется исключение, но так как фактически обращение к памяти состоялось, данные оседают в кэше процессора и затем могут быть определены через проведение атаки по сторонним каналам (определение содержимого кэша через анализ задержки при обращении к изначально известным непрокэшированным данным).

Пользователям рекомендуется установить обновление ядра сразу после его публикации для дистрибутивов. Исправление проблемы Meltdown для ядра Linux выпущено в виде набора патчей KPTI [https://lwn.net/Articles/738975/]. Исправление уязвимости Spectre в общем виде пока не выработано, частично предложено обновление микрокода [https://lists.opensuse.org/opensuse-security-announce/2018-01/msg00005.html] и усиление безопасности отдельных приложений. Обновление для блокирования Meltdown уже выпущено для RHEL [https://access.redhat.com/errata/RHSA-2018:0009], CentOS [https://www.mail-archive.com/centos-announce@centos.org/msg10687.html] и Fedora [https://bodhi.fedoraproject.org/updates/?releases=F27&type=security]. Проследить за появлением обновлений в других дистрибутивах можно на следующих страницах: Debian [https://security-tracker.debian.org/tracker/CVE-2017-5754], Ubuntu [https://people.canonical.com/~ubuntu-security/cve/2017/CVE-2017-5754.html], SUSE [https://bugzilla.novell.com/show_bug.cgi?id=CVE-2017-5754] (частично [https://lists.opensuse.org/opensuse-security-announce/2018-01/msg00004.html] исправлена [https://lists.opensuse.org/opensuse-security-announce/2018-01/msg00005.html]), openSUSE [https://lists.opensuse.org/opensuse-security-announce/2018-01/], FreeBSD [https://www.freebsd.org/security/advisories.html], OpenBSD [http://www.openbsd.org/errata62.html], NetBSD [http://www.netbsd.org/support/security/]. Исправления для Windows [https://portal.msrc.microsoft.com/en-us/security-guidance] и macOS [https://support.apple.com/en-us/HT201222] ожидаются в ближайшее время. Для платформы Android исправления были доставлены [https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html] в последнем обновлении [https://source.android.com/security/bulletin/2018-01-01]. Проблема также устранена [https://support.google.com/faqs/answer/7622138#chromeos] в Chrome OS 63.0.3239.116. [https://chromereleases.googleblog.com/2018/01/stable-channel-update-for-chrome-os.html]

Применение патча обязательно так как пользователи ежедневно запускают чужой код на своих компьютерах, посещая веб сайты с JavaScript (>99%) и одним из инструментов совершения атаки может стать web-браузер. Разработчики Google Chrome работают над интеграцией защиты от совершения атаки через JavaScript прямо в браузер [https://sites.google.com/a/chromium.org/dev/Home/chromium-security/ssca]. Исправление будет доступно в релизе Chrome, назначенном на 23 января. Компания Mozilla внесла в Firеfox 57 временные исправления, затрудняющие атаку, ограничив точность работы таймера (performance.now) до 20╣s и отключив SharedArrayBuffer.

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

Дополнение 1: Компанией Google для ядра Linux предложен [https://lkml.org/lkml/2018/1/4/174] вариант патчей c реализацией метода "retpoline" [https://support.google.com/faqs/answer/7625886] для блокирования атаки Spectre. Накладные расходы от данных патчей не превышают 1.5%. Для применения данного метода требуется сборка специально модифицированным компилятором. Поддержка retpoline уже предложена для GCC [https://lkml.org/lkml/2018/1/3/871] и Clang. [https://reviews.llvm.org/D41723]

Дополнение 2: Демонстрация использования атаки Meltdown для кражи пароля:



http://www.opennet.ru/opennews/art.shtml?num=47856


С уважением. Anton aka Stalker

Linux Registered User #386476
[#*TEAM:*#] [#_Злой СисОп_#] [*Heavy Metal!*] [*_Усачи_*]
--- GoldED+/LNX 1.1.5-b20160322
* Origin: Insufficient Disk Space, please delete Windows...Please! (2:5059/37)

Ответы на это письмо:

From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку

From: Username
Или коротким

FGHI-url этого письма: area://RU.SAN_IZONE?msgid=2:5059/37@FidoNet+5a4e6522