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)
Ответ на: комментарий от anonymous_incognito

причём баг вообще во всех процах, где есть эта фича со спекулятивным исполнением

Зависит от реализации. У Intel, как видно, реализация крайне говёная, раз позволяет сразу несколько вариантов взлома использовать.

Quasar ★★★★★
()

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

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

Эльбрусы от этого нужными не становятся.

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

о том чтобы все не забыли обновить свои системы

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

А я всегда говорю - есть Родина, а есть государство. И существует некая тонкая грань между. Чем ближе государство к народу, тем тоньше грань, чем дальше, - тем больше желающих поподжимать лапки.

Как-то так. Сорри за пафос.

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

О чём думают люди, рекламирующие такую мерзкую вещь, как ошибка?

И в чём тут реклама?

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

NextGenenration ★★
()

При Сталине такого не было!!!

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

В нормальных государствах создаются условия, чтобы было комфортно работать на вменяемых госпрограммах умным людям. Так что вопрос о служении родине не стоит. Просто идёшь работать туда если на рынке нет лучших предложений. Или не идёшь и всё равно приносишь пользу.

А вообще - не ссышь в подъездах и не паркуешься на тротуарах - уже служишь родине.

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

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

metacodeblock
()

Почему в одной новости два разных класса проблем

Ошибка, исправляемая: Spectre на уровне приложения, AMD ещё не подтвердили проблему и уж точно решать обновлением Ошибка, которую исправить нельзя никак: meltdown на уровне архитектуры Intel

Почему и за сколько такие новости публикуются?

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

И в статье про эльбрус ничего не написано.


 — Кто это был?!
 — Так это же Неуловимый Джо!
 — И что, его действительно никто поймать не может?
 — Да кому он нахрен нужен...

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

dd if=/dev/zero of=arbuzgovorit4totypidar bs=512 count=10000000

5120000000 bytes (5.1 GB, 4.8 GiB) copied, 6.0152 s, 851 MB/s 5120000000 bytes (5.1 GB, 4.8 GiB) copied, 6.05239 s, 846 MB/s

deity ★★★★
()

Spectre работает на AMD процессорах

Сильно старые пока не доступны. Как до работы доберусь - потыкаю старенький Athlon X2.

  • Kernel: 4.4.0-105-generic
  • CPU: AMD A8-6600K

Увеличил THRESHOLD до 120

#define CACHE_HIT_THRESHOLD 120

./spectre
Reading 40 bytes:
Reading at malicious_x = 0xffffffffffdffb08... Success: 0x54=’T’ score=2
Reading at malicious_x = 0xffffffffffdffb09... Success: 0x68=’h’ score=2
Reading at malicious_x = 0xffffffffffdffb0a... Success: 0x65=’e’ score=2
...

Выводит всю строку без '?'.

PS: Не нашлось нигде PoC для Meltdown?

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

Без эзопова языка будет слишком длинно.

Проблема очень обширная.

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

Да-да =)

Следите за рекламой.

Deleted
()
Ответ на: spectre работает на 32-битном Intel T2300 от anonymous

пропатченный spectre.c работает на Genuine Intel(R) CPU U7300 @ 1.30GHz, но не очень хорошо?)

