В ходе исследования внутренней архитектуры Intel Management Engine (ME) 11-й версии был обнаружен механизм, отключающий эту технологию после инициализации оборудования и запуска основного процессора. О том, как мы нашли этот недокументированный режим, и о его связи с государственной программой построения доверительной платформы High Assurance Platform (HAP) мы расскажем в этой статье.

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

Введение


Intel Management Engine — это закрытая технология, которая представляет собой интегрированный в микросхему Platform Controller Hub (PCH) микроконтроллер с набором встроенных периферийных устройств. Именно через PCH проходит почти все общение процессора с внешними устройствами, следовательно Intel ME имеет доступ практически ко всем данным на компьютере и возможность исполнения стороннего кода позволяет полностью скомпрометировать платформу. Такие безграничные возможности привлекают исследователей не первый год, но сейчас интерес к технологии Intel ME значительно вырос. Одной из причин этого является переход данной подсистемы на новую аппаратную (x86) и программную (доработанный MINIX в качестве операционной системы) архитектуру. Применение платформы x86 позволяет использовать всю мощь средств анализа бинарного кода, что ранее было затруднительно, так как до 11-й версии использовалось ядро с малораспространенной системой команд — ARC. К сожалению, анализ Intel ME 11-й версии был затруднен тем, что исполняемые модули упакованы кодом Хаффмана с неизвестными таблицами. Но нашей исследовательской группе (Дмитрий Скляров, Марк Ермолов, Максим Горячий) удалось их восстановить (утилиту для распаковки образов можно найти на нашей странице в GitHub).

После распаковки исполняемых модулей мы приступили к изучению программной и аппаратной «начинки» Intel ME. Наша команда занимается этим уже достаточно продолжительное время, и мы накопили большой объем материалов, которые было решено опубликовать. Это первая статья из цикла статей, посвященных внутреннему устройству и особенностям работы Intel ME, и в ней мы расскажем, как отключить основную функциональность подсистемы. Этот вопрос терзает специалистов, так как ее отключение позволило бы снизить риски утечки данных, например в случае обнаружения в этой технологии уязвимости нулевого дня.

Как выключить ME


Как выключить ME — этот вопрос часто задают некоторые владельцы компьютеров x86-архитектуры. Тема деактивации неоднократно поднималась, в том числе и исследователями нашей компании.

Актуальности этому вопросу добавляет недавно обнаруженная критическая (9,8 из 10) уязвимость в Intel Active Management Technology (AMT) — технологии, которая базируется на Intel ME.

Сразу огорчим читателя — полностью выключить ME на современных компьютерах невозможно. Это связано прежде всего с тем, что именно эта технология отвечает за инициализацию, управление энергопотреблением и запуск основного процессора. Сложности добавляет и тот факт, что часть кода «жестко прошита» внутри микросхемы PCH, которая выполняет функции южного моста на современных материнских платах. Основным средством энтузиастов, которые «борются» с данной технологией, является удаление всего «лишнего» из образа flash-памяти при сохранении работоспособности компьютера. Но сделать это не так просто, так как, если встроенный в PCH код не найдет во flash-памяти модули ME или определит, что они повреждены, система запущена не будет. Уже несколько лет в сети развивается проект me_cleaner, в рамках которого доступна специальная утилита, позволяющая удалить большую часть образа и оставить только жизненно необходимые для основной системы компоненты. Но даже если система запустилась, радоваться рано — приблизительно через 30 минут может произойти автоматическое отключение, так как при некоторых сбоях ME переходит в Recovery-режим, в котором не функционирует больше некоторого фиксированного времени. В итоге процесс очистки усложняется. Например, до 11-й версии удавалось уменьшить размер образа до 90 KБ, но в 11-й — уже только до 650 КБ.



Рисунок 1. Поддержка архитектур Skylake+ в me_cleaner

Секреты в QResource


Intel дает производителям материнских плат возможность задать небольшое количество параметров ME. Для этого компания предоставляет производителям оборудования специальный набор программного обеспечения, в который входят такие утилиты, как Flash Image Tool (FIT) для настройки параметров ME и Flash Programming Tool (FPT), реализующая поддержку программирования flash-памяти напрямую через встроенный SPI-контроллер. Данные программы недоступны конечному пользователю, но их без труда можно найти в интернете. Из этих утилит можно извлечь большое количество файлов формата XML (подробное Intel ME: The Way oftheStatic Analysis), изучение которых позволяет узнать много интересного: структуру прошивки ME и описание PCH strap — специальных конфигурационных битов для различных подсистем, интегрированных в микросхему PCH.



Рисунок 2. Упакованные XML-файлы

Нас заинтересовало одно из таких полей с именем «reserve_hap», так как напротив него имелся комментарий — High Assurance Platform (HAP) enable.



Рисунок 3. PCH strap для High Assurance Platform

Поиск в Google не был долгим. Буквально вторая ссылка говорит, что такое название носит программа по созданию доверительных платформ, связанная с Агентством национальной безопасности (АНБ) США. Презентацию с описанием программы можно найти тут. Нашей первой мыслью было поставить этот бит и посмотреть, что будет. Это может сделать любой желающий, если у него есть SPI-программатор или доступ в Flash Descriptor (на многих материнских платах некорректно выставлены права доступа к регионам flash-памяти).



Рисунок 4. Статус ME после активации HAP-бита

