LINUX.ORG.RU

Meltdown и Spectre — названия двух атак на процессоры Intel/AMD/ARM64/Power

 , , , ,


10

9

Разработчики из Google Project Zero опубликовали детали уязвимостей, которые затрагивают не только процессоры Intel и ARM64, но и AMD тоже (есть сообщения, что только при включении BPF JIT в ядре, что по умолчанию выключено). Названия им дали: Meltdown и Spectre (расплавление ядерного реактора и призрак).

Meltdown позволяет приложению читать любую память компьютера, включая память ядра и других пользователей. Этой атаке подвержены процессоры Intel. Точных сведений об уязвимых процессорах нет, но скорее всего минимум начиная с Core Duo.

Spectre создаёт брешь в изоляции различных приложений и позволяет атакующему обманным способом получить данные чужого приложения. Этой атаке подвержены процессоры Intel, AMD, ARM64, Power8 и 9. По неподтвержденным данным узявимы практически все процессоры, умеющие спекулятивное исполнение кода. Для Intel это процессоры, начиная с Pentium Pro (1995 год), кроме Itanium и Atom. Есть сообщения о том, что уязвимость проверена на Pentium-M 1.5 ГГц (2004 год).

Эксплоит, эксплуатирующий Meltdown позволяет читать память ядра со скоростью 2000 байт в секунду на процессоре Intel Xeon архитектуры Haswell.

Уязвимостям назначены следующие CVE: CVE-2017-5753, CVE-2017-5715 и CVE-2017-5754.

Напомню, что пользователи ежедневно запускают чужой код на своих компьютерах, посещая веб сайты с JavaScript (>99%), поэтому применение патча (здесь и здесь) обязательно, если вы дорожите своими данными. Есть PoC (п.4.3) , демонстрирующий атаку с этой уязвимостью через JavaScript.

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

Технические подробности про spectre (есть пример кода в конце файла)
Код из spectre.pdf выложенный отдельно.
Технические подробности про meltdown
Еще про meltdown
Видео, демонстрирующее утечку памяти meltdown
Технические детали для ARM-процессоров
Отчёт от Red Hat, упоминающий процессоры IBM Power как уязвимые.

UPD: Хорошая статья на русском языке про meltdown
UPD2: Продолжение про два вида Spectre

>>> Подробности

★★★★★

Проверено: anonymous_incognito ()
Последнее исправление: hobbit (всего исправлений: 24)

Конспирологи, а что мешало гуглу об этом рассказать спецслужбам?

akarin
()
Ответ на: комментарий от mbivanyuk

И еще один вопрос знатокам - после включения этого патча с KPTI в ядро замедление (каким бы оно ни было) коснется процессоров AMD точно также хотя они и не подвержены этой уязвимости?

Нет, принят патч с проверкой на производителя (для AMD не включается PTI).

anonymous
()
Ответ на: комментарий от mbivanyuk

Собственно, насколько мне известно, товарисч из амуде выпустил патч и kpti не включается. Добавь к загрузке ядра параметр nopti , чтобы отключить kpti при загрузке. Возможно в твоем дистре патч еще не прилетел.

anonymous
()
Ответ на: комментарий от Spoofing

ЧЯДНТ?

Не читаешь хедпост, в котором написано, что уязвимостей две.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Недопустимая инструкция

Как я понял, уязвимость не в конкретной инструкции, которая появилась позднее твоего Q6600, а в более общих принципах, то есть, можно и переписать PoC.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от red75prim

И что нового он принёс? В данном контексте он ничем от JS не отличается.

Legioner ★★★★★
()
Ответ на: комментарий от anonymous

Спасибо, понял. Строчки проверки производителя в коде я видел, но думал что включить или выключить это можно только на этапе компиляции. Если это как модуль ядра можно загружать или не загружать то для AMD особых проблем не вижу. Кстати акции Интел упали, AMD - поднялись.

mbivanyuk ★★★★★
()
Ответ на: комментарий от SakuraKun

К счастью в ядро приняли в таком виде:

К несчастью, это вроде только meltdown так пропатчили. А вот к spectre похоже уязвимы и AMD тоже и сама уязвимость более фундаментальная и патча против неё пока нет и неясно будет ли. O_o Видимо борьбу с ней перенесут на прикладной уровень (огрубление некоторых функций в Javascript и т.п.)

anonymous_incognito ★★★★★
()
Последнее исправление: anonymous_incognito (всего исправлений: 1)
Ответ на: комментарий от utf8nowhere

У сотрудников Интел скоро тоже будут морды, я думаю.

Twissel ★★★★★
()
Ответ на: комментарий от anonymous_incognito

Как я понял, уязвимость не в конкретной инструкции, которая появилась позднее твоего Q6600, а в более общих принципах, то есть, можно и переписать PoC.

да у же разобрался. оказалось надо было собирать с -O0 и код пропатчить. бинарник запустился, но эксплоит всё равно не работает. в смысле - не срабатывает

anonymous
()
Ответ на: комментарий от anonymous

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

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

вангану, что в новости про убунту 18.04 на вяленом, сустемди, питон 3, ну и конечно ядре с kpti, будут такие же скачки. запомните этот твит: убунту 18.04 должна была называться «весёлый васяникс».

anonymous
()

Наконец-то дожил до того момента когда у LibreJS есть все шансы взлететь.

akarin
()
Ответ на: Может быть это от cvs-255

Может быть это

не уязвимость, а бэкдор?

Так и есть все американские IT компании волей не волей внедряют бекдоры сами знаете зачем и для кого.

Ramil ★★★★
()