./spectre_2 
Reading 40 bytes:
Reading at malicious_x = 0xffffeb90... Unclear: 0x09='?' score=57    (second best: 0x0A score=54)
Reading at malicious_x = 0xffffeb91... Unclear: 0x02='?' score=59    (second best: 0x0E score=53)
Reading at malicious_x = 0xffffeb92... Unclear: 0x02='?' score=55    (second best: 0x0E score=53)
Reading at malicious_x = 0xffffeb93... Unclear: 0x02='?' score=56    (second best: 0x06 score=55)
Reading at malicious_x = 0xffffeb94... Unclear: 0x02='?' score=56    (second best: 0x01 score=56)
Reading at malicious_x = 0xffffeb95... Unclear: 0x00='?' score=57    (second best: 0x01 score=55)
Reading at malicious_x = 0xffffeb96... Unclear: 0x02='?' score=59    (second best: 0x0A score=53)
Reading at malicious_x = 0xffffeb97... Unclear: 0x07='?' score=55    (second best: 0x08 score=54)
Reading at malicious_x = 0xffffeb98... Unclear: 0x02='?' score=56    (second best: 0x01 score=56)
Reading at malicious_x = 0xffffeb99... Unclear: 0x02='?' score=57    (second best: 0x09 score=54)
Reading at malicious_x = 0xffffeb9a... Unclear: 0x0A='?' score=56    (second best: 0x02 score=55)
Reading at malicious_x = 0xffffeb9b... Success: 0x6F='o' score=2    
Reading at malicious_x = 0xffffeb9c... Unclear: 0x02='?' score=55    (second best: 0x0E score=52)
Reading at malicious_x = 0xffffeb9d... Unclear: 0x06='?' score=58    (second best: 0x0E score=54)
Reading at malicious_x = 0xffffeb9e... Unclear: 0x09='?' score=56    (second best: 0x0A score=55)
Reading at malicious_x = 0xffffeb9f... Success: 0x20=' ' score=2    
Reading at malicious_x = 0xffffeba0... Unclear: 0x0A='?' score=57    (second best: 0x09 score=55)
Reading at malicious_x = 0xffffeba1... Unclear: 0x02='?' score=60    (second best: 0x0A score=56)
Reading at malicious_x = 0xffffeba2... Success: 0x65='e' score=2    
Reading at malicious_x = 0xffffeba3... Unclear: 0x0A='?' score=56    (second best: 0x09 score=55)
Reading at malicious_x = 0xffffeba4... Success: 0x53='S' score=2    
Reading at malicious_x = 0xffffeba5... Unclear: 0x09='?' score=55    (second best: 0x08 score=55)
Reading at malicious_x = 0xffffeba6... Unclear: 0x02='?' score=58    (second best: 0x01 score=57)
Reading at malicious_x = 0xffffeba7... Unclear: 0x02='?' score=55    (second best: 0x0A score=54)
Reading at malicious_x = 0xffffeba8... Unclear: 0x02='?' score=60    (second best: 0x09 score=58)
Reading at malicious_x = 0xffffeba9... Unclear: 0x02='?' score=58    (second best: 0x0A score=57)
Reading at malicious_x = 0xffffebaa... Unclear: 0x02='?' score=55    (second best: 0x0A score=53)
Reading at malicious_x = 0xffffebab... Unclear: 0x06='?' score=56    (second best: 0x00 score=55)
Reading at malicious_x = 0xffffebac... Unclear: 0x02='?' score=54    (second best: 0x0A score=53)
Reading at malicious_x = 0xffffebad... Unclear: 0x02='?' score=59    (second best: 0x0A score=55)
Reading at malicious_x = 0xffffebae... Success: 0x4F='O' score=15    (second best: 0x02 score=5)
Reading at malicious_x = 0xffffebaf... Success: 0x73='s' score=2    
Reading at malicious_x = 0xffffebb0... Success: 0x73='s' score=2    
Reading at malicious_x = 0xffffebb1... Success: 0x69='i' score=2    
Reading at malicious_x = 0xffffebb2... Success: 0x66='f' score=2    
Reading at malicious_x = 0xffffebb3... Unclear: 0x07='?' score=54    (second best: 0x06 score=54)
Reading at malicious_x = 0xffffebb4... Unclear: 0x0A='?' score=58    (second best: 0x06 score=53)
Reading at malicious_x = 0xffffebb5... Unclear: 0x02='?' score=59    (second best: 0x0A score=56)
Reading at malicious_x = 0xffffebb6... Unclear: 0x09='?' score=56    (second best: 0x00 score=57)
Reading at malicious_x = 0xffffebb7... Unclear: 0x0E='?' score=56    (second best: 0x06 score=53)
qwerty013
()
Ответ на: комментарий от wieker

У QorIQ ядро PowerPC, а не POWER. Если там есть поддержка OoO, то может уязвимость и имеется. Но реализация OoO может оказаться стойкой к ней. На тех же процессорах от AMD уязвимость, судя по имеющимся сведениям, отсутствует, хотя OoO там есть.

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

