Интерфейс встроенного хост-контроллера — Host Embedded Controller Interface
Host Embedded Controller Interface ( HECI ) — это технология, представленная в 2006 году и используемая для технологии активного управления ( AMT ) в наборах микросхем Intel , поддерживающих микропроцессоры Core 2 Duo .
Содержание
подробности
HECI шина позволяет операционной системой (ОС) для непосредственного общения с Management Engine (ME) , встроенный в чипсет . Эта двунаправленная шина с переменной скоростью передачи данных позволяет хосту и ME передавать информацию об управлении системой и события в соответствии со стандартами, по существу заменяя шину управления системой (SMBus). Шина состоит из четырех проводов: пары запроса и разрешения и пары последовательных данных передачи и приема.
Производители оригинального оборудования ( OEM ) исторически предоставляли технологии активного управления с помощью собственных встроенных контроллеров, таких как контроллеры управления основной платой . Эти решения обычно имеют два основных недостатка из-за их патентованной природы. Высокие затраты на спецификации обычно возникают из-за необходимости в дополнительных компонентах и маршрутизации. Высокие затраты на жизненный цикл продукта возникают из-за нестандартной реализации, которая увеличивает затраты на разработку программного и аппаратного обеспечения и проверку, оставаясь при этом относительно негибкой для будущих изменений. С другой стороны, негибкость с HECI еще больше из-за связывания HECI с набором микросхем и необходимости повторной разработки программного обеспечения HECI для каждого другого набора микросхем, в отличие от одного общего программного обеспечения BMC для нескольких наборов микросхем.
HECI и ранее использовавшаяся шина SMBus имеют следующие общие черты: ОС хоста может управлять устройствами управления системой, такими как: встроенные контроллеры вентиляторов, устройства удаленного пробуждения, такие как Wake-on-LAN , устройства питания, такие как Smart Battery Данные . Встроенные функции HECI и сторонние карты управления могут позволить ОС хоста напрямую инициировать события управления (например, удаленное пробуждение или внеполосное регулирование для снижения профиля температуры и мощности) в случае, если HECI поддерживается работающей ОС. Примеры устройств — сетевые карты и видеокарты . Кроме того, как HECI, так и другие технологии ME зависят от производителя набора микросхем / ME.
Сообщения, инициированные хостом
- Прочитать состояние батареи
- Прочитать тепловые данные
- Включение / отключение устройств пробуждения
- Уведомлять устройства об изменении состояния питания (тепловое, производительность или регулирование мощности)
Сообщения, инициированные модулем управления
- Оповещать хост о событии батареи
- Низкий или критический уровень заряда батареи
- Переключение между A / C (розетка) и D / C (аккумулятор)
пример
В качестве примера рассмотрим случай Wake-on-LAN. Традиционно ОС управляет Wake-on-LAN и должна вызывать сторонние драйверы устройств, чтобы включить поддержку на сетевой карте. С шиной HECI хост может подтвердить свою строку запроса (REQ #), ME будет утверждать свою линию предоставления (GNT #), и хост может отправить свое сообщение, используя свой последовательный сигнал передачи. После получения сообщения включения Wake-on-LAN на HECI, ME напрямую включает Wake-on-LAN в интегрированном (или поддерживаемом извне) сетевом устройстве. Без драйверов HECI в ОС функция Wake-on-LAN будет потеряна, даже если стандартные сетевые драйверы смогут ее включить. Это основная проблема в крупномасштабных корпоративных развертываниях со стандартными образами программного обеспечения.
Когда пакет волшебного пробуждения получен устройством LAN, инкапсулированные данные передаются в ME , который имеет свой собственный стек TCP / IP и может декапсулировать пакет. Затем ME подтверждает свою строку запроса (REQ #), хост подтверждает, утверждая предоставление (GNT #), и сообщение передается хосту для инициирования события пробуждения.
С помощью этой технологии волшебный пакет может быть инкапсулирован в пакеты TCP , позволяя пакету проходить через сетевую инфраструктуру через маршрутизаторы и тем самым увеличивая поверхность атаки, чего не позволяет традиционный Wake-on-LAN. Преимущество развертываний, ориентированных на Intel, состоит в том, что для решения не требуются драйверы сторонних производителей. Если взаимодействие между хостом и ME не требуется, HECI и другие технологии ME не зависят от ОС .
HECI что это за драйвер? (Host Embedded Controller Interface)
Всем привет. Поговорим сегодня о таком драйвере как HECI, что вообще такое и для чего я еще не знаю. Но сегодня все выясню! Значит HECI это короткое название, а полное идет такое — Intel AMT Host Embedded Controller Interface. Блин, не так просто обьяснить что это. Короче в системе может быть драйвер AMT. Этот драйвер нужен знаете для чего? Для того чтобы можно было удалять неизвестные драйвера из диспетчера устройств. В первые о таком слышу.. но ладно. Так вот, предыдущая версия драйвера включала в себя два отдельных драйвера — это HECI и LMS/SOL, а потом эти драйвера были обьединены в один какой-то пакет и этот пакет назвали AMT (еще называться может как Intel AMT HECI). Вот как-то так, но все равно не особо понятно…
Вывод можно сделать такой. HECI это какой-то системный драйвер, который нужен для удаления других драйверов. Удалять его я думаю не нужно..
Вот еще читаю, что после установки драйверов HECI какая-то запись PCI Simple Communications Controller примет вид записи Intel Management Engine Interface, не знаю что это значит, непонятно…
Так, вот читаю еще. AMT расшифровывается как Active Management Technology и эта штука есть на чипсетах Intel, которые поддерживают процессоры Core 2 Duo.
Ребята, вот я нашел инфу про HECI, но совсем не понимаю что тут пишется, посмотрите, может вы лучше поймете:

Короче непонятно снова.
Ребята, на этом все, сори инфы больше не могу найти. Я на вашем месте бы не трогал драйвер HECI вообще. Удачи вам!
Intel Content Protection HECI Service — что это за служба? (IntelCpHeciSvc.exe)
Приветствую друзья! Драйвера — это что? Софт для правильной работы устройства, например видеокарты либо звука. И часто с установкой драйверов ставится: основная программа с настройками, сам драйвер и.. еще могут быть службы, дополнительные компоненты. Сегодня мы поговорим про одну такую службу))Intel Content Protection HECI Service — что это такое? (cphs)
Служба, связанная с просмотром защищенного контента DRM (Digital Rights Management, цифровые средства защиты авторских прав). Появляется после установки драйверов на встроенное видеоядро в процессорах Intel (HD Graphics).
Если отключить, то некоторые видео могут не воспроизводиться (например Blu-ray). Но например Ютуб работать будет спокойно, как и обычные скачанные фильмы из интернета (или онлайн).
Работает под процессом IntelCpHeciSvc.exe, который запускается из этой папки:
Еще интересно, что из-за этой службы может не работать прога Netflix.
Некоторые пишут что когда включена — часто идут какие-то обращения к жесткому диску, спящий режим может не работать.
Также оказывается если служба отключена, то не получится поставить драйвер Intel MEI.
Что делать?
Учитывая все — думаю можно службу отключить. Если сомневаетесь, то можете еще создать точку восстановления перед отключением))
Безопасность прошивок на примере подсистемы Intel Management Engine