После загрузки платформы утилита meinfo сообщает странный статус — Alt Disable Mode. Беглые проверки показали, что ME не отвечает на команды и никак не реагирует на воздействия из операционной системы. Мы решили разобраться, как система переходит в этот режим и что он означает. К этому времени у нас уже была проанализирована основная часть модуля BUP, который отвечает за начальную инициализацию платформы и, исходя из вывода meinfo, устанавливает этот статус. Для понимания алгоритма работы BUP необходимо более подробно описать программное окружение Intel ME.

Программная часть Intel ME 11


Начиная с PCH 100-й серии компания Intel полностью переработала эту микросхему. Был осуществлен переход на новую архитектуру встроенных микроконтроллеров — с ARCompact компании ARC на x86. За основу был выбран 32-битный микроконтроллер Minute IA (MIA), который используется в микрокомпьютерах Intel Edison и SoC Quark. Он основан на дизайне весьма старого, скалярного микропроцессора Intel 486 с добавлением системы команд (ISA) от процессора Pentium. Однако для PCH компания выпускает данное ядро с применением 22-нм полупроводниковой технологии, получая высокую энергоэффективность микроконтроллера. Таких ядер в новом PCH три: Management Engine (ME), Integrated Sensors Hub (ISH) и Innovation Engine (IE). Последние два могут активироваться и деактивироваться в зависимости от модели PCH и целевой платформы, а ME-ядро работает всегда.



Рисунок 5. Три x86-процессора в PCH

Такие глобальные изменения потребовали изменения и программной составляющей ME. В частности, в качестве основы для операционной системы был выбран MINIX (ранее ThreadX RTOS). Теперь прошивка ME включает полноценную операционную систему со своими процессами, потоками, диспетчером памяти, драйвером аппаратных шин, файловой системой и многим другим. В ME интегрирован аппаратный криптопроцессор, поддерживающий алгоритмы SHA256, AES, RSA, HMAС. Доступ к оборудованию для пользовательских процессов производится посредством локальной таблицы дескрипторов (LDT). Через LDT организовано также и адресное пространство процесса — оно является всего лишь частью глобального адресного пространства ядра, границы которого заданы в локальном дескрипторе. Таким образом, ядру не нужно переключаться на память разных процессов (меняя каталоги страниц), как, например, в Microsoft Windows или Linux.

На этом закончим обзор программного окружения Intel ME и рассмотрим более подробно, как происходит загрузка операционной системы и модулей.

Стадии загрузки Intel ME


Запуск начинается с программы ROM, которая содержится во встроенной в PCH статической памяти. К сожалению, способ прочесть или перезаписать эту память широкой общественности не известен, но в интернете можно найти «предпродажные» версии прошивки ME с разделом ROMB (ROM BYPASS), который, по нашему предположению, дублирует функции ROМ. Таким образом, исследуя такие прошивки, можно восстановить основную функциональность программы первичной инициализации.

Изучение ROMB позволяет понять назначение ROM — выполнение начальной инициализации оборудования, например SPI-контроллера, проверка цифровой подписи заголовка раздела FTPR, загрузка модуля RBE, который расположен уже во flash-памяти. RBE, в свою очередь, проверяет контрольные суммы модулей KERNEL, SYSLIB, BUP и передает управление на точку входа в ядро.

Следует заметить, эти три сущности — ROM, RBE и KERNEL — выполняются на нулевом уровне привилегий (в ring-0) ядра MIA.



Рисунок 6. Проверка целостности SYSLIB, KERNEL и BUP в RBE

Первый процесс, который создается ядром, — это BUP, который уже выполняется в своем адресном пространстве, в ring-3. Других процессов ядро по своей инициативе не запускает, этим занимается сам BUP, а также отдельный модуль LOADMGR, к нему вернемся позже. Назначение BUP (platform BringUP) — это инициализация всего аппаратного окружения платформы (в том числе процессора), выполнение первичных функций управления энергопитанием (например, запуск системы по нажатию кнопки включения) и запуск все остальных процессов ME. Таким образом, можно с уверенностью говорить, что PCH в 100-й серии и выше просто физически не имеют возможности запуска без корректной прошивки ME. Во-первых, BUP инициализирует контроллер управления энергопитанием (power management controller, PMC) и ICC-контроллер. Во-вторых — запускает целую вереницу процессов; часть из них «жестко прошита» в коде (SYNCMAN, PM, VFS), а другая часть содержится в InitScript (аналог автозапуска), который хранится в заголовке тома FTPR и защищен цифровой подписью.



Рисунок 7. Запуск SYNCMAN и PM

Таким образом, BUP считывает InitScript и запускает все процессы, которые удовлетворяют типу запуска ME и являются IBL-процессами.



Рисунок 8. Обработка InitScript



Рисунок 9. Список модулей c флагом IBL

В случае если запуск процесса не удался, BUP не будет запускать систему или переведет ее в Recovery режим, в котором произойдет автоматическое отключение питания после нескольких десятков минут. Как можно видеть на иллюстрации, последним в списке IBL-процессов является LOADMGR. Именно он дает старт оставшимся процессам, но в отличие от BUP, если в процессе запуска модуля происходит ошибка, LOADMGR просто перейдет к следующему.

Таким образом, первый вариант ограничить функционирование Intel ME — удалить все модули, которые не имеют флаг IBL в InitScript, что позволит существенно уменьшить размер прошивки. Но первоначально мы хотели выяснить, что происходит с ME в режиме HAP. Для этого рассмотрим программную модель BUP подробнее.



Рисунок 10. Схема запуска модулей в ME

BringUP


