Как смягчить уязвимости Spectre и Meltdown в системах Linux?

34

Исследователи безопасности опубликовали в Project Zero новую уязвимость под названием Spectre и Meltdown, позволяющую программе красть информацию из памяти других программ. Это влияет на архитектуры Intel, AMD и ARM.

Этот недостаток можно использовать удаленно, посетив веб-сайт JavaScript. Технические подробности можно найти на сайте Redhat , в команде безопасности Ubuntu .

Утечка информации из-за спекулятивных атак по побочным каналам (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754 aka Spectre и Meltdown)

Было обнаружено, что новый класс атак на побочные каналы воздействует на большинство процессоров, включая процессоры Intel, AMD и ARM. Атака позволяет злонамеренным процессам пространства пользователя читать память ядра и вредоносный код в гостях, чтобы читать память гипервизора. Для решения этой проблемы потребуются обновления ядра Ubuntu и микрокода процессора. Эти обновления будут объявлены в будущих уведомлениях о безопасности Ubuntu, как только они станут доступны.

Пример реализации в JavaScript

В качестве подтверждения концепции был написан код JavaScript, который при запуске в браузере Google Chrome позволяет JavaScript считывать личную память из процесса, в котором он выполняется.

Похоже, моя система подвержена уязвимости. Я скомпилировал и выполнил это доказательство концепции ( spectre.c).

Системная информация:

$ uname -a
4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux

$ cat /proc/cpuinfo
model name  : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz

$gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516

Как смягчить уязвимости Spectre и Meldown в системах Linux?

Дополнительная информация: Использование Meltdown для кражи паролей в режиме реального времени .

Обновить