spectre работает на 32-битном Intel T2300

Spectre работает на 32-битном Intel T2300 (это просто Core Duo, даже не Core2).

spectre.c пришлось немного пропатчить :

50c50
< #define CACHE_HIT_THRESHOLD 80 
---
> #define CACHE_HIT_THRESHOLD 100 
90c90
<       time1 = __rdtscp( & junk); /* READ TIMER */
---
>       time1 = __rdtsc();
92c92
<       time2 = __rdtscp( & junk) - time1; /* READ TIMER & COMPUTE ELAPSED TIME */
---
>       time2 = __rdtsc() - time1;
gcc -march=native spectre.c

и это самый старый омпьютер, какой у меня есть

anonymous
()
Ответ на: комментарий от Twissel

Тов. Гуннер, скажи пожалуйста «спекулятивное» (внеочередное) выполнение появилось с P4, емнип?

Pentium Pro. 1995 год

wieker ★★
()
Ответ на: комментарий от anonymous_incognito

Видимо все спекулирующие процессоры подвержены.

Не зря в CCCР спекуляции были запрещены.

ox55ff ★★★★★
()
Ответ на: комментарий от mbivanyuk

Процессоры Intel и ARM64

Arm32 тоже подвержены. важна не битность, а outoforder execution. cortex-a53 64 битный, но не подвержен атаке. cortex-a9 подвержен, хоть и 32bit

хотя вру. важно speculative execution, а не out-of-order. поэтому cortex-a8 тоже аффектится

wieker ★★
()
Последнее исправление: wieker (всего исправлений: 1)

Где помониторить курс акций МЦСТ?

superuser ★★★★★
()

Ну че пацаны, на эльбрус?

KillTheCat ★★★★★
()

А вот мне интересно, почему эти баги начали фиксить только сейчас? О них в открытых источниках писали еще 10 лет назад. Комуто сильно непонравилось что его хакнули?

cvv ★★★★★
()
Ответ на: комментарий от atsym

Не читаешь, прежде чем писать? Под твой древний процессор надо доработать пример, выше есть рецепт.

anonymous
()
Ответ на: комментарий от atsym

spectre.c:1:0: error: CPU you selected does not support x86-64 instruction set

Добавь -m32 во флаги компиляции. Соответственно компилятору нужны 32-битные либы, поставь их тоже.

EXL ★★★★★
()
Ответ на: комментарий от tailgunner

Это сложно, но здесь на лоре был тред с обсуждением. Если вспомнить ключевые слова то можно наверное поиском найти ...

cvv ★★★★★
()
Ответ на: комментарий от atsym

https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/x86-Options.html

‘pentium4’ ‘pentium4m’

Intel Pentium 4 CPU with MMX, SSE and SSE2 instruction set support. ‘prescott’

Improved version of Intel Pentium 4 CPU with MMX, SSE, SSE2 and SSE3 instruction set support. ‘nocona’

Improved version of Intel Pentium 4 CPU with 64-bit extensions, MMX, SSE, SSE2 and SSE3 instruction set support.

anonymous
()

AMD A10 в десктопе, 210-й снапдрагон в телефоне. Моё железо настолько днище, что даже эксплойты не запускает.

dogbert ★★★★★
()
Ответ на: комментарий от anonymous

Говорят что "Intel(R) Pentium(R) Dual CPU T2330 @ 1.60GH" не уязвим для Spectre

-nocona

$ gcc -march=nocona -std=c99 -O0 spectre.c -o spectre
$ ./spectre
Reading 40 bytes:
Illegal instruction

-core2

$ gcc -march=core2 -std=c99 -O0 spectre.c -o spectre
$ ./spectre
Reading 40 bytes:
Illegal instruction

Инфа о ПК здесь
>>> https://gist.github.com/ErikAugust/724d4a969fb2c6ae1bbd7b2a9e3d4bb6#gistcomme...

P.S.: Говорят что у меня ПК в шапочке из фольги
>>> https://gist.github.com/ErikAugust/724d4a969fb2c6ae1bbd7b2a9e3d4bb6#gistcomme...

atsym ★★★★★
()
Последнее исправление: atsym (всего исправлений: 1)
Ответ на: комментарий от tailgunner

атака кажется не такой уж и сложной. можно и теоретически попробовать выяснить, без експлоита. впрочем, я ещё читаю статью.

wieker ★★
()

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

anonymous
()
Ответ на: комментарий от next_time

«ко-ко-ко Эльбрус не нужен, ко-ко-ко какой Эльбрус дорогой куд-кудах»

В Эльбрусе тоже спекулятивное исполнение команд. Кудахтай дальше.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от anonymous

Посмотри на заголовок - «Intel(R) Pentium(R) Dual CPU T2330 @ 1.60GH».

Воспроизвести Spectre с помощью «spectre.c» от @ErikAugust я на этом ПК не могу.

atsym ★★★★★
()
Ответ на: комментарий от tailgunner

Если оно спекулятивное, это ещё не значит, что оно подвержено данной уязвимости. И в статье про эльбрус ничего не написано.

next_time ★★★★★
()
Ответ на: комментарий от atsym

Воспроизвести Spectre с помощью «spectre.c» от @ErikAugust я на этом ПК не могу.

https://spectreattack.com/spectre.pdf

In the Flush+Reload technique, the attacker uses a dedicated machine instruction, e.g., x86’s clflush , to evict the line. In Evict+Reload, eviction is achieved by forcing contention on the cache set that stores the line, e.g., by accessing other memory locations which get bought into the cache and (due to the limited size of the cache) cause the processor to discard the evict the line that is subsequently probed

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.