Если присмотреться к алгоритму работы модуля BUP, можно сказать, что внутри него реализован классический конечный автомат. Выполнение функционально разделено на две составляющие: стадии инициализации (представляют собой тот самый конечный автомат) и выполнение сервисных запросов других процессов после инициализации системы. Число стадий инициализации разное, в зависимости от платформы и SKU (TXE, CSME, SPS, consumer, corporate), но основные, общие для всех версий, все же можно выделить.

Первая стадия


На начальной стадии происходит создание внутренней диагностической файловой системы sfs (SUSRAM FS — файловая система, расположенная в энергозависимой памяти), считывание конфигурации, и, самое главное, получение информации от PMC о том, что привело к данному старту — включение питания платформы, глобальный перезапуск всей платформы, перезапуск только ME или же пробуждение из состояния сна. Эта стадия называется boot flow determination. От нее зависят последующие стадии работы конечного автомата инициализации. Кроме того, поддерживаются несколько режимов работы: нормальный и набор сервисных режимов, при которых ME штатно не функционирует — HAP, HMRFPO, TEMP_DISABLE, RECOVERY, SAFE_MODE, FW_UPDATE и FD_OVERRIDE.

Вторая стадия


На следующей стадии происходят инициализация ICC-контроллера и загрузка ICC-профиля (отвечает за тактовые частоты основных потребителей), инициализация Boot Guard и начало циклического опроса подтверждения запуска процессора.

Третья стадия


BUP ожидает сообщение от PMC о том, что основной процессор запустился. После этого BUP запускает асинхронный цикл опроса PMC на предмет возникновения событий энергопитания (перезапуск или отключение платформы) и переходит к следующей стадии. Если такое событие произошло, BUP выполнит запрашиваемое действие в момент перехода между стадиями инициализации.

Четвертая стадия


На этой стадии происходит инициализация внутреннего оборудования. Также BUP запускает цикл опроса heci (специального устройства, предназначенного для получения команд от BIOS или операционной системы) на предмет получения DID (DRAM Init Done message) от BIOS. Именно это сообщение позволяет ME понять, что основной BIOS инициализировал оперативную память и зарезервировал для ME специальный регион, UMA, и после этого перейти к следующей стадии.

Пятая стадия


Как только DID получен, BUP, в зависимости от режима работы, который определяется по разным составляющим, либо запускает IBL-процессы из InitScript (при нормальном режиме работы), либо зависает в цикле, выйти из которого он может только при получении сообщения от PMC, например, в результате запроса на перезагрузку или выключение системы.

Именно на этой стадии мы и находим обработку HAP, причем в этом режиме BUP не выполняет InitScript, а зависает. Таким образом, остальная последовательность действий при нормальном режиме работы не имеет отношения к HAP и нами рассматриваться не будет. Главное, что хочется отметить: в режиме HAP BUP выполняет всю инициализацию платформы (ICC, Boot Guard), но не запускает основные процессы ME.



Рисунок 11. Определение режима HAP



Рисунок 12. Перевод ME в пятую стадию, что равноценно зависанию



Рисунок 13. Пятая стадия

Установка HAP-бита


Исходя из вышесказанного, второй вариант отключения состоит в установке HAP-бита и удалении или повреждении всех модулей, кроме тех, которые необходимы BUP для старта — RBE, KERNEL, SYSLIB, BUP. Сделать это можно просто убрав их из CPD-раздела FTPR и пересчитав контрольную сумму заголовка CPD (подробнее структура прошивки ME описана тут).

Остается еще один вопрос: как установить этот бит? Можно воспользоваться конфигурационными файлами FIT и определить, где он расположен в образе, но есть путь проще. Если открыть FIT, то в секции ME Kernel можно найти некий параметр Reserved. Именно этот бит и отвечает за включение режима HAP.



Рисунок 14. Бит активации режима HAP

HAP и Boot Guard


Нами также был найден код в BUP, который при активированном режиме HAP устанавливает дополнительный бит в политиках Boot Guard. К сожалению, выяснить, чем управляет этот бит, нам пока не удалось.



Рисунок 15. Установка дополнительного бита для Boot Guard

Поддержка ME 11 в me_cleaner


Пока эта статья готовилась к печати, разработчики обновили me_cleaner, в результате чего он стал так же удалять из образов все модули, кроме RBE, KERNEL, SYSLIB и BUP, но без установки HAP-бита, что вводит ME в режим «TemporaryDisable». Нам стало любопытно, что происходит при таком подходе.

Мы выяснили, что удаление разделов с файловой системой ME приводит к ошибке при чтении файла cfg_rules. Данный файл содержит ряд различных настроек системы. Среди них, как мы полагаем, есть флаг, который мы назвали «bup_not_temporary_disable». Если он не установлен, вся подсистема переводится в режим TemporaryDisable, а так как этот флаг – глобальная переменная, по умолчанию инициализированная нулем, то ошибка чтения расценивается как конфигурация, требующая отключения.

Отметим также, что мы проверили также прошивки от серверной и мобильной версии ME (SPS 4.x и TXE 3.x). В серверной версии этот флаг всегда устанавливается в 1, а в мобильно не анализируется. Из вышесказанного следует, что данный способ не сможет работать на серверных и мобильных версиях (Apollo Lake) ME.



Рисунок 16. Чтение файла cfg_rules

Вместо заключения


