Чи є Raspberry Pi вразливим до експлуатації Spectre або Meltdown?


58

Виявлено два нові серйозні недоліки безпеки - « Спектр» та «Зрив» .

Чи є Raspberry Pi вразливим для привидів та / або танення?


1
На думку дослідників: На даний момент не ясно, чи впливають на Meltdown процесори ARM та AMD.
Janghou

1
Є приклад того, що ви можете вкрасти пароль із Javascript у браузері (Chrome / Firefox).
Janghou

4
@ alex2003super: Не вигадай. Незважаючи на те, що масштаб уражених пристроїв приголомшує, шанси на те, що насправді реально впливає на це питання, досить низькі. І навіть якби їх не було, відлякування не допомогло б. :)
Гонки легкості з Монікою

1
Здається , що вони не є уразливими, ось недавня стаття на тему raspberrypi.org/blog / ...
Омар Elabd

5
Ви можете вважати цю публікацію цікавою: raspberrypi.org/blog/…
pfm

Відповіді:


61

За словами самих ARM , ядра процесора, які використовувались у всіх моделях до Pi 4, не є вразливими .

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

Ядра процесора, якими користується старший Pis, є:

Жодне з перерахованих вище ядер не вказане як вразливе до будь-якої версії нападу (вони взагалі не перераховані, адже не існує відомої вразливості до цих атак).

Raspberry Pi 4 використовують Cortex-A72 , який числиться як вразливі до варіантів 1, 2, 3 і 4. Як вказано в Є Raspberry Pi 4 вразливий для подвигів Specter? , Raspbian містить програмне забезпечення для зменшення цих вразливих ситуацій, тому ризик експлуатації повинен бути низьким. Інші операційні системи можуть не містити відповідних пом'якшень, і хоча ARM кажуть, що для Cortex-A72 було випущено апаратне пом'якшення, незрозуміло, чи застосовувалось це до Pi 4.

Зауважимо, що варіанти 1 та 2 (CVE-2017-5753 та CVE-2017-5715) відомі як "Привид" , а варіанти 3 (CVE-2017-5754) та 3a (пов'язана атака, досліджена ARM) називаються " Meltdown" . Тому жоден із пристроїв Raspberry Pi перед Pi 4 не вважається вразливим ні до Spectre, ні до розплаву.


Цікаво, чи не будуть змінені ядра Linux, необхідні для інших архітектур, до версій Linux, які працюють на Raspberry Pi? Нібито ці зміни сповільнюватимуть систему, тому, можливо, буде вплинути РП, навіть якщо патчі не потрібні.
Боббі Даретт

4
Патч ядра виявляє, на якому процесорі працює, і автоматично відключає себе, якщо це не стосується моделі. Крім того, ядра для Raspberry Pi (і більшості інших одноплатних комп'ютерів) побудовані спеціально для наявного обладнання, і немає ніякої причини для технічного обслуговування включати або вмикати відповідний патч.
Перкінс

1
@BobbyDurrett зміни Meltdown в ядрі знаходяться в специфічному для x86 розділу кодовій базі. Зміни, пов'язані з Spectre, є повсюдно, але більшість з них перебувають у специфічних для процесора розділах коду або обробляються компілятором. Деякі біти, такі як структурні зміни мережевого коду, можуть просочитися в Pi, але більшість з них не буде.
Марк

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

22

Pi (всі версії) не є вразливим.

Spectre та Meltdown вимагають виконання поза замовленнями. Cortex-A7 використовується на початку Pi 2 і Cortex A53 , які використовуються в подальшому Pi 2 і Pi 3 являє собою архітектуру строго в замовленні. ARM11 , що використовується в Pi 1 частково поза порядком, але не таким способом , який дозволяє Спектра або Розплавлювання працювати.

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


10

Я хотів би запропонувати моєму різному взятись до цього.

Щодо Meltdown, то це дуже специфічна вразливість у деяких процесорах, тому якщо ARM каже, що процесор у Raspberry Pi не є вразливим, то йому, ймовірно, можна довіряти.

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

Я дуже впевнений, що процесор у всіх моделях Raspberry Pi схожий практично на всі інші процесори там, оскільки передбачувач гілки - це лише великий масив 2-бітових насичуючих лічильників (сильно взяті, слабо взяті, слабо не взяті, сильно не береться). Індекс цього масиву - це біти низького порядку адреси інструкції гілки, і немає тегу, і цей стан прогноктора ніколи не розмивається.

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

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

Дивіться це запитання: https://security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fix та зрозумійте наслідки його відповіді. Шахрайський JavaScript-код, який працює у вашому браузері, може пояснювати, що Specter вимірює, якими шляхами пішли інші гілки в процесі. Навіть інструкція змивання передбачувача гілки не виправить цю шахрайську проблему JavaScript, якщо браузер активно не промиває передбачувача гілки перед запуском ненадійного коду.

Spectre буде з нами дуже-дуже довго, оскільки передбачувач гілок, що використовує 14 біт як індекс, не позначений рештою 18 бітів 32-бітного адресного простору, тому що тоді буде потрібно 20 біт (2 біта насичувального лічильника , Тег 18 біт) замість всього 2 біт. Це б помножило розмір прогнозованого гілки на десять! Я очікую, що виробники процесорів додадуть інструкцію змивання передбачуваної гілки, яка працює навіть у просторі користувача без спеціальних привілеїв, а ядро ​​використовуватиме її під час переключення в контексті, а користувацький простір використовуватиме її під час запуску ненадійного коду JITed. Це дозволило б виправити більшість проблем Spectre на практиці, але теоретично не всі з них.


" Тепер, якщо дві гілки поділяють один і той же стан прогнозувача, ви можете виміряти, який шлях конкретної гілки взяв у недавньому минулому ". Як це зробити без спекулятивного виконання?
Пітер Тейлор

@PeterTaylor ці процесори ARM мають передбачувану гілку, і тому вони мають спекулятивне виконання. Те, чого їм не вистачає, - це виконання поза замовленням.
juhist

Задокументовано, що вони мають спекулятивне отримання інструкцій, але це не спекулятивне виконання. Справедливим моментом є те, що можливо все-таки використовувати його як оракул.
Пітер Тейлор

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

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