Изображение: Unsplash
Intel устранила серьезную уязвимость в прошивке Intel ME. Эксперт Positive Technologies Дмитрий Скляров обнаружил ошибку в работе механизмов обеспечения безопасности MFS — файловой системы, которую ME использует для хранения данных. В результате эксплуатации этой уязвимости злоумышленники могут манипулировать состоянием MFS и извлечь некоторые важные секреты.
В подсистеме Intel ME (Management Engine) для хранения данных используется MFS (предположительно, сокращение от ME File System). В механизмах безопасности MFS активно задействуются криптографические ключи. Для обеспечения секретности данных, хранящихся в MFS, используются Confidentiality keys, а для контроля целостности — Integrity keys. Данные, помещаемые в MFS, по степени значимости делятся на две категории, и защищаются разными наборами ключей. Для наиболее чувствительных данных используются Intel keys, а для всего остального — Non-Intel keys. Таким образом, применяется четыре ключа: Intel Integrity key, Non-Intel Integrity key, Intel Confidentiality key и Non-Intel Confidentiality key.
В 2017 году эксперты Positive Technologies Марк Ермолов и Максим Горячий обнаружили уязвимость, эксплуатация которой позволяет получить все четыре ключа и полностью скомпрометировать механизмы безопасности MFS.
Позднее корпорация Intel выпустила обновление, закрывающее эту уязвимость. Было увеличено значение SVN (Secure Version Number) — этот шаг должен был привести к обновлению всех ключей и вернуть безопасность MFS на запланированный уровень. Получение ключей MFS для обновленных прошивок ME (с новым значением SVN) должно быть невозможно.
Однако уже в 2018 году эксперт Positive Technologies Дмитрий Скляров обнаружил уязвимость CVE-2018-3655, описанную в бюллетене Intel-SA-00125. Суть проблемы заключается в том, что Non-Intel keys зависят от значения SVN и базового неизменяемого секрета подсистемы. А этот секрет удастся получить, если использовать JTAG-отладку, которую можно включить, используя предыдущую уязвимость. Знание базового секрета подсистемы позволяет вычислить оба Non-Intel keys — и все это уже в новой версии прошивки.
Таким образом злоумышленник может вычислить Non-Intel Integrity key и Non-Intel Confidentiality key для прошивок с обновленным значением SVN, а значит и скомпрометировать те механизмы безопасности MFS, которые опираются на эти ключи.
Non-Intel Integrity key применяется для контроля целостности всех директорий — зная его, можно добавлять и удалять файлы, менять им атрибуты защиты. Также на этот ключ завязана защита anti-replay-таблиц — механизма, призванного предотвратить замену содержимого некоторых файлов их предыдущими версиями. А зная ключ, механизмы anti-replay будет легко обойти. Non-Intel Confidentiality key используется для шифрования некоторых файлов. Например, с его помощью зашифрован пароль AMT.
Последовательно эксплуатируя уязвимости, найденные экспертами Positive Technologies в 2017 и 2018 годах, атакующий может вмешаться в работу ME и получить конфиденциальные данные. Эксплуатация уязвимостей затрудняется необходимостью физического доступа к устройству, но все же это крайне серьезная ошибка безопасности.
Эксперты Positive Technologies находили целый ряд уязвимостей в прошивке Intel ME. Так Марк Ермолов и Максим Горячий поведали об обнаруженной ими уязвимости на конференции Black Hat Europe. На той же конференции Дмитрий Скляров подробно рассказал об устройстве файловой системы ME.
Помимо этого, эксперты Positive Technologies научились отключать подсистему Intel ME с помощью недокументированного режима и на специальном вебинаре показали, как включать JTAG-отладку.
Комментарии (31)
keydon2
12.09.2018 20:28Шьют блобы в железо с зашитыми бекдорами и делают удивленные глаза, когда их находят.
В нормальной ситуации отправили бы такого производителя на мыло, но у нас монополия x86(поделенная с amd) и копирастия, а большинству потребителей до лампочки что там работает под капотом, что делает и что может делать. Так и живем.
Karpion
13.09.2018 00:08Давно пора бы написать петицию к производителям железа (например, IBM) с просьбой создать нормальную архитектуру, без этих вот извращений. С авторитетными в мире IT подписями.
oteuqpegop
13.09.2018 00:50>создать нормальную архитектуру, без этих вот извращенийKarpion
15.09.2018 16:58Вообще-то — я просил создать архитектуру, а не стандарт. Конкурирующие стандарты — это плохо; а вот конкурирующие архитектуры — это хорошо, даже ещё лучше, чем конкурирующие производители одной архитектуры.
Upd: Интересно, кому не понравилась идея с петицией? Странные люди эти минусующие. Такое ощущение, что они больше всего любят мелко напакостить — так, чтобы было невозможно понять, кто именно напакостил.
CodeRush
13.09.2018 01:45+1У IBM есть уже POWER без этих извращений, и TalosII с открытыми прошивками, только за $5k+ и без нормального ПО они мало кому нужны. Кому надо — пожалуйста, но рынку это все нужно постольку-поскольку.
Все эти извращения созданы по двум причинам: 1. софт намного дешевле железа и в производстве, и в поддержке. 2. место на кристалле под дополнительные контролеры сейчас бесплатное.
В итоге те, кто переходит на сотовые реализации своих фич, получают конкурентное преимущество (больше фич за те же деньги), и выдавливает остальных с рынка. Таким образом у нас появились сначала микрокоды (декодировать все операции на железе — дорого), затем контролеры ICC (управлять питанием и генерацией частот на железе — дорого), а затем и МЕ с PSP (выполнять инициализацию на железе — дорого). А раз сервисный процессор общего назначения уже есть, на него можно заодно повесить побольше фич, и пока он тормозить не начнет, потом поставить такой же, но мощнее (переход с МЕ7-10 на МЕ11-12), и повесить еще больше фич, теснее интегрировать с остальными железками внутри SoC ради еще большего количества фич, так далее по кругу. Это все — реально продает, и потому будет длиться несмотря на любые петиции.Karpion
13.09.2018 21:05софт намного дешевле железа и в производстве, и в поддержке
И поэтому производители софта постоянно говорят «Тормозит программа? Замените процессор и докупите памяти!»?
место на кристалле под дополнительные контролеры сейчас бесплатное.
LoL, а место на кристалле под кэш разве не требуется?
А проблемы с перегревом разве не напрягают?
В итоге те, кто переходит на сотовые реализации своих фич, получают конкурентное преимущество
Я как раз и предлагаю архитектуру с софтовой реализацией. Просто разнести софт на разные процессоры, каждый с собственной памятью.
Таким образом у нас появились сначала микрокоды
Это потму, что система команд процессора — дебильная.
управлять питанием и генерацией частот на железе — дорого
Вы это серьёзно? Пруф можно?
Это все — реально продает
Продаваться может что угодно — пока нет достойной альтернативы.
Пока не было автомобилей — ездили на лошадках. Тысячи лет.
и потому будет длиться несмотря на любые петиции.
Петиция — это как бы декларация о намерениях покупателя купить что-то альтернативное, когда оно появится.Am0ralist
13.09.2018 22:52Вы это серьёзно? Пруф можно?
в данном случае, сам CodeRush является пруфом…CodeRush
13.09.2018 23:06Лестно, но не верно, я тоже могу ошибаться и ошибаюсь.
Пруф на относительную дороговизну генерации частот — без проблем, блок Integrated Clock Control вынесен у Intel в прошивку начиная с MEv7 (Sandy Bridge), у AMD — с внедрения SMU (точную модель не помню, но лет 10 уже как минимум). Занимаются оба управлением частотами и питанием, которое делать на железе было бы намного дороже тупо потому, что писать на верилоге сложнее, чем на С.Am0ralist
13.09.2018 23:31Лестно, но не верно, я тоже могу ошибаться и ошибаюсь.
Все ошибаются, тем более в пруфах, которые могут быть написаны изнасилованным журналистом, например. Так что ваши слова — лучше пруфа) Это экспертное мнение не по Википедии.
Так что в данном случае главный по тарелочкам на ресурсе — всё же вы…
CodeRush
13.09.2018 23:12Я не хочу с вами спорить, я только пояснил, почему ситуация именно такая, а не иная.
Не нравится — не ешьте, меняйте дебильную систему команд на нормальную, предлагайте архитектуры, пишите петиции, делайте свои собственные процессоры так, как вы считаете нужным, и рынок потом вас рассудит.
Предлагать я тоже могу что-угодно, любой степени сложности и реализма, а по факту количество специализированных закрытых контролеров с собственной прошивкой у всех только растет, а количество вещей, реализованных на железе, с каждым поколением уменьшается, потому что делать вещи на железе — дорого.Karpion
14.09.2018 18:02Видите ли, рынок давно уже ничего не решает. Потому что рынок решает там, где есть много однотипных производителей. В IT-мире это давно не так; могу назвать ещё десяток отраслей, где выбора практически нет.
Чтобы софтовые прошивки работали — нужно железо. А железок со временем становится только больше.
То, что внутри железки сидит процессор, который реализует часть функций — ничего не меняет.
h0t_max
13.09.2018 23:32+1Вы это серьёзно? Пруф можно?
А тут все просто, попробуйте реализовать какой-нибудь алгоритм на VHDL и на С, а потом попробуйте оценить сколько будет стоить, если Вы ошиблись и забыли где-то что-то проверить (как чинить у клиента хардварь? а так прошивку обновил и все...).
А еще советую посмотреть как запускаются современные PCH/CPU/… -надо подать десятки напряжений и частот в строго фиксированое время…
А проблемы с перегревом разве не напрягают?
не скажу про всю ОдессуТот же МЕ работает на ооочень низкой частоте и памят на борту имеет в районе пары десятков мегабайт, кеша вроде у него нет (тут не уверен)CodeRush
13.09.2018 23:44С кэшем там непонятно, потому что ядро там Quark DXk, т.е. кэш может и быть, и не быть, синтезируют что захотят. Почти все написано на верилоге, и поэтому у одного процессора (серверного, например), может быть и L1I, и SRAM, а у другого (атома) — ни того, ни другого.
Karpion
14.09.2018 05:49Ну, начнём с того, что каждому овощу — свою грядку. Есть задачи, которые лучше решаются аппаратно, есть — программно.
Однако, обратим внимание на то, что когда-то давно аппаратной была только целочисленная арифметика, а сейчас аппаратный FPU является стандартом и присутствует даже там, где он вообще не нужен.
Собственно, аппаратные решения делаются декларативно, а программные — в основном императивно. Поэтому в аппаратуре ошибки встречаются реже.
Подход «прошивку обновил и все» — приводит к тому, что прошивку без эпических дырок в безопасности мы не получим НИКОГДА. Раньше хоть программисты знали, что им за такие дырки вчинят иск — и хоть немного старались. А теперь — пишут индусский код и в ус не дуют. Говнономика в полный рост. Тьфу, срамота!
Современные CPU — это вообще ужас. Давно пора делать рефакторинг как CPU, так и вообще архитектуры компьютеров.
Я не понял, что в данном контексте значит «ME». Если можно — ссылку на статью про это.dartraiden
14.09.2018 18:06
immaculate
13.09.2018 04:23Есть Эльбрус.
Karpion
15.09.2018 03:49Эльбрус, как я понимаю — это та же самая архитектура, построенная вокруг CPU, с единой памятью. А значит, риск от уязвимостей остаётся высоким.
При этом возможность легко накладывать патчи — приводит к тому, что программисты совершенно не заботятся о качестве программ. Т.е. — аппаратной защиты в виде разделения памяти нет, программы ненадёжны (и надежды на то, что их сделают надёжными — нет). Ну и производители железа косячам — ибо больше озабочены возможностью создать бэкдоры, чем безопасностью.
Разделение функций на разные CPU с раздельной памятью — существенно купирует эту проблему.
CodeRush
13.09.2018 01:26+3Еще раз скажу спасибо коллегам из PT за все, что они делают вокруг МЕ. За прошедшие пару лет с безопасностью там стало намного лучше, чем было до этого, и это случилось исключительно благодаря Максиму, Марку и Дмитрию. Так держать!
fhabr
13.09.2018 12:45Яблоки каким-то образом используют ME?
h0t_max
13.09.2018 14:05Хотя он у apple кастомный, уйти от ME полностью на Intel уже нельзя.
Можно посмотреть чуть подробнее тут: habr.com/company/pt/blog/414097
SergeyMax
13.09.2018 09:03Правильно ли я понял, что нужно разобрать комп, подпаяться к JTAG, и после этого получить удалённый доступ к ЭВМ?
Taciturn
13.09.2018 09:38Нет. В последнем предложении статьи ссылка на статью «Как включить JTAG-отладку через USB».
Начиная с процессоров семейства Skylake, запущенных в производство в 2015 году, компания Intel внедрила технологию Direct Connect Interface (DCI), которая предоставляет доступ к JTAG через популярный порт USB 3.0.
h0t_max
14.09.2018 12:29На самом деле нет, просто через JTAG это удобнее всего делать, но никто не вчитывается в текст) Все можно провернуть и без него. Так что это всего лишь способ, а не вектор.
AlexanderS
Батюшки, косяк в IME! Ну что ж такое: никогда не было и вот опять(