Таким образом, мы нашли недокументированный PCH strap, который позволяет перевести Intel ME в режим отключения на ранней стадии. Хотя физическое удаление модулей из образа с сохранением работоспособности неявно доказывает, что этот режим производит отключение ME, бинарный анализ не оставляет поводов для сомнений. C большой долей уверенности можно сказать, что выйти из этого режима Intel ME уже не в состоянии, так как в модулях RBE, KERNEL и SYSLIB не найдено кода, который позволяля бы это осуществлять. Также мы считаем, что ROM, интегрированный в PCH, практически не отличается от ROMB, в котором тоже не найдено ничего похожего. Таким образом, HAP позволит защититься от уязвимостей, присутствующих во всех модулях, кроме RBE, KERNEL, SYSLIB, ROM и BUP, но, к сожалению, от эксплуатации ошибок на более ранних этапах этот режим не предохранит.

Мы ознакомили представителей Intel с деталями исследования. Их ответ подтвердил нашу догадку о связи недокументированного режима с программой High Assurance Platform. С разрешения компании приведем отрывок из ответа:

Mark/Maxim,
In response to requests from customers with specialized requirements we sometimes explore the modification or disabling of certain features. In this case, the modifications were made at the request of equipment manufacturers in support of their customer’s evaluation of the US government’s “High Assurance Platform” program. These modifications underwent a limited validation cycle and are not an officially supported configuration.
 
Мы полагаем, что данный механизм — удовлетворение обычной просьбы любой правительственной службы, которая хочет уменьшить вероятность утечки по побочным каналам. Но остается главный вопрос: как HAP влияет на функционирование Boot Guard? Из-за закрытости этой технологии ответить на этот вопрос пока не представляется возможным, но мы надеемся, что в скором будущем нам это удастся.

Авторы: Горячий Максим, Ермолов Марк

Комментарии (83)


  1. DenMMM
    28.08.2017 17:24
    -4

    Вопрос: почему общественность занимается разработкой некой утилиты для отключения IME вместо того, чтобы подать в суд на Intel и принудить вырезать ее нафиг / пихать только в платформы для бизнеса?


    1. redmanmale
      28.08.2017 18:02
      +10

      подать в суд на Intel и принудить вырезать ее нафиг

      На каком основании? Всё как обычно, хозяин — барин. Если пользуешься, то соглашаешься с правилами, а коли не согласен — не пользуйся.


      1. pda0
        29.08.2017 00:48
        -3

        На основании судебного решения. Если оно будет, конечно, и будет в пользу истцов. А правило «хозяин — барин» может работать в обе стороны. Хочешь продавать продукцию здесь — подчиняйся нашим правилам. Собственно, оно уже так. Только насчёт скрытой функциональности правила пока нет.


        1. DrPass
          29.08.2017 10:37
          +2

          Если оно будет, конечно, и будет в пользу истцов

          А с чего бы ему быть в пользу истцов? У Intel денег на адвокатов поболе, чем у общественности, а сама IME позиционируется как полезная фича, а не как бэкдор. И начинать тяжбу изначально с такой позиции — дело крайне неблагодарное.


          1. pda0
            29.08.2017 13:53
            -2

            Вы не у джедаев юристконсультантом работает? Тебе не победить, я стою выше у меня больше юристов.

            Это одна сторона будет заявлять, что полезная. Для другой это навязанная услуга/функциональность. (Или что-то аналогичное, в терминах США.) И были сходные прецеденты, когда производитель пытался утверждать, что операционная система является неотъемлемой частью железа компьютера, а браузер — неотъемлемой частью операционной системы. И в обоих случаях выяснилось, что это не так.


            1. DrPass
              29.08.2017 14:34
              +2

              Для другой это навязанная услуга/функциональность.

              Почему? Вас же никто не заставляет покупать именно эти процессоры/чипсеты. На рынке полно других, купите их.
              были сходные прецеденты

              Не было. Вы же, наверное, разницу между «отделить ОС от компьютера», «отделить приложение от ОС» и «отделить узел микросхемы от микросхемы» понимаете? Сам по себе такой иск — это квинтэссенция абсурда. Все равно что устраивать иск к Qualcomm, и требовать разделять их SoC, потому что вам в вашем смартфоне не нужен блютус.
              И если брать ситуацию, например, с Майкрософт и IE, то там вопросы лежали в антимонопольной плоскости. Пользователей возмущала не продажа «ненужного» браузера, а нечестная борьба с альтернативными браузерами.


              1. daggert
                29.08.2017 17:16
                +2

                > Пользователей возмущала не продажа «ненужного» браузера, а нечестная борьба с альтернативными браузерами.

                Давайте будем честными: Пользователей устраивал встроенный браузер и они не смотрели в сторону других и это не устраивало не пользователей, а производителей других браузеров.


                1. pda0
                  30.08.2017 01:37
                  +1

                  Будем. Если бы меньшинство не суетилось, то все бы до сих пор сидели бы на IE 6.


                  1. daggert
                    30.08.2017 11:01

                    Просто победил сильнейший, вот и все. Теперь в качестве дефолтного браузера — chrome, но почему-то всем нормально. Видимо денег не вливает конкурент на «суету меньшинства».


              1. pda0
                30.08.2017 01:37

                На рынке полно других, купите их.

                Ничего необычного. Ещё один человек, который не хочет понимать, что есть рыночные, а есть надрыночные механизмы. И пока одни предлагают голосовать рублём, другие используют и цены и законы против них. Против их интересов.

                Вы же, наверное, разницу между «отделить ОС от компьютера», «отделить приложение от ОС» и «отделить узел микросхемы от микросхемы» понимаете?

                Я всё прекрасно понимаю. Начиная с того, что тогда были такие же аргументы, мол, без операционной системы компьютер бесполезен. Продолжая тем, что в текущей статье чётко показано, что без ME жить таки можно. Что после запуска компьютера её можно полностью отключить. И заканчивая тем, что это микроконтроллер со своей операционкой. А значит требовать можно много чего. Начиная с того, чтобы режим отключения был обязательно доступен и даже активирован по умолчанию (обычным людям он как раз не нужен, а пару ватт по любому жрёт, что в мировом масштабе заметно. привет зелёным.) и кончая тем, что пользователь должен иметь право эту прошивку заменять и модифицировать. А уж на что — это дело пользователя.


                1. DrPass
                  30.08.2017 18:08

                  И пока одни предлагают голосовать рублём, другие используют и цены и законы против них. Против их интересов.

                  Хм. Объясните, пожалуйста, что в этом плохого? Я имею в виду, плохого не с вашей личной точки зрения, а объективно? На любом рынке в сухом остатке есть два интереса, у покупателя интерес получить побольше того, что он хочет, за меньшую цену, у продавца — продать как можно больше того, что он может, за большую цену.
                  Это сугубо противоположные интересы, покупатель и продавец играют друг против друга, а не на одной стороне. Поэтому ваши интересы они как бы и не должны отстаивать, это обычная ситуация.
                  Вы вот где работаете? Ваше предприятие тоже против чьих-то интересов сейчас сражается, честное слово.

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

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


                  1. pda0
                    30.08.2017 22:14

                    Поэтому ваши интересы они как бы и не должны отстаивать, это обычная ситуация.

                    И? Они их и не отстаивают. Они отстаивают свои. А вот мои никто кроме меня не отстаивает. Наоборот все ходят вокруг и удивляются: А чего это я не жру покорно что дают?

                    вы тоже будете сопоставлять?

                    Ещё как буду. «Это сложна, долга и дорога» — стандартная отмазка жадных и ленивых жоп. Когда воодили MNP все опсосы стояли на коленях, рыдали и рвали на голове последние волосы, что технической возможности сделать это нет. И ничего. Оказалось что всё можно. Теперь у нас второй акт того же самого на тему отмены роуминга.

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

                    Это уже не говоря о том, что неизвестно, кого в мире больше, тех, кому эта функция нужна или тех, кого она раздражает.

                    Миллионы мух ошибаться не могут. © По определению. Ну или… Неизвестно кого в мире больше, тех, кто опасается последствий до их наступления, или тех, кто будет ждать, пока их жареный петух в одно место не клюнет. Хотя нет. Известно. Очень даже хорошо известно.


                    1. DrPass
                      30.08.2017 22:19

                      Наоборот все ходят вокруг и удивляются: А чего это я не жру покорно что дают?

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

                      Мне кажется, у вашей жопы просто нет фокуса на какое-то другое, более полезное дело, не для общества, так хоть для вас лично :)


                      1. pda0
                        30.08.2017 23:02

                        Начинаю всерьёз жалеть, что не владею производством матплат. Как они до сих пор не догадались asic встраивать в каждую. С таким-то народом…


        1. avost
          29.08.2017 14:55
          +2

          подать в суд на Intel и принудить вырезать ее нафиг
          На каком основании?
          На основании судебного решения.


          Подать в суд на основании судебного решения? Гм, "чтобы понять рекурсию, надо понять рекурсию". На основании чего будете в суд подавать? "Тут есть какая-то хрень, она мне не нравится, пусть её вырежут"?


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

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


          1. Arekusei
            29.08.2017 16:43

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

            А может стоит отличать невозможность работать без неё, от простого запихивания в неё всего что только можно?
            Они напихали целенаправленно в неё всё это потому оно без этого не может работать.
            Точно так же забавляет как в одной теме про boot guard утвержадили о благах и тыкали пальцем в то что можно прописать зловреда которого потом только отпиливанием чипсета можно удалить. И вроде правы, но вот только есть нюанс связанный с тем что такое сделать можно благодаря этим самым «технологиям защиты».
            Всё это фарс все эти Intel ME, PSP(или как там от AMD) делают не для защиты юзера, а для защиты от юзера.


          1. pda0
            30.08.2017 01:45

            Подать в суд на основании судебного решения?

            Вырезать на основании судебного решения.

            Тут есть какая-то хрень, она мне не нравится, пусть её вырежут

            И? Что не так? Главное основания иметь. А их не мало. Вон, на основании ответа сотрудника Intel следует, что АНБ считает, что работа этой штуки повышает риск утечки данных.

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

            Какие эксперты? Компании Intel? Эксперты в статье? Они другое говорят. Что ME защищается от повреждения прошивки. А не то, что без него работать никак. А как же мы раньше-то жили, когда никто ME в матплаты не пихал.


            1. avost
              30.08.2017 15:17

              Вырезать на основании судебного решения.

              А подать в суд на основании чего? "мы, долбо народ америки, против конкретного технического решения коммерческой компании интел. Заодно требуем, чтобы автомобили выпускались с квадратными колёсами."


              Что не так? Главное основания иметь.

              Не так то, что какие-то хрены с горы решают чему быть и чему не быть в составе коммерческого продукта. Имеешь "основания" — не покупай. Ни кто ж не заставляет. Мне не нравится, что у айфонов пропал аудиоджек, это основание для судебного преследования? Я просто не покупаю айфон. Что не так?
              Подать в суд можно имея основания считать, что в основании тебя нарушен закон. Какой закон в данном случае нарушен?


              Вон, на основании ответа сотрудника Intel следует, что АНБ считает, что работа этой штуки повышает риск утечки данных

              Но это же бред полный. Наличие портов усб очевидным образом повышает риск утечки данных — вырежем их по суду? Видеовыход очень сильно повышает риск утечки данных — вырезать, правда? Сам компьтер является источником повышенного риска утечки данных — запретить? Ну, а основным слабым звеном в системах безопасности, как известно, является человек, человеческий фактор является главной угрозой и риском утечки данных — убить всех человеков?


              эксперты? Компании Intel? Эксперты в статье? Они другое говорят.

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


              А не то, что без него работать никак.

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


              А как же мы раньше-то жили, когда никто ME в матплаты не пихал.

              Вот я и говорю, надо и южный мост судебным решением запретить. Жили же без него. В 1ВМ РС ХТ на i8088 никакого южного моста не было и всё прекрасно работало. Запретить! Вырезать! Риск утечки данных! Галактеко опасносте!


              Зы. Однажды мы купили специально материнку в которой была ме и заявлена вот эта самая возможность удалённого доступа. Два человека пару недель пытались заставить эту фичу заработать. У нас не получилось :). С тех пор мы просто "голосуем ногами". Не нравится технология — ну, не покупайте же.


    1. KonstantinSpb
      28.08.2017 18:12

      Если хотите открытую платформу, покупайте Talos II www.raptorcs.com/content/base/products.html


      1. daggert
        28.08.2017 18:45

        Там только предзаказ…


      1. novoxudonoser
        28.08.2017 19:39

        Как у них с поддержкой Linux и софтом под него? Дрова? Nvidia?


        1. KonstantinSpb
          28.08.2017 19:42

          Linux и прочие опенсурсные ОС поддерживает нормально, если есть поддержка архитектуры Power. Насчет драйвер ГПУ — это интересный вопрос, опенсорсные наверное можно будет портировать, но блобы врятли


          1. novoxudonoser
            28.08.2017 19:48

            вот по вот этой ссылке видно на слайдах gui и 3d игрушку


            1. Arekusei
              29.08.2017 10:27

              В одном из вариантов(где tower предлагается) в комплекте предлагают некий графический ускоритель от AMD.


        1. Laney1
          29.08.2017 09:09
          +1

          проблема этой платформы в том, что нет экосистемы. Железо в теории очень быстрое, вполне на уровне современных Intel, но чтобы раскрыть его возможности, нужно оптимизировать софт. Например, там свои векторные расширения (Altivec вместо SSE и Neon). А так как эти системы после ухода Apple применялись исключительно в IBM-овских серверах, то и список уже оптимизированного софта там соответствующий — базы данных и т.п.


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


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


          1. Lennonenko
            30.08.2017 03:59

            wintel с маками и андроидами тоже не вдруг появились
            и линукс
            и ARM
            да десятки примеров можно найти, когда что-то новое спустя несколько лет становилось общепринятым


      1. VitalKoshalew
        28.08.2017 20:29
        +1

        Собственно, в статье говорится, что Intel в 22-нм чип добавила аж 3 автономных процессора, причём третий (IE) вообще «на всякий случай», мол, может кому пригодится. Почему IBM не может тайно встроить дополнительный процессор для слежки в свои 14-нм чипы?


        1. timdorohin
          29.08.2017 10:27

          Может потому, что процессоры и у Intel находятся в… чипсете? (PCH)
          ru.wikipedia.org/wiki/Platform_Controller_Hub
          en.wikipedia.org/wiki/Intel_Active_Management_Technology#Hardware


          1. VitalKoshalew
            29.08.2017 20:16

            И? У IBM нет чипсета? В процессоре IBM, выпущенном по ещё меньшему техпроцессу, чем чипсет Intel-а, нет места для столь маленького по нынешним временам блока, что Intel может его включать в чипсет пачками? (погуглил: 80486 имел менее 1млн. транзисторов вместе со всеми кэшами; бюджет IBM Power9 — 8000млн. транзисторов)

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

            Intel частично документировал эти закладки и представил «поставщикам платформ» возможность один из трёх модулей-закладок программировать по своему желанию (Innovation Engine). Код ROM, как видно из статьи, Intel до конца не раскрывает.

            Почему IBM (вместе с арабской Globalfoundries) заслуживает большего доверия, чем Intel?


            1. timdorohin
              29.08.2017 21:18

              Весь firmware открыт? Что туда в обход засунуть-то можно?
              en.wikipedia.org/wiki/OpenPOWER_Foundation
              Ах да, вся информация про OpenBMC тоже доступна, и даже на Хабре есть статья:
              habrahabr.ru/company/yadro/blog/317140


              1. VitalKoshalew
                30.08.2017 15:55

                К чему вы это? Я написал, что добавить закладку, похожую на то, что сделал Intel, стоит 1/8000 бюджета транзисторов, то есть было бы желание — вообще не составляет никаких трудностей. В ответ вы мне пишете про официальный firmware.

                Если мы допускаем, что фирмы типа IBM и Intel действительно вставляют шпионские закладки, логично предположить, что они просто не будут включать упоминания об этом ни в какие официальные бумаги и исходные коды — пойдите проверьте, 8000млн. там транзисторов или 8001млн. — времена, когда можно было «спилить» процессор и что-то там понять, давно прошли.

                Я вот уже третье сообщение пытаюсь пояснить, что «открытость» платформы (в терминологии IBM) не имеет никакого отношения к закладкам, пока выпуском занимаются фирмы, которым вы не можете доверять (а если вы можете доверять всей цепочке IBM, Globalfoundries, Raptor Electronics, то почему нельзя доверять Intel и вашему изготовителю материнской платы?).


  1. flatscode
    28.08.2017 17:37

    Добрый день, спасибо за статью!

    Есть пара вопросов:

    1. В статье упомянуто:

    на многих материнских платах некорректно выставлены права доступа к регионам flash-памяти

    какие производители материнских плат, по вашим наблюдениям, делают меньше ошибок при создании и конфигурировании firmware?

    2. Поясните официальную (и, возможно, неофициальную) позицию Intel по поводу раскрытия внутренностей IME. Является ли сокрытие информации элементом «security by obscure» или имеет чисто коммерческие цели?


    1. ptsecurity Автор
      28.08.2017 18:17
      +2

      1. Статистику по ошибкам конфигурации можно найти тут www.blackhat.com/docs/us-17/wednesday/us-17-Matrosov-Betraying-The-BIOS-Where-The-Guardians-Of-The-BIOS-Are-Failing.pdf

      2. В книге Platform Embedded Security Technology Revealed, которая описывает внутренне устройство Intel ME заявляется, что доступ к коду модулей не должен компрометировать систему и не считается угрозой безопасности.


    1. dartraiden
      28.08.2017 20:03
      +1

      Если смотреть с точки зрения безопасности, то вот мнение CodeRush (автора цикла статей на Хабре про безопасность UEFI).

      Лучше всего дело обстоит с мат. платами самой Intel, но их можно сейчас встретить разве что в составе Intel NUC.


      1. h0t_max
        28.08.2017 20:33
        +1

        Можно еще приобрести серверные матери с одним сокетом, но там ECC


        1. navion
          31.08.2017 15:05

          Там по цене недалеко до младших рабочих станций (Precision, ThinkStation) или просто брендовых системников уровня OptiPlex 5050, но в них редко можно поставить нормальную видеокарту из-за слабых БП.


  1. saaivs
    28.08.2017 18:21
    +2

    Я правильно понял, что до того, как загрузилась какая-либо пользовательская операционная система, процессор уже фактически работает под управлением практически полноценной другой ОС (MINIX)?


    1. KonstantinSpb
      28.08.2017 18:25
      +1

      Да


    1. ptsecurity Автор
      28.08.2017 18:29
      +4

      Не совсем так, ME встроен в PCH и на большинстве платформ. Но начинает функционировать до старта основного процессора в момент появления дежурного напряжения.


    1. rogoz
      28.08.2017 18:30
      +4

      Не процессор, а отдельный так сказать сопроцессор, который как я понимаю, имеет доступ ко всему, в том числе к основной памяти.


    1. Lennonenko
      30.08.2017 04:18

      нет, миникс стартует на своём процессоре, являющемся частью чипсета
      процедура в миниксе отдаёт команду на старт процессора и следит за инициализацией его и памяти, если всё в порядке, то управление передаётся им, точнее, загрузчику BIOS


      1. h0t_max
        30.08.2017 11:56

        ME просто снимает с процессора сигнал RESET, если конфигурация его устроила и он уже настроил ICC


    1. Lennonenko
      30.08.2017 04:21

      точнее, команда эта отдаётся после нажатия кнопки POWER, а сам миникс запущен уже после втыкания кабеля питания в системник или подключения аккума к ноутбуку


  1. erwins22
    28.08.2017 18:28
    +1

    Круто, сколько процов запароли?


    1. h0t_max
      28.08.2017 20:28
      +3

      Процессоров ни одного, а вот материнской плате повезло меньше — она лишилась моста (фото в шапке)


  1. KonstantinSpb
    28.08.2017 19:39

    Автор me_cleaner уже в курсе и после тестов выложит новую версию me_cleaner-a


  1. dartraiden
    28.08.2017 19:54

    Отключение этого бита не мешает откатиться «обратно» через Flash Programming Tool?


    1. h0t_max
      28.08.2017 20:31

      FPT шьет напрямую через SPI, проблем быть не должно. Если Вы имеете ввиду сохраняется ли функциональность Flash Descriptor Security Override, то насколько я помню по коду — да.


  1. electronus
    29.08.2017 03:01
    +1

    Вот бы на MIA собрать компьютер для Win95 или DOS


    1. vesper-bot
      29.08.2017 10:18
      +1

      В нем три процессора, как я понимаю — придется ставить 2000ю, или работать на одном. Но было бы здорово — купил мамку без проца, а там бац и дос в прошивке MIA, флэшку с fat32 вставил и гоняй себе диггера. ;)


  1. AndrewTishkin
    29.08.2017 08:51
    +1

    И когда появится однокнопочный выключатель?

    Хотя более интересным было бы нахождение применения этой крошке-ОС для массового пользователя


  1. sotnikdv
    29.08.2017 14:50
    +1

    Я конечно параною и все это еще одна теория заговора и у меня нет никаких доказательств.

    Но выглядит это как мегазакладка. Огромная полноценная ОС в проце, которая имеет доступ ко всему. При этом, формально, она никакой функциональности для пользователей не несет.

    Просто есть, просто работает, просто черный ящик, что там — тайна покрытая мраком.


    1. Lennonenko
      30.08.2017 04:24

      ну да, так и есть
      и этот режим HAP — средство защиты собственных компов ANB
      тут даже паранойи не надо, всё очевидно


  1. April777
    29.08.2017 16:58

    А как на счёт процессоров от AMD? У них же вроде есть аналог ME? На сколько там всё плохо?


    1. h0t_max
      29.08.2017 17:03

      Аналог есть. Насколько все плохо — не знаю, пока мы этим вопросом не занимались;)


      1. April777
        30.08.2017 15:59

        Когда читал про Libreboot выяснилось почему у них поддержка только Core2 процессоров и не выше — так как выпилить ME из более новых процессоров без ущерба в работе не получится. Вот я и надеялся что с AMD ситуация будет получше, а то сидеть на Core2 уже становится всё труднее.


        1. khim
          30.08.2017 17:45
          +1

          Собственно эти ребята и рассказали про «Platform Security Processor» — AMD'шный ответ Intel'у. Точно такой же «блоб» как у Intel'а, наверняка с точно такой же кучей дыр…


    1. khim
      29.08.2017 20:10

      Пока не настолько плохо, как у Intel'а. Но они работают над этим.



    1. JerleShannara
      30.08.2017 18:18

      Есть, в эмбеддеде то года с 12-13 плохо.


  1. icbook
    30.08.2017 09:14

    "с программы ROM, которая содержится во встроенной в PCH статической памяти" — что-то тут с терминологией: так ROM или SRAM?


    1. Arekusei
      30.08.2017 09:58

      А разве тут не имеется ввиду название программы? То есть программа ROM содержится в PCH.


    1. h0t_max
      30.08.2017 11:59

      «ROM» в данном контексте — это программа (модуль), которая содержится в PCH.


  1. icbook
    30.08.2017 10:05

    "программа ROM содержится в RAM" — вряд ли это хороший терминологический поворот.


    1. CodeRush
      30.08.2017 23:13
      +1

      Это ничего еще, NVRAM который лежит на флеше — вот где засада.


      1. icbook
        31.08.2017 07:31

        Я не заметил сей шедевр? :)


  1. mefikru
    30.08.2017 13:06

    Спасибо большое за статью. Помогла. Ребята, вы не пробовали играться с режимом FD_OVERRIDE? Этот режим выставляется аппаратно, с помощью притяжки одной из ножек PCH.


    1. h0t_max
      30.08.2017 13:36

      Не совсем понял вопрос. Насколько я помню, в этом режиме так же происходит отключение ME, но он открывает доступ к дескрипторам flash памяти, что менее безопасно.


      1. mefikru
        30.08.2017 13:47

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


        1. h0t_max
          30.08.2017 13:59

          FD_OVERRIDE сокращение от Flash Descriptor security override, переписывание дескрипторов позволяет, например обновить ME целиком, что на десктопах при штатном обновлении через HECI сделать нельзя.


          1. CodeRush
            30.08.2017 22:48

            Добавлю, что в этом режиме дескриптор и все остальные регионы становятся открытыми на запись, а это в свою очередь весьма нехорошо для безопасности платформы. Использовать этот режим нужно только в случае, если регион ME поврежден и нежно его восстановление, а программатора под рукой нет или подключить его слишком сложно (привет новым системам с флешками в корпусе TFBGA24).


  1. CodeRush
    30.08.2017 23:12
    +1

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



    1. Am0ralist
      31.08.2017 00:47

      Скажите, немного сильно не в тему, а вот как защищают планшеты, чтоб вместо андроида нельзя было вкатать винду и наоборот? Вроде бы все те же биосы, те же уефи (например в йогах ленововских)… В чем засада там пробиться?


      1. JerleShannara
        31.08.2017 13:59

        SecureBoot/BootGuard. Загружаем свои ключи в биос, подписываем ими загрузчик. Жестко включаем сии технологии и готово, то, что не подписано нашими ключами загружено не будет. CodeRush это в своих статьях полностью, подробно и красиво расписал.


        1. Am0ralist
          31.08.2017 15:07

          Но тогда вроде бы бы можно было между одинаковыми железками одного производителя переносить образы? (в тех же йогатабах на андроиде в биос люди попадали и там был выбор грузить ли андроид или винду, однако дальше не получалось, хотя вроде как образы и андроида, и винды есть). Плюс ту же винду то как раз люди на раз сносят и ставят с нуля другую.


          1. sumanai
            31.08.2017 16:03

            Плюс ту же винду то как раз люди на раз сносят и ставят с нуля другую.

            В железку занесены ключи майкрософта, вот она и грузится.


            1. Am0ralist
              31.08.2017 21:59

              То есть надежды на возможность пропатчить биос и сделать нормальный дуалбут — нет?


              1. sumanai
                31.08.2017 22:42

                Кто знает, мало ли там какие дыры. Но с другой стороны они могут быть нафиг никому не нужными, и ломать их никто не будет. Так что результат заранее неизвестен, тут нужно брать модели с уже взломанными прошивками, а лучше вовсе без подобных локов.


                1. Am0ralist
                  31.08.2017 23:02

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


    1. h0t_max
      31.08.2017 13:59

      Большое спасибо! Как я понимаю, еще TPM 2.0 отвалится, который встроен в ME.


  1. April777
    31.08.2017 18:59
    +1

    А что будет если вместо встроенной в материнку NIC использовать сторонний NIC PCI-E или USB? По идее встроенный ME не должен знать как общаться со стронней сетевухой, а значит и внешние атаки на ME не должны пройти.


    1. CodeRush
      02.09.2017 12:47
      +1

      Примерно из этих соображений некоторые компании не используют никакие сетевые карты Intel в своих продуктах.


  1. zedalert
    01.09.2017 12:30

    2001 год — сериал Одинокие стрелки, пилотная серия, миру представлен процессор Octium IV с модулем слежения для АНБ.
    2005 год — Intel представила технологию AMT 1.0 (ныне ME) на чипсетах ICH7 для процессоров Pentium IV/D.