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)

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

Нет, но виноват ВСЕГДА разработчик продукта если не доказано что пользователь делал что то не так. То есть если пользователя убил током телевизор сделанный из говна и палок то тут явно к производителю вопрос.

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

To complete the attack, the adversary simply needs to detect the change in the cache state to recover

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

wieker ★★
()

много информации, только работающего демо кода пока не нашел

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

Вы в курсе, что коврик это отмазка, а реально была ошибка в прошивка ЭБУ, которую писал криворукий рикша?

frost_ii ★★★★★
()

Вот ужо DARPA сотворит «Morpheus» ©, тогда «все напасти нам будут трын-трава» :)

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

но виноват ВСЕГДА разработчик продукта если не доказано что пользователь делал что то не так

В данном случае я не уверен. Но, если ты прав, то будет весело. Впрочем, сейчас Intel пробует другую тактику защиты - «у нас всё работает как надо, а то, что этим могут воспользоваться плохие люди - не наша проблема»: https://www.pcworld.com/article/3245508/components-processors/intel-responds-...

“The processor is in fact operating as we designed it,”

Прокатит ли это в суде - ХЗ.

tailgunner ★★★★★
()

Месяц уязвимостей объявляю открытым!

Odalist ★★★★★
()

Microsoft, как ожидается, публично представит необходимые изменения для своей операционной системы Windows в ближайший «Вторник патчей» (Patch Tuesday): эти изменения были распространены среди бета-тестировщиков в ноябре и декабре.

https://www.theregister.co.uk/2018/01/02/intel_cpu_design_flaw/

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

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

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

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

Покрутил и трешхолд и многоразовый запуск делал - всёравно не получается получить полную расшифровку всех букв в одном выхлопе: то одни, то другие буквы рандомным порядком выводятся как "?".

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

Которая и происходит при расплавлении.

С мультитрана

meltdown сущ. общ. разрушение из-за расплавления (напр. ядерного реактора); взрыв ядерного реактора (Дмитрий_Р); обвал финансового рынка (Дмитрий_Р); катастрофические и неуправляемые процессы в ядерном реакторе, сопровождающиеся повышением температуры (bigmaxus); неудача (bigmaxus); полный крах (bigmaxus); провал (bigmaxus); slang term for an emotional breakdown (masha); расплавление ядерных топливных элементов реактора (Taras)

Всё верно переведено.

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

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

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

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

Привет из 2007. Там же:

Другие специалисты ранее уже отмечали опасность такого рода уязвимостей в процессорах Intel. В июне прошлого года (2007 ,- прим.) Тео де Раад (Theo de Raadt), основатель OpenBSD, заявлял, что эти чипы «ужасно плохие». «Некоторые из этих уязвимостей не только вызывают проблемы при разработке, но в скором времени могут быть использованы для взлома», — сказал он

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

meltdown — утечка ядерного топлива, не?

Из словаря LingvoUniversal (En-Ru)

  сущ. 
 1) расплавление ядерных топливных элементов реактора; разрушение реактора из-за такого расплавления; авария на АЭС 
   Three Mile Island meltdown — авария на атомной станции на островеТри-Майл, шт. Пенсильвания (произошла в 1979 г.) 
 2) катастрофа; крах; провал; банкротство 
   financial meltdown — финансовый крах; банкротство 
 3) потеря контроля над собой 
   on the point of a psychotic meltdown — на грани нервного срыва

Из словаря Americana (En-Ru)

  расплав, авария на АЭС 
  Авария на атомной станции "Тримайл-Айленд" [Three Mile Island] в 1979, 
в результате которой произошел частичный расплав урановых стержней. 
Сегодня понятие стало синонимом крупной катастрофы в атомной энергетике и 
из технического языка вошло в разряд бытовой лексики. 
Также нарицательно используется понятие "Чернобыль" [Chernobyl]

Из словаря Computers (En-Ru)

  глобальная авария 
  авария, касающаяся всей системы или компьютерной сети 
  Syn: 
  total failure
anonymous
()
Ответ на: комментарий от wieker

ну возможно алгоритм программы работать может так, событием предусмотрено выполнение команд А и B, но к ним добавляют произвольную команду С, которая в определенных случаях срабатывает хотя не должна была бы. А - условие задачи, В - итог, С 0 - отправить дамп памяти в общедоступную часть памяти где происходит свободно исполняемая задача Z - email to:.

ну может как то так, другого пока в голову ненафантазировалось.

Zhelezniy_Felix
()

MacBook Pro (15–inch, 2017) 2,8 GHz Intel Core i7. (MacOS 10.13.2 (17C88))

