Як зменшити вразливості Spectre та Meltdown в системах Linux?


34

Дослідники з питань безпеки опублікували в Project Zero нову вразливість під назвою Spectre and Meltdown, що дозволяє програмі красти інформацію з пам'яті інших програм. Це впливає на архітектури Intel, AMD та ARM.

Цей недолік можна використовувати віддалено, відвідавши веб-сайт JavaScript. Технічні деталі можна знайти на веб-сайті redhat , команді безпеки Ubuntu .

Витік інформації через напади бокових каналів спекулятивного виконання (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754 aka Spectre and 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.2018

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

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

Прочитання реєстру негідних систем (RSRE) - також відомий як Варіант 3a

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

Редагувати 27 липня 2018 року

NetSpectre: зчитування довільної пам'яті по мережі

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



1
Я видалив тег Debian, щоб дозволити цьому Q застосовуватися до всіх Linux (відповідно до назви); повернути, якщо ви маєте намір зосередити це лише на Debian.
Джефф Шаллер

Відповіді:


12

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

Варіант перший: Межі перевірки обходу

Вирішені оновленнями програмного забезпечення / ОС, які мають бути доступні постачальникам системи та виробникам. Очікується незначний вплив на продуктивність.

Варіант другий: Введення цільової гілки

Відмінність в архітектурі AMD означає, що існує майже нульовий ризик експлуатації цього варіанту. На сьогоднішній день процесори AMD не виявляли вразливість до варіанту 2.

Варіант третій: Rogue Cache Data Load

Нульова вразливість AMD через відмінності в архітектурі AMD.

Було б добре мати підтвердження цих заяв AMD третьою стороною.

"Пом'якшення" для постраждалих систем вимагало б нового ядра та перезавантаження, але для багатьох дистрибутивів ще не випущені пакети з виправленнями:

Debian:

Інші джерела інформації, які я знайшов:


12
Ціла купа інформації про AMD не допоможе запитувачу, процесором якого є Intel Core.
JdeBP

4
Щодо ядра Linux, дивіться публікацію Грега Круа-Хартмана: kroah.com/log/blog/2018/01/06/meltdown-status
alanc

Відповідно до сторінок debian, пов'язаних вище (та сторінок, пов’язаних на них), схоже, що патчі ядра будуть розподілятися, коли відповідальні постачальники публікують свій мікрокод. Однак, з безпеки- tracker.debian.org/tracker/CVE-2017-5754 (єдиний зафіксований поки що), схоже, що виправлення були доступні лише для стабільних і нестабільних версій. Хтось знає, чи можна очікувати виправлень для oldstable ("jessie")? Мені не вдалося знайти жодної заяви
Дебіана

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 8.0 вчора і зараз потенційно може бути перенесена на GCC 7.3.

Ті, хто хоче відключити підтримку Retpoline, можуть завантажувати виправлені ядра норетполінією .

Не вникаючи в подробиці JavaScript, ось як негайно уникнути затоплення (і станом на 10 січня 2018 року захист від привидів)

12 січня 2018 року оновлення

Початковий захист від Spectre є тут і буде покращений у найближчі тижні та місяці.

Ядра 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 Linux 4.14.12, 4.9 .75 LTS та 4.4.110 LTS ядра випущені минулого тижня, оскільки деякі повідомили про незначні проблеми.

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

У багатьох користувачів виникли проблеми з оновленнями 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 Fatch Meltdown Flaw

З цієї статті :

Користувачів рекомендують негайно оновити свої системи

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 теж не буде виправлена, настійно рекомендується оновити щонайменше свої дистрибутиви 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.

Якщо ваші регулярні оновлення не встановлюють бажану версію Kernel, ви можете це зробити вручну, відповівши на це запитання відповіді Ubuntu: https://askubuntu.com/questions/879888/how-do-i-update-kernel-to-the-latest -лайн-версія / 879920 # 879920


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

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

Я оголошую про випуск ядра 4.14.12.

Усі користувачі серії 4.14 ядра повинні оновити.

З цим випуском досі відомо кілька незначних проблем, з якими стикалися люди. Сподіваємось, вони вирішаться в ці вихідні, оскільки латки не приземлилися на дереві Лінуса.

Зараз, як завжди, будь ласка, протестуйте своє оточення.

Переглядаючи це оновлення, не дуже багато рядків вихідного коду було змінено.


1
Зараз для Meltdown існує рішення, доступне через apt-get dist-upgrade.
luchonacho

1
На моєму телефоні зараз, але оновлення на LTS викликає паніку ядра 1.10.2018. Див. Спросити Ubuntu.
WinEunuuchs2Unix

1
На щастя, я оновив його на 109 (108 викликає паніку ядра). Тож не було такої проблеми. Це чудово працює.
luchonacho

1
@ WinEunuuchs2Unix є оновлення тут USN-3531-2: регресія мікрокодування Intel
GAD3R

1
@ GAD3R Дякую за посилання. Це допоможе мені опублікувати відповідь на запитання Ubuntu, яка може допомогти багатьом людям: askubuntu.com/questions/998471/…
WinEunuuchs2Unix

6

Цей недолік можна використовувати віддалено, відвідавши веб-сайт JavaScript.

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

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

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

Оновлення: не сприймайте мого слова за це. Алан Кокс говорить майже те саме:

Те, що вам потрібно дбати про великий час, - це JavaScript, тому що експлуатація може віддалено використовуватися javascript на веб-сторінках для крадіжки речей із вашої системної пам'яті. ... розгляньте такі речі, як Adblockers і розширення, як noscript, який може зупинити в першу чергу багато непотрібних. Зробіть це якомога швидше. Коли з'являються оновлення ОС, застосуйте їх. ( Джерело )


5
Вибачте, хоча це допомагає проти атака, без JS ви б не змогли залишити відповідь тут. Ця порада схожа на "припиніть користуватися Інтернетом" (у 2018 році).
Моріц обидва

4
@MoritzBoth, на щастя, багато сайтів добре працюють без JS. На жаль, StackExchange вимагає JS для публікації, як ви вказуєте. Це (серйозний!)
Недолік

3
Для FireFox додаток, подібний noScript, може допомогти зменшити використання JavaScript на сумнівних сайтах - хоча останні зміни, внесені FF Quantum (V57), занесли дуже великий камінь у весь пул
додатків

2
З моменту виходу Quantum я перейшов на Pale Moon, саме з цієї причини. Мені дуже добре працює, включаючи NoScript і Cookie Masters (колись монстр cookie).
Мерфі

2
@MoritzBoth Я дійсно не думаю, що відключення JS означає "припинити використання Інтернету", а тим більше "припинити користуватися Інтернетом". Однак, це чудовий час для поінформованості з питань, які повсюдно покладаються на JS від деяких постачальників веб-контенту.
Тобія Тесан

5

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

Ваш фокус не повинен лежати на Javascript та / або вашому браузері. В ідеалі ваш процесор повинен бути виправлений. На жаль, для більшості поточних хвиль помилок це здається неможливим. Debian, разом з цим, всі інші сторони, що надають ОС, таким чином відмовляться від єдиного іншого можливого способу, ніж рекомендувати процесор, який не є недоліком: вони змушують систему подолати помилку в процесорі. Ці патчі не усувають проблем. Натомість ОС ховає їх якнайкраще від будь-якої програми, яку користувач працює на машині (а отже, і у вашому браузері).

Це приховування є додатковою обчислювальною роботою, і, отже, ваша загальна продуктивність системи буде нижчою, ніж без. Наскільки нижче, ймовірно, дуже сильно залежить від того, що саме роблять ці програми.

Маючи це на увазі до вашого питання: що ви можете зробити для захисту своєї системи Debian, це встановити оновлення безпеки. Я вірю, що Debian зробить усе можливе у світлі цих помилок, щоб запустити Debian максимально безпечно, незважаючи на властиві вади процесора.

Над цим питанням вже працюють усілякі великі компанії, а також численні гуру апаратних засобів та Linux. Я не хочу абсолютно стримувати те, щоб спробувати щось або намагатися допомогти загальним зусиллям. Однак якщо ваша власна безпека та своєчасне виправлення - це все, що вас цікавить, то, швидше за все, вони знайдуть краще рішення за коротший час, ніж ви б, почавши зараз розбиратися в цьому самостійно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.