Используя ответ Spectre & Meltdown Checkerпосле переключения на 4.9.0-5версию ядра, следующий за ответом @Carlos Pasqualini, потому что доступно обновление для системы безопасности для смягчения cve-2017-5754 в Debian Stretch:

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO  (only 31 opcodes found, should be >= 70)
> STATUS:  VULNERABLE  (heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation:  NO 
*   Kernel support for IBRS:  NO 
*   IBRS enabled for Kernel space:  NO 
*   IBRS enabled for User space:  NO 
* Mitigation 2
*   Kernel compiled with retpoline option:  NO 
*   Kernel compiled with a retpoline-aware compiler:  NO 
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES 
* PTI enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

Обновление 25 января 2018 г.

spectre-meltdown-checkerСценарий официально упаковывают Debian, он доступен для Debian Stretch через Backports хранилище, Бастера и Sid.

Обновление 22.05.2008

Спекулятивный обход магазина (SSB) - также известный как вариант 4

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

Rogue System Register Read (RSRE) - также известен как вариант 3a

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

Изменить 27 июля 2018

NetSpectre: чтение произвольной памяти по сети

В этой статье мы представляем NetSpectre, новую атаку, основанную на варианте 1 Spectre, не требующую кода, управляемого злоумышленником, на целевом устройстве, что затрагивает миллиарды устройств. Подобно локальной атаке Spectre, наша удаленная атака требует наличия гаджета Spectre в коде цели. Мы показываем, что системы, содержащие требуемые гаджеты Spectre в открытом сетевом интерфейсе или API, могут быть атакованы нашей общей удаленной атакой Spectre, позволяющей считывать произвольную память по сети. Злоумышленник отправляет жертве только серию специально созданных запросов и измеряет время отклика для утечки секретного значения из памяти жертвы.

GAD3R
источник
1
Я удалил тег Debian, чтобы этот Q мог применяться ко всем Linux (согласно заголовку); вернитесь, если вы хотите сосредоточиться только на Debian.
Джефф Шаллер

Ответы:

12

Алан Кокс поделился ссылкой из блога AMD: https://www.amd.com/en/corporate/speculative-execution

Вариант первый: обход ограничений

Решено обновлениями программного обеспечения / ОС, доступными для поставщиков и производителей систем. Ожидаемое незначительное влияние на производительность.

Вариант второй: инъекция целевой ветви

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

Вариант третий: мошенническая загрузка кэша данных

Нулевая уязвимость AMD из-за различий в архитектуре AMD.

Было бы хорошо получить подтверждение этих заявлений AMD третьей стороной.

Для «смягчения» в уязвимых системах потребуется новое ядро ​​и перезагрузка, но во многих дистрибутивах еще не выпущены пакеты с исправлениями:

Debian:

Другие источники информации, которые я нашел:

Карлос Паскуалини
источник
12
Целая куча информации AMD не поможет тем, кто использует Intel Core.
JdeBP
4
Для ядра Linux, см. Сообщение Грега Кроа-Хартмана: kroah.com/log/blog/2018/01/06/meltdown-status
alanc
Согласно ссылкам выше на страницах Debian (и ссылкам на них) кажется, что исправления ядра будут распространяться, когда ответственные поставщики публикуют свой микрокод. Однако из security-tracker.debian.org/tracker/CVE-2017-5754 (пока единственного исправленного) кажется, что исправления были доступны только для стабильных и нестабильных выпусков. Кто-нибудь знает, можем ли мы ожидать исправления для oldstable ("jessie")? Я не смог найти ни одного заявления Debian или команды безопасности Debian по этому вопросу ...
Шевек
11

27 января 2018 года Intel Microcode ломает некоторые системы

Intel микрокод Обновление 2018-01-08 для решения спекулятивного исполнения ветвления дыр в безопасности сломала несколько систем. Это повлияло на многие системы Ubuntu с 8 по 21 января. 22 января 2018 года Ubuntu выпустила обновление, которое возвращает старый микрокод 2017-07-07.

Если у вас возникли проблемы с обновлениями, переустановили Ubuntu и отключили обновления между 2018-01-08 и 2018-01-22, вы можете попробовать автоматические обновления Ubuntu снова.

16 января 2018 года Обновление Spectre в 4.14.14 и 4.9.77

Если вы уже работаете с версиями ядра 4.14.13 или 4.9.76, как я, установка не составит труда 4.14.14и 4.9.77когда они появятся через пару дней, чтобы уменьшить дыру в безопасности Spectre. Название этого исправления - Retpoline и не имеет серьезного снижения производительности, которое ранее предполагалось:

Грег Кроа-Хартман разослал последние исправления для Linux 4.9 и 4.14, которые теперь включают поддержку Retpoline.

Этот X86_FEATURE_RETPOLINE включен для всех процессоров AMD / Intel. Для полной поддержки вам также необходимо собрать ядро ​​с новым компилятором GCC, содержащим поддержку -mindirect-branch = thunk-extern. Изменения GCC были внесены вчера в GCC 8.0 и в настоящее время потенциально могут быть перенесены в GCC 7.3.

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

Не вдаваясь в детали JavaScript, вот как можно сразу же избежать дыры Meltdown (и по состоянию на 10 января 2018 года защита призраков)

12 января 2018 г. обновление

Начальная защита от Призрака здесь и будет улучшена в ближайшие недели и месяцы.

Ядра Linux 4.14.13, 4.9.76 LTS и 4.4.111 LTS

Из этой статьи Softpedia :

Ядра Linux 4.14.13, 4.9.76 LTS и 4.4.111 LTS теперь доступны для загрузки с kernel.org и включают в себя больше исправлений, касающихся уязвимости безопасности Spectre, а также некоторые регрессии из Linux 4.14.12, 4.9 На прошлой неделе были выпущены ядра .75 LTS и 4.4.110 LTS, так как некоторые сообщали о небольших проблемах.

Похоже, что эти проблемы теперь исправлены, поэтому безопасно обновить ваши операционные системы на основе Linux до новых версий ядра, выпущенных сегодня, которые включают в себя больше обновлений для x86, некоторые исправления PA-RISC, s390 и PowerPC (PPC), различные улучшения для драйверы (Intel i915, crypto, IOMMU, MTD) и обычные изменения ядра MM и ядра.

У многих пользователей были проблемы с обновлениями Ubuntu LTS 4 января 2018 года и 10 января 2018 года. Я пользуюсь 4.14.13пару дней без проблем, однако YMMV .


7 января 2018 г. обновление

Вчера Грег Кроа-Хартман написал обновление состояния дыр в безопасности ядра Meltdown и Spectre Linux. Некоторые могут назвать его вторым самым влиятельным человеком в мире Linux прямо рядом с Линусом. В статье рассматриваются стабильные ядра (обсуждаемые ниже) и ядра LTS, которые есть у большинства пользователей Ubuntu.


Ядра Linux 4.14.11, 4.9.74, 4.4.109, 3.16.52 и 3.2.97 Ошибка исправления исправления

Из этой статьи :

Пользователям настоятельно рекомендуется обновить свои системы немедленно

4 января 2018 01:42 GMT · Мариус Нестор

Сопровождающие ядра Linux Грег Кроа-Хартман и Бен Хатчингс выпустили новые версии серий ядра Linux 4.14, 4.9, 4.4, 3.16, 3.18 и 3.12 LTS (Long Term Support), которые, по-видимому, исправляют один из двух критических недостатков безопасности, затрагивающих большинство современных процессоры.

Ядра Linux 4.14.11, 4.9.74, 4.4.109, 3.16.52, 3.18.91 и 3.2.97 теперь доступны для загрузки с веб-сайта kernel.org, и пользователям настоятельно рекомендуется обновить свои дистрибутивы GNU / Linux к этим новым версиям, если они запускают любую из этих серий ядра немедленно. Зачем обновлять? Потому что они, по-видимому, исправляют критическую уязвимость под названием Meltdown.

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

Уязвимость в патче для Spectre все еще в разработке

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

До тех пор, пока ошибка Spectre также не будет исправлена, настоятельно рекомендуется по крайней мере обновить дистрибутивы GNU / Linux до любой из недавно выпущенных версий ядра Linux. Так что поищите новое обновление ядра в репозиториях программного обеспечения вашего любимого дистрибутива и установите его как можно скорее. Не ждите, пока не станет слишком поздно, сделайте это сейчас!


Я использовал Kernel 4.14.10 в течение недели, поэтому загрузка и загрузка Ubuntu Mainline Kernel версии 4.14.11 не слишком беспокоили меня.

Пользователи Ubuntu 16.04 могут быть более довольны версиями ядра 4.4.109 или 4.9.74, выпущенными одновременно с 4.14.11.

Если ваши регулярные обновления не устанавливают версию ядра, которую вы хотите, вы можете сделать это вручную, следуя этому запросу Ask Ubuntu: https://askubuntu.com/questions/879888/how-do-i-update-kernel-to-the-latest -mainline-версия / 879920 # 879920


4.14.12 - Какая разница в день

Менее чем через 24 часа после моего первоначального ответа был выпущен патч для исправления версии ядра 4.14.11, которую они могли выпустить. Обновление до 4.14.12 рекомендуется для всех пользователей 4.14.11. Грег-КХ говорит :

Я объявляю о выпуске ядра 4.14.12.

Все пользователи серии ядра 4.14 должны выполнить обновление.

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

На данный момент, как всегда, пожалуйста, проверьте себя в среде.

Глядя на это обновление, не очень много строк исходного кода были изменены.

WinEunuuchs2Unix
источник
1
Для Meltdown существует решение, доступное через apt-get dist-upgrade.
Лучоначо
1
На моем телефоне сейчас, но обновление на LTS вызывает панику ядра 10/01/2018. Смотрите Спросите Ubuntu.
WinEunuuchs2Unix
1
К счастью, я обновил его с 109 (108 дает панику ядра). Так что не было этой проблемы. Работает нормально.
Лучоначо
1
@ WinEunuuchs2Unix здесь есть обновление USN-3531-2: регрессия микрокода Intel
GAD3R
1
@ GAD3R Большое спасибо за ссылку. Это поможет мне опубликовать ответ в Ask Ubuntu, который может помочь многим людям: askubuntu.com/questions/998471/…
WinEunuuchs2Unix
6

Этот недостаток можно использовать удаленно, посетив веб-сайт JavaScript.

Верно. Итак, одно разумное решение - отключить JavaScript в ваших веб-браузерах или использовать веб-браузеры, которые не поддерживают JavaScript.

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

NB. Само собой разумеется, что отключение / ограничение JavaScript не должно быть вашим единственным смягчением. Вам следует дополнительно просмотреть (и, вероятно, применить) любые соответствующие исправления ядра и другие обновления безопасности после их написания, тестирования и публикации. В Debian-производных распределения, использование команд , такие как sudo apt update , sudo apt list-upgradableи sudo apt upgrade.

Обновление: не верьте мне на слово. Алан Кокс говорит то же самое:

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

sampablokuper
источник
5
Извините, хотя это помогает против аттака, без JS вы бы не смогли оставить здесь ответ. Этот совет похож на «прекратить использование Интернета» (в 2018 году).
Мориц Оба
4
@MoritzBoth, к счастью, многие сайты работают без JS. К сожалению, StackExchange требует JS для публикации, как вы указали. Это (серьезный!) Недостаток в SE :(
Сампаблокупер
3
Для FireFox аддон, подобный noScript, может помочь уменьшить использование JavaScript на сомнительных сайтах - хотя недавние изменения, внесенные FF Quantum (V57), бросили очень большой камень во весь пул
аддонов
2
С момента выхода Quantum я перешел на Pale Moon именно по этой причине. Очень хорошо работает для меня, включая NoScript и Cookie Masters (когда-то Cookie Monster).
Мерфи
2
@MoritzBoth Я действительно не думаю, что отключение JS означает «прекратить использование Интернета», а тем более «прекратить использование Интернета». Тем не менее, это прекрасное время для повышения осведомленности о проблемах, связанных с универсальным использованием JS со стороны некоторых поставщиков веб-контента.
Тобия Тесан
5

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

Ваше внимание не должно лежать на Javascript и / или вашем браузере. В идеале ваш процессор должен быть исправлен. К сожалению, для большинства текущей волны ошибок это не представляется возможным. Вместе с Debian все другие стороны, предоставляющие ОС, пойдут другим путем, если не порекомендуют ЦП, который не имеет недостатков: они вынуждают систему обойти ошибку в ЦП. Эти патчи не решают проблемы. Вместо этого ОС прячет их как можно лучше от любой программы, которую пользователь запускает на компьютере (и, следовательно, также от вашего браузера).

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

Имея это в виду, вернемся к вашему вопросу: что вы можете сделать, чтобы защитить свою систему Debian, это установить обновления безопасности. Я верю, что Debian сделает все возможное в свете этих ошибок, чтобы запустить Debian максимально безопасно, несмотря на недостатки процессора.

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

user68856
источник