$ gcc –std=c99 –O0 spectre.c –o spectre
$./spectre 
Reading 40 bytes:
Reading at malicious_x = 0xfffffffffffffeb6... Unclear: 0x54=’T’ score=983 (second best: 0x00 score=887)
Reading at malicious_x = 0xfffffffffffffeb7... Success: 0x68=’h’ score=2 
Reading at malicious_x = 0xfffffffffffffeb8... Success: 0x65=’e’ score=9 (second best: 0x04 score=2)
Reading at malicious_x = 0xfffffffffffffeb9... Unclear: 0x20=’ ’ score=987 (second best: 0x00 score=883)
Reading at malicious_x = 0xfffffffffffffeba... Unclear: 0x4D=’M’ score=977 (second best: 0x00 score=858)
Reading at malicious_x = 0xfffffffffffffebb... Unclear: 0x61=’a’ score=993 (second best: 0x00 score=913)
Reading at malicious_x = 0xfffffffffffffebc... Success: 0x67=’g’ score=2 
Reading at malicious_x = 0xfffffffffffffebd... Unclear: 0x69=’i’ score=993 (second best: 0x00 score=894)
Reading at malicious_x = 0xfffffffffffffebe... Unclear: 0x63=’c’ score=980 (second best: 0x00 score=914)
......

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

Most modern processors, in particular with Intel microarchitecture since 2010, are affected.

А петушки лора кудактают-обновляйтесь, обновляйтесь, говно железо, кококо...

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

Тоже самое, покрутил 80, 100, 150, 300, 600, компиляция:

gcc -std=c99 -O0 -o spectre spectre.cpp 

В результате почти всегда ?, иногда проскакивает 1-2 буквы, но скорее статистический мусор. Процессор:

cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 42
model name	: Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz
stepping	: 7
microcode	: 0x29
cpu MHz		: 2192.825
cache size	: 6144 KB
physical id	: 0
siblings	: 8
core id		: 0
cpu cores	: 4
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts
bugs		:
bogomips	: 4387.38
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

JAkutenshi ★★
()

Может это запланированное пересаживание всей планеты на другую архитектуру? На ARM, на MIPS?

cvv ★★★★★
()

Сходу есть гист на тестирование meltdown? И что там, заплатка уже есть в ядре, арч обновлять?

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

Уязвимости подвержены процв с 95го года, еще вопросы?

Тогда, как понять вот это

Most modern processors, in particular with Intel microarchitecture since 2010, are affected.

Источник. Неверная информация?

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

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

Было на bash.org
>>> http://bash.org/?244321

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

Тогда, как понять вот это

Тогда посчитать, сколько уязвимостей упомянуто в хедпосте. 2010 относится к первой из них.

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

Скорее фундаментальная ошибка генома интеловского менеджмента.

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

Понизь значение

#define CACHE_HIT_TRESHOLD (100)

У меня при значении выше «128» тоже начинает выдавать «Unclear», но при меншем значении работает.

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

Тогда посчитать, сколько уязвимостей упомянуто в хедпосте. 2010 относится к первой из них.

по неподтвержденным данным все модели с 1995 года, кроме Itanium и Atom

Данные непотвержденные. Сам ТС написал. Можно ссылку на список моделей?

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

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

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

Этот PoC угадывает значение данных из юзерспейса (в том же адресном пространстве). Он будет работать на почти любом OoO процессоре с кэшем. Но уязвимость не в этом. А в том, что некоторые CPU могут спекулятивно прочитать из памяти, игнорируя права. Тестировать надо на адресе из ядра или mprotect PROT_NONE на юзерспейсном адресе.

anonymous
()

Разработчики LLVM выкатили патчи для CVE-2017-5715

https://web.archive.org/web/20180104131631/https://reviews.llvm.org/D41723

трэд на HN
>>> https://news.ycombinator.com/item?id=16070050

anonymous_incognito, добавь инфу в шапку + добавь ссылку на PoC Spectre
>>> https://gist.github.com/ErikAugust/724d4a969fb2c6ae1bbd7b2a9e3d4bb6

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

А теперь вопрос - а могло ли это быть умышленно? насколько реально существование утилиты от Sysinternals с каким нибудь банальным названием «hello root» запустил в браузере и «здравствуйте!». Грубо говоря во общем.

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

по неподтвержденным данным все модели с 1995 года, кроме Itanium и Atom

Это ты к тому, что данные не были подтверждены на момент написания новости? Так в этом топике уже отписались люди со старыми моделям ЦП.

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

Этот PoC угадывает значение данных из юзерспейса (в том же адресном пространстве). Он будет работать на почти любом OoO процессоре с кэшем. Но уязвимость не в этом

Уязвимость именно в этом. JIT-код (и JS) может читать данные за пределами песочницы; ядерный код (например, через eBPF) может читать всю память в системе.

Впрочем, Intel не считает это уязвимостью.

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

На малых значениях есть буквы, но все-равно Unclear, много ?.

Сейчас есть патчи от спектра или это все-таки принципиально архитектурная лажа и не латается?

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