И в статье про неуловимого Джо ничего не написано.

fixed.

dzidzitop ★★
()

интересно не хотят ли эти ребята отозвать все свои дырявые процессоры чтобы выбросить их в помойку и выдать новые без подобных проблем?

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

И результаты на уровне погрешности играх.

Сомневаюсь, что выдавали действительно существенные показатели.

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

Да, суд установил. Реально какой-то индус отличился. Где-то проскакивал разбор этого кода даже - мрак запредельный. А про коврик сказали потому что надо было что-то сказать.

Короче - меняйте управление на механическое. Если вам дорога Ваша жизнь.

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

Это косяк. Для бекдора есть миникс, про который недавно была новость.

Я не знаю как устроена эмуляция хэ-86 на Эльбрусах, поэтому зуба насчёт безопасности в данном вопросе не дал бы. Впрочем и для своего режима тоже есть вероятность.

Конечно было бы неплохо услышать официальное мнение МЦСТ, но они в маркетинг не умеют. От маркетинга у нас только дурачок 4matic и секта его свидетелей с мантрой про «Бабаяна и все-все-все».

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

Почему же мерзкую? Тоже купил штеудоговно за килобакс?

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

opennet

Уязвимость Meltdown (CVE-2017-5754) позволяет приложению прочитать содержимое любой области памяти компьютера, включая память ядра и других пользователей.

Уязвимость Spectre (CVE-2017-5753, CVE-2017-5715) создаёт брешь в механизме изоляции памяти приложений и позволяет атакующему обманным способом получить данные чужого приложения (только приложения, но не памяти ядра).

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

Так что, по «расплавлению стержня» уже можно заворачиваться в одеялко и ползти на кладбище?

Если верить опенку «плавленный круче».

Twissel ★★★★★
()
Ответ на: opennet от Twissel

Уязвимость Meltdown (CVE-2017-5754) позволяет приложению прочитать содержимое любой области памяти компьютера, включая память ядра и других пользователей.

Отличный перевод текста: «Systems with microprocessors utilizing speculative execution and indirect branch prediction may allow unauthorized disclosure of information to an attacker with local user access via a side-channel analysis of the data cache.»

tailgunner ★★★★★
()

я уже обновился до 4.14.11

xmikex ★★★★
()

Spectre насколько я понял такой себе эксплоит, и вообщем даже не эксплоит - так как он просто позволяет получить данные из страниц к которым и так еже есть доступ (просто без явного read).

Meltdown - развитие темы spectre но там уже можно получить доступ к страницам которые отмаплены в адресное пространство процесса но доступа к ним нет (RING 0), но работает крайне не стабильно - и с реальным приминением на практике там будет куча проблем,

Так-что для рядового пользователя я лично проблем не вижу.

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

Или даже флаг процессора «не вытеснять кэш при спекуляции».

эффективность кеширования с учётом процента спекулятивно выполняемого кода без отката упадёт на дно.

непонятно каким образом они считывают контент из кэша - код в стиле «школьник учится писать на C».

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

непонятно каким образом они считывают контент из кэша - код в стиле «школьник учится писать на C».

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

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

код в стиле «школьник учится писать на C»

Но это же концепт, который быстро сляпали для иллюстрации, а может еще и нарочно так написали, чтобы поменьше мамкиных кулхацкеров ЧСВ за чужой счет чесали. Код и так содержит небольшую ошибку из-за которой не компилируется.

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

непонятно каким образом они считывают контент из кэша - код в стиле «школьник учится писать на C».

в новости же есть ссылка на PoC - чисто таймингом. и константа в коде.

и в кеше адрес хранит утекшее значение. прочитай статью, в кеш заносится значение interesting[cookie] при выполнении target[interesting[cookie]]

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

Брехня это. Для spectre bpf_jit_enable не нужен:

$ cat /proc/sys/net/core/bpf_jit_enable 
0
$ /tmp/spectre 
Reading 40 bytes:
Reading at malicious_x = 0xffffffffffdffac0... Success: 0x54=’T’ score=2 
Reading at malicious_x = 0xffffffffffdffac1... Success: 0x68=’h’ score=2 
Reading at malicious_x = 0xffffffffffdffac2... Success: 0x65=’e’ score=2 
Reading at malicious_x = 0xffffffffffdffac3... Success: 0x20=’ ’ score=2 
Reading at malicious_x = 0xffffffffffdffac4... Success: 0x4D=’M’ score=2 
Reading at malicious_x = 0xffffffffffdffac5... Success: 0x61=’a’ score=2 
Reading at malicious_x = 0xffffffffffdffac6... Success: 0x67=’g’ score=2 
Reading at malicious_x = 0xffffffffffdffac7... Success: 0x69=’i’ score=2 
Reading at malicious_x = 0xffffffffffdffac8... Success: 0x63=’c’ score=2 
Reading at malicious_x = 0xffffffffffdffac9... Success: 0x20=’ ’ score=2 
Reading at malicious_x = 0xffffffffffdffaca... Success: 0x57=’W’ score=2 
Reading at malicious_x = 0xffffffffffdffacb... Success: 0x6F=’o’ score=2 
Reading at malicious_x = 0xffffffffffdffacc... Success: 0x72=’r’ score=2 
Reading at malicious_x = 0xffffffffffdffacd... Success: 0x64=’d’ score=2 
Reading at malicious_x = 0xffffffffffdfface... Success: 0x73=’s’ score=2 
Reading at malicious_x = 0xffffffffffdffacf... Success: 0x20=’ ’ score=2 
Reading at malicious_x = 0xffffffffffdffad0... Success: 0x61=’a’ score=2 
Reading at malicious_x = 0xffffffffffdffad1... Success: 0x72=’r’ score=2 
Reading at malicious_x = 0xffffffffffdffad2... Success: 0x65=’e’ score=2 
Reading at malicious_x = 0xffffffffffdffad3... Success: 0x20=’ ’ score=2 
Reading at malicious_x = 0xffffffffffdffad4... Success: 0x53=’S’ score=2 
Reading at malicious_x = 0xffffffffffdffad5... Success: 0x71=’q’ score=2 
Reading at malicious_x = 0xffffffffffdffad6... Success: 0x75=’u’ score=2 
Reading at malicious_x = 0xffffffffffdffad7... Success: 0x65=’e’ score=2 
Reading at malicious_x = 0xffffffffffdffad8... Success: 0x61=’a’ score=2 
Reading at malicious_x = 0xffffffffffdffad9... Success: 0x6D=’m’ score=2 
Reading at malicious_x = 0xffffffffffdffada... Success: 0x69=’i’ score=2 
Reading at malicious_x = 0xffffffffffdffadb... Success: 0x73=’s’ score=2 
Reading at malicious_x = 0xffffffffffdffadc... Success: 0x68=’h’ score=2 
Reading at malicious_x = 0xffffffffffdffadd... Success: 0x20=’ ’ score=2 
Reading at malicious_x = 0xffffffffffdffade... Success: 0x4F=’O’ score=2 
Reading at malicious_x = 0xffffffffffdffadf... Success: 0x73=’s’ score=2 
Reading at malicious_x = 0xffffffffffdffae0... Success: 0x73=’s’ score=2 
Reading at malicious_x = 0xffffffffffdffae1... Success: 0x69=’i’ score=2 
Reading at malicious_x = 0xffffffffffdffae2... Success: 0x66=’f’ score=2 
Reading at malicious_x = 0xffffffffffdffae3... Success: 0x72=’r’ score=2 
Reading at malicious_x = 0xffffffffffdffae4... Success: 0x61=’a’ score=2 
Reading at malicious_x = 0xffffffffffdffae5... Success: 0x67=’g’ score=2 
Reading at malicious_x = 0xffffffffffdffae6... Success: 0x65=’e’ score=2 
Reading at malicious_x = 0xffffffffffdffae7... Success: 0x2E=’.’ score=2

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

Идиотишко тупоголовое.

Сделано это для того, чтобы люди могли быстро всё нагуглить и понять, чем оно им грозит и что надо делать.

А если не будет громкого названия, то 100500 новостных сайтов опишут уязвимость по-разному, а потом ты замучаешься искать что где и кто виноват.

// b.

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