В предыдущей статье был описан ход исследования безопасности прошивок промышленных коммутаторов. Мы показали, что обнаруженные архитектурные недостатки позволяют легко подделывать образы прошивок, обновлять ими свитчи и исполнять свой код на них (а в некоторых случаях — и на подключающихся к свитчам клиентах). В дополнение, мы описали возможности закрепления внедряемого кода на устройствах. Подчеркнули низкое качество кода прошивок и отсутствие механизмов защиты от эксплуатации бинарных уязвимостей.
Мы обещали привести реальный пример сильной модели безопасности прошивок, где модификация исполнимого кода является очень нетривиальной задачей для потенциального злоумышленника.Встречайте – подсистема Intel Management Engine, самая загадочная составляющая архитектуры современных x86-платформ.
Введение
Для начала, основательно разберёмся в предметной области. Что это такое, откуда и зачем появилось?
В 2005 году компания Intel представила Active Management Technology (AMT) версии 1.0 — решение для удалённого администрирования (управление, инвентаризация, обновление, диагностика, устранение неполадок и т.д.) и защиты десткопных компьютерных систем, своего рода аналог технологии Intelligent Platform Management Interface (IPMI), использующейся в серверах.
[рисунок взят отсюда]- внеполосный (out-of-band) доступ к сетевому интерфейсу (Ethernet), который он разделяет с основным CPU, но, имея собственный контроллер канального уровня, осуществляет мониторинг всего входящего сетевого трафика, из которого «вырезает» (при помощи Packet Filter) пакеты, предназначенные для него. Для ОС (наличие и состояние которой, кстати, на работу AMT никак не влияет) этот трафик уже не виден;
- внутренний веб-сервер с TLS-шифрованием;
- доступ к периферийному оборудованию, получение и хранение в энергонезависимой памяти (там же, где и его прошивка) информации о нём.
А ещё этот микроконтроллер начинает работать при подаче питания на материнскую плату компьютерной системы (т.е. при подключении компьютера к электрической сети, ещё до того, как пользователь нажмёт кнопку Power).
Итак, Management Engine всегда включён, но использование возможностей AMT требует активации (подразумевает задание пароля, сетевых параметров,… ) в BIOS setup, а точнее в MEBx setup:
[скриншот взят отсюда]Похвально, что дефолтный пароль («admin») при первом входе обязательно требуется изменить на новый, удовлетворяющий определённым требованиям: минимум 8 символов, среди которых должны присутствовать хотя бы одна цифра, одна заглавная буква и один спец. символ.
- инвентаризация аппаратного обеспечения;
- веб-интерфейс (по HTTP через порт 16992);
- Serial Over LAN (SOL) – виртуальный COM-порт через сеть, позволяющий включать/перезагружать/выключать компьютер, получать доступ к меню BIOS setup;
- IDE-Redirection (IDE-R) – опция перенаправления загрузки с локального загрузочного устройства на удалённое (предварительно подготовленный образ системы).
AMT 1.0 была реализована на интегрированном в южный мост чипсета (Input/Output Controller Hub, ICH) сетевом модуле Intel 82573E series Gigabit Ethernet Controller.
Затем, в 2006 году, начиная с AMT версии 2.0, микроконтроллер перенесли в северный мост чипсета (Graphics and Memory Controller Hub, GMCH). Именно тогда подсистему наименовали в Intel Management Engine (ME) версии 2.0.
Одновременно с этим появился бренд Intel vPro, который обозначал комплекс реализованных на основе Intel ME технологий: AMT, Trusted Execution Technology (TXT) и Virtualization Technology (VT). Позже в этот список вошли Identity Protection Technology (IPT) и Anti-Theft (AT).
Тогда же Intel ME наделили ещё большим количеством впечатляющих возможностей, среди которых — полный доступ ко всему содержимому оперативной памяти компьютера через внутренний DMA-контроллер, а в дальнейшем появилась возможность мониторинга видеопотока, выводящегося на монитор (правда, только в случае использования встроенного графического ядра).
- часть функций Advanced Control and Power Interface (ACPI) и Alert Standard Format (ASF);
- Quiet System Technology (QST);
- Integrated Clock Control (ICC);
- Trusted Platform Module (TPM);
- .
AMT тоже не стояла на месте и активно развивалась: изменялся состав используемых протоколов (например, добавилась поддержка HTTPS через порт 16993), в версии 6.0 для удалённого администратора появилась фича Remote Desktop, она же KVM (Keyboard Video Mouse), и прочее.
Подробнее про развитие Intel AMT можно почитать здесь.
Тем не менее, из-за высокой стоимости реализации, эта подсистема присутствовала, за несколькими исключениями, только на материнских платах с чипсетами Intel линейки Q:
GMCH ICH ME/AMT version Q965 ICH8 ME 2.x (AMT 2.x) GM965 / GME965 / GL960 / GLE960 / PM965 ICH8M ME 2.5.x (AMT 2.5.x) < — первое появление на ноутбуках Q35 ICH9 ME 3.x (AMT 3.x) GM45 / PM45 ICH9M ME 4.x (AMT 4.x) < — только на ноутбуках Q45 ICH10 ME 5.x (AMT 5.x) Тогда к чему вся эта специфика железа с шильдиком vPro, которое мало кто (в РФ) приобретал ввиду высокой стоимости (ну и других причин)?
Дело в том, что, начиная с 2010 года, вместе с переносом части функциональных блоков северного моста (графическое ядро, контроллер памяти, . ) в корпус CPU, подсистему Intel ME стали встраивать во все чипсеты производства Intel. При этом ME-контроллер остался в корпусе чипсета – в Platform Controller Hub (PCH). Это чипсеты 5 серии и выше.
Итак, хронология последующих версий для десктопов и лаптопов:
PCH ME/AMT version 5 series chipset ME 6.x (AMT 6.x) 6 series chipset ME 7.x (AMT 7.x) 7 series chipset ME 8.x (AMT 8.x) 8 series chipset ME 9.x (AMT 9.x) 9 series chipset ME 9.5.x/10.x (AMT 9.5.x/10.x) 100 series chipset ME 11.x (AMT 11.x) Примечание: функциональность AMT по сей день остаётся доступной только на чипсетах линейки Q, т.е. только на оборудовании с шильдиком vPro.
Думаете только десктопы и ноутбуки? Нет, Intel-а ответ!
Та же участь постигла и серверные платформы от Intel: подсистема встроена в них, но под другим именем — Intel Server Platform Services (SPS). Произошло появление и в SoC (System-on-a-Chip) под именем Intel Trusted Execution Engine (TXE).
В итоге архитектура каждой современной мобильной/лаптопной/дескопной/серверной компьютерной платформы с чипсетом/SoC от Intel включает в себя самую скрытную (от пользователя системы) и привилегированную среду исполнения — подсистему Intel ME. Неудивительно, что разрабатывая эту архитектуру, компания Intel была вынуждена серьёзно поработать над её защитой от компрометации.
Вздохнём и рассмотрим архитектуру этой подсистемы, чтобы разобраться в применённой модели безопасности. Вдруг это поможет успокоиться?
Архитектура Intel ME
Intel Management Engine (ME) – встроенная в компьютерные платформы подсистема, обеспечивающая аппаратно-программную поддержку различных технологий Intel.
Как уже было сказано, первые версии этой подсистемы были основаны на двухкорпусных чипсетах Intel. Тогда в качестве базовой модели ME-контроллера использовался ARCtangent-A4 со стандартной системой команд ARC32.
[рисунок взят из книги 1]В однокорпусных чипсетах уже использовались ARCtangent-A5/ARC600 с компактной системой команд ARCompact (ARC16/32).
[рисунок взят из книги 1]В Intel SoC (там где эта подсистема называется Intel TXE) в качестве базовой модели для ME-контроллера используется SPARC.
ARC-и, SPARC-и какие-то, да? Ревёрсить некомфортно будет!
Ничего страшного, в Intel об этом позаботились: в самых последних платформах (Skylake, чипсеты 100 серии, Intel ME 11.x) ME-контроллер имеет архитектуру… x86!
Да-да, в чипсетах теперь живёт ещё один x86.- ME-контроллер – встроенный в чипсет 32-разрядный микроконтроллер типа RISC, имеющий внутренние ROM и SRAM;
- Регион ME в SPI флэш-памяти, в котором хранится разработанная и подписанная компанией Intel прошивка ME-контроллера (поэтому, именно Intel ME firmware);
- ME UMA – скрытая ото всех, кроме ME-контроллера, область (16 — 32 МБ) в оперативной памяти компьютера, которой он пользуется в качестве runtime-memory для размещения и запуска прошивки;
- Management Engine Interface (MEI), ранее известный как Host Embedded Controller Interface (HECI), – набор регистров в конфигурационном пространстве PCI и область в MMIO, представляющие собой интерфейс для обмена информацией с ME-контроллером (по сути, единственный канал связи софта, исполняющегося на CPU, с подсистемой Intel ME);
- Отдельный MAC – контроллер канального уровня, предоставляющий ME-контроллеру out-of-band доступ к общему физическому сетевому интерфейсу для удалённого администрирования компьютерной системой;
- Некоторые модули в BIOS, отвечающие за инициализацию платформы и сообщающие о результатах своей работы ME-контроллеру через MEI.
В случае наличия шильдика Intel vPro, в состав подсистемы Intel ME дополнительно входит BIOS-модуль ME BIOS Extenstion (MEBx), предоставляющий графический интерфейс (показан выше), а также осуществляющий включение и конфигурирование AMT через MEI.
Таким образом, у нас имеется среда исполнения ring -3 (так её условно называют) — 1 штука. Её привилегированность обуславливается способностями, которыми наделён ME-контроллер (о них написано выше), а скрытность — полным отсутствием возможности контроллировать программными (и даже аппаратными, в production-версиях плат) средствами.

Архитектура ME-контроллера
- ME ROM – энергонезависимая неперезаписываемая память, в которой хранится стартовый код ME-контроллера;
- ME SRAM – оперативная память используемая ME-контроллером при недоступности ME UMA, например, на ранних этапах работы;
- кэш кода и кэш данных, для повышения производительности при работе с памятью;
- C-Link (Controller Link) – шина, позволяющая ME-контроллеру взаимодействовать с периферийным аппаратным обеспечением в режимах S5 (System shutdown) / S3 (Sleep mode);
- Различные аппаратные блоки:
-
- высокоточный таймер и WDT;
- контроллер прерываний;
- контроллеры памяти и DMA;
- интерфейс HECI/MEI;
- RNG, акселлератор криптографических функций и функций сжатия.
[рисунок взят из книги 2]Самое время разобраться в том, как от модификаций защищён код, который управляет всем этим богатством.
Прошивка Intel ME
- 1.5 МБ, урезанные версии;
- 5 МБ, полные версии.
- Bring Up, первый запускаемый модуль из прошивки;
- Kernel, ядро ОСРВ ThreadX;
- Некоторые драйверы и службы.
Общее описание содержимого Intel ME firmware можно найти в книге 2 из списка литературы, но детальнее со структурами (разобраны аналитическим путём) можно ознакомиться, например, в этом скрипте для распаковки прошивок Intel ME.
Пойдём по порядку.
- Flash Descriptors, в котором хранятся указатели на все остальные регионы, а также read/write привилегии для пользователей этой памяти. Отметим, что обычно этими дескприпторами запрещается перезапись ME региона всем, за исключением самого ME-контроллера;
- GbE (Gigabit Ethernet);
- ME, здесь хранится прошивка ME-контроллера;
- BIOS;
- 3PDS (Third Party Data Storage), опциональный регион.
[картинка взята отсюда]Теперь взглянем на сам регион ME, вот пример содержимого из его начала:

Это Flash Partition Table (FPT) — таблица разделов ME firmware. В ней хранятся указатели на различного типа (код, данные, виртуальная область, . ) разделы и их параметры. Целостность этой таблицы контролируется одним байтом чексуммы по смещению 1Bh.
Нас интересуют executable-разделы, т.е. те, что хранят исполнимый код. Их обычно несколько, рассмотрим один из них:

В начале кодового раздела располагается манифест, который состоит из заголовка (со служебными данными и ЭЦП) и таблицы модулей.
В приведённом дампе можно увидеть 2048-битный открытый RSA ключ (модуль по смещению 80h относительно начала раздела и экспонента по смещению 180h). Далее следует 256 байт сигнатуры.Своим закрытым ключом компания Intel подписывает часть заголовка манифеста и таблицу модулей (см. следующий дамп), прикладывая полученную подпись и открытый ключ для проверки.
А вот и фрагмент таблицы модулей рассматриваемого раздела:

Эта таблица содержит заголовки модулей, где указаны некоторые параметры и хеш-сумма SHA256 (по смещению 14h внутри заголовка).
Сгенерировать собственную пару ключей RSA-2048 и подписать ими раздел не получится ввиду того, что целостность приложенного открытого ключа проверяется стартовым кодом в ME ROM, в котором хранится хеш-сумма SHA256 открытого ключа компании Intel.
В итоге, схему верификации кодового раздела ME firmware можно обобщить на рисунке:

Каждый кодовый раздел верифицируется по этой схеме.
Этого более чем достаточно для защиты прошивки от подделывания. Программно перезаписать ME регион SPI флеш-памяти нельзя (помним про разрешения в Flash Descriptors), аппаратные средства, конечно позволят обойти это ограничение, но контроль подлинности не выключить.
Напоследок, посмотрим в сторону защиты от бинарных уязвимостей.
Мы увидели, что весь исполнимый код ME firmware разбит на модули разного назначения:
[рисунок взят из книги 1]У ME-контроллера есть два режима работы: привилегированный и пользовательский (аналоги kernel mode и user mode для CPU). Привилегированный режим отличает, прежде всего, возможность доступа к аппаратным ресурсам и возможность обращения по адресам вне отведённого этому модулю диапазона памяти.
Каждый модуль запускается и работает в заданном (в заголовке этого модуля) режиме.
[рисунок взят из книги 1]Распарсив весь ME регион можно увидеть, что привилегированный режим используется ядром ОСРВ и некоторыми драверами. Службам и прикладными модулям, как и положено, отводится только пользовательский режим.
Заключение
Мы показали, что подсистема Intel ME является неотъемлемой частью архитектуры современных компьютерных платформ (на основе чипсетов/SoC Intel). Очевидно, что её компрометация предоставляет потенциальному злоумышленнику безграничные возможности контроля над платформой: доступ ко всему содержимому оперативной памяти (системная память, память гипервизора, SMRAM, ACRAM, выделяемая память для графического ядра — GFX UMA), out-of-band доступ к сетевому интерфейсу (мониторинг всего сетевого трафика), удалённый контроль как часть штатной функциональности AMT, перезапись любых регионов SPI флеш-памяти. Бонусом к этому является полное отсутствие возможностей обнаружения.
- запрет на использование дефолтного пароля, принуждение к установке сильного пароля (соответствующего определённым требованиям);
- использование функций шифрования в сетевых протоколах;
- контроль целостности и подлинности всего исполнимого кода прошивки;
- механизмы защиты от эксплуатации бинарных уязвимостей.
Заранее прокомментирую возможные призывы использовать компьютерные платформы на основе CPU и чипсетов от AMD: у них есть очень похожая технология, называется Platform Security Processor (PSP). Представлена не так давно, в 2013 году. Про неё пока известно не много, но кое-что можно почитать здесь.
Список литературы
1. A. Kumar, «Active Platform Management Demystified: Unleashing the Power of Intel VPro (TM) Technology», 2009, Intel Press.
2. Xiaoyu Ruan, «Platform Embedded Security Technology Revealed: Safeguarding the Future of Computing with Intel Embedded Security and Management Engine», 2014, APress.