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

У леново есть ссылки на обновления биоса конкретных моделей. И типа плана-графика для остальных.

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

я про спектр говорил. и это не косяк. это ещё одна разновидность переполнения буфера. просто спекулятивная.

Ты просто несёшь бред. Полный бред.

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

Да распродадут всё, по сходной цене, или отзовут за счет штеуда (я имею в виду жырнюки, у которых на складах сейчас запасы, но делл работает по принципу JIT).

Щас софтописатели начнут подпевать на счет «ничё страшного», обновитесь на версию Х+1

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

Ты просто несёшь бред. Полный бред.

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

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

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

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

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

Насчет софта как то очень смутная картина получается, софт может быть изменен только что бы не эксплуатировать теоретическую возможность похищения данных. При этом ничего не мешает сделать софт который будет эксплуатировать, аппаратно то получается возможно. Браузеры резко поправили вот что бы не быть «уивиноватыми» У меня вот после накатывания обновы от микрософта антивирь симантек начал себя странно вести, при открытии основного окна всё якобы хорошо, но в трее пишет что «имеется несколько проблем(2)». А сегодня вот читаю: https://kanobu.ru/news/obyasneno-chto-delat-chtobyi-zaschititsya-ot-uyazvimos... Microsoft обнаружила, что некоторые антивирусы обращаются к памяти ядра схожим с Meltdown способом, поэтому они несовместимы с обновлением KB4056892

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

всего лишь неудачная метафора.

Неудачно обосрался публично, да.

если ты не видишь, тупой анонимус,

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

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

Неудачно обосрался публично, да.

понимаешь, как бы так сказать...

мои знания си и ядра линукса ограничены тем, что я пишу драйверы и модифицирую ядро для своих радиолюбительских поделок, в основном на nuvoton n32926 с их ядром 2.6.36 и ti davinci, поэтому мне некуда «обсираться», я лишь пытаюсь разобраться. а вот что кучи профессиональных сикодеров и секурити оналитеков просмотрели вполне тривиальное использование _документированного_ сайд эффекта и теперь кукаречут на баг процессора - вот это публичная дефекация, да.

в этом и заключается ирония

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

Сноуден - предатель.

Кого он предал?

А ваше «благое дело» - терроризм.

Каковы террористические акты совершенные им?

anonymous
()

Кто-нибудь понимает, почему для непривелегированных процессов нельзя загрубить таймер? Это же тайминг атака. Можно rd(.*) на лету патчить, а внутри KVM вообще хукать.. (%

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

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

жирнозилла так и сделала в 57.0.4

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

Я призвался в 1996 и встретил в армии чувака, который разбирался в компах сильно (я так - видел пару раз, да и играл в Elite и Sokoban, но уже болел компами). Он там мне и рассказал про этот вид атак.

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

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

Для яваскрипт, можно.

Ushenin
()

Насколько я понимаю секурные плюшки OpenBSD тут как раз кстати, а именно:

  • Random-data memory: the ability to specify that a variable should be initialized at load time with random byte values was implemented in OpenBSD 5.3 by Matthew Dempsky.
  • Library order randomization: In rc(8), re-link libc.so, libcrypto, and ld.so on startup, placing the objects in a random order. Theo de Raadt and Robert Peichaer, May 2016, enabled by default since OpenBSD 6.0 and 6.2.
  • Kernel relinking at boot: the .o files of the kernel are relinked in random order from a link-kit, before every reboot. This provides substantial interior randomization in the kernel's text and data segments for layout and relative branches/calls. Basically a unique address space for each kernel boot, similar to the userland fork+exec model described above but for the kernel. Theo de Raadt, June 2017.

Поправьте васяна если не прав.

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

ещё забыл

  • malloc(3) randomization implemented by Thierry Deval. Guard pages and randomized (delayed) free added by Ted Unangst. Reimplemented by Otto Moerbeek for OpenBSD 4.4.
vasyan
()
Ответ на: комментарий от MrClon

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

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

wieker ★★
()

а вообще вот эта вот новость внизу 2015 года Выявлен новый вид JavaScript-атак на кэш-память процессора :

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

По сути это тоже самое.

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

По ссылке выше пишут, что spectre отработал и на Opteron.

Подтверждаю.

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

Вспомним проклятый баг № 12309.

Он ещё о себе напомнит с включенным KPTI.

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

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

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

посмотри его сырцы. в нем нет спекуляции. в нем даже конвеера нет

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

Значит мне не очень везет. Я давно планировал заменить проц в лэптопе, но всё руки не доходили. Надо будет десктоп с 7700 прогнать для сравнения.

ZERG ★★★★★
()
$ cat /proc/cpuinfo 
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 16
model		: 6
model name	: AMD Athlon(tm) II X2 240e Processor
$ uname -a
Linux cehost 4.14.10-1-ARCH #1 SMP PREEMPT Fri Dec 29 20:17:35 UTC 2017 x86_64 GNU/Linux
$ ./spectre 
Reading 40 bytes:
Reading at malicious_x = 0xffffffffffdfede8... Success: 0x54=’T’ score=2 
Reading at malicious_x = 0xffffffffffdfede9... Success: 0x68=’h’ score=2 
Reading at malicious_x = 0xffffffffffdfedea... Success: 0x65=’e’ score=2 
Reading at malicious_x = 0xffffffffffdfedeb... Success: 0x20=’ ’ score=2 
Reading at malicious_x = 0xffffffffffdfedec... Success: 0x4D=’M’ score=2 
Reading at malicious_x = 0xffffffffffdfeded... Success: 0x61=’a’ score=2 
Reading at malicious_x = 0xffffffffffdfedee... Success: 0x67=’g’ score=2 
Reading at malicious_x = 0xffffffffffdfedef... Success: 0x69=’i’ score=2 
Reading at malicious_x = 0xffffffffffdfedf0... Success: 0x63=’c’ score=2 
Reading at malicious_x = 0xffffffffffdfedf1... Success: 0x20=’ ’ score=2 
Reading at malicious_x = 0xffffffffffdfedf2... Success: 0x57=’W’ score=2 
Reading at malicious_x = 0xffffffffffdfedf3... Success: 0x6F=’o’ score=2 
Reading at malicious_x = 0xffffffffffdfedf4... Success: 0x72=’r’ score=2 
Reading at malicious_x = 0xffffffffffdfedf5... Success: 0x64=’d’ score=2 
Reading at malicious_x = 0xffffffffffdfedf6... Success: 0x73=’s’ score=2 
Reading at malicious_x = 0xffffffffffdfedf7... Success: 0x20=’ ’ score=2 
Reading at malicious_x = 0xffffffffffdfedf8... Success: 0x61=’a’ score=2 
Reading at malicious_x = 0xffffffffffdfedf9... Success: 0x72=’r’ score=2 
Reading at malicious_x = 0xffffffffffdfedfa... Success: 0x65=’e’ score=2 
Reading at malicious_x = 0xffffffffffdfedfb... Success: 0x20=’ ’ score=2 
Reading at malicious_x = 0xffffffffffdfedfc... Success: 0x53=’S’ score=2 
Reading at malicious_x = 0xffffffffffdfedfd... Success: 0x71=’q’ score=2 
Reading at malicious_x = 0xffffffffffdfedfe... Success: 0x75=’u’ score=2 
Reading at malicious_x = 0xffffffffffdfedff... Success: 0x65=’e’ score=2 
Reading at malicious_x = 0xffffffffffdfee00... Success: 0x61=’a’ score=2 
Reading at malicious_x = 0xffffffffffdfee01... Success: 0x6D=’m’ score=2 
Reading at malicious_x = 0xffffffffffdfee02... Success: 0x69=’i’ score=2 
Reading at malicious_x = 0xffffffffffdfee03... Success: 0x73=’s’ score=2 
Reading at malicious_x = 0xffffffffffdfee04... Success: 0x68=’h’ score=2 
Reading at malicious_x = 0xffffffffffdfee05... Success: 0x20=’ ’ score=2 
Reading at malicious_x = 0xffffffffffdfee06... Success: 0x4F=’O’ score=2 
Reading at malicious_x = 0xffffffffffdfee07... Success: 0x73=’s’ score=7 (second best: 0xB9 score=1)
Reading at malicious_x = 0xffffffffffdfee08... Success: 0x73=’s’ score=7 (second best: 0xD3 score=1)
Reading at malicious_x = 0xffffffffffdfee09... Success: 0x69=’i’ score=2 
Reading at malicious_x = 0xffffffffffdfee0a... Success: 0x66=’f’ score=2 
Reading at malicious_x = 0xffffffffffdfee0b... Success: 0x72=’r’ score=7 (second best: 0x43 score=1)
Reading at malicious_x = 0xffffffffffdfee0c... Success: 0x61=’a’ score=2 
Reading at malicious_x = 0xffffffffffdfee0d... Success: 0x67=’g’ score=2 
Reading at malicious_x = 0xffffffffffdfee0e... Success: 0x65=’e’ score=2 
Reading at malicious_x = 0xffffffffffdfee0f... Success: 0x2E=’.’ score=7 (second best: 0xC9 score=1)
greenman ★★★★★
()
Ответ на: комментарий от greenman
$ uname -a
Linux cehost 4.14.11-1-ARCH #1 SMP PREEMPT Wed Jan 3 07:02:42 UTC 2018 x86_64 GNU/Linux

без особых изменений

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

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

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

Память можно сканировать, структуры данных популярных приложений известны и их можно опознать. То есть в процессе сканирования можно найти много чего интересного... или не найти, это как повезет. Но если сканировать регулярно, наверняка что-то удастся «зацепить».

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

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

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

он не показывает наличие уязвимости

да? ну фсё ... расходимся тада ...

и этим дурачкам напиши мол «ничострашнава пацаны ящитаю ...»

http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5753

http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5715

sloan ★★
()

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

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Как может обвалится курс акций у двух монополистов? Там вообще конкуренции нет и близко. Хватит уже это писать.

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

Скоро из видеокарты вытащат пароль, в виде битмапа, отрендереный

Ничего себе! Вытащат целый •••••••••••••••••••••!

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