LINUX.ORG.RU

Отлючения Intel ME тред

 , , ,


1

3

К линуксу это имеет немного косвенное отношение, но здешним линуксоидам будет интересно. Авось информация начнёт копиться в одном месте. Немного самонадеянно с моей стороны, но прошу обратить внимание, что это не talks|general, и тред не про вопросы нужности.

Ну, из спортивного интереса и зачатков паранойи я попытался.

Сначала проверим, активен ли Boot Guard. Сделать это можно из под линукса, метод с патченной intelmetool из coreboot. У меня не сработало (error access чего-то там, запускал ессно от рута), но вы по ссылке сходите, там информация о косвенных признаках присутствия Boot Guard, который, суде по ссылке на сатью на хабр выше, может нам испортить всю малину.

В (CS)ME System Tools с форума все утилиты есть для доса и .efi, а FWUpdate и для линукса. Но FIT есть только под винду. Можно ли без неё - хз. Но все туториалы, которые я находил, все опирались на неё. Поэтому далее манипуляции проводил из под винды.

Запустил скачанную с форума под своё железо MEinfo. Она бодро рапортует. Что-то. Если что-то такое, то конкретно вам повезло.

В таком случае, если вы с помощью утилиты flash programming tool (FPT) дампните себе всё (fpt.exe -d image.bin), то всё скорее всего пройдёт без ошибок. Полученный образ будет содержать таблицу-дескриптор, дамп биоса, дамп МЕ, ещё чего-нибудь. Посмотреть на эту таблицу, кстати, можно натравив coreboot'овский ifdtool либо на образ, либо на результат выполнения команды fpt.exe -D desc.bin -DESC (на случай, если МЕ не дампается).

Этот обрах можно редактировать в flash imaging tool (FIT). Всё настраиваете (убрать бут гард, отключить МЕ, поставить HAP-бит, например). Ещё можно взять ME регион, который появляется в папке disassembly в папке с экзешником FIT, и натравить на него me_cleaner (инструкцию как всё правильно сделать находил в интернете). По отчётам, с HAP битом эта процедура не ломает загрузку.

Собственно собранный FIT'ом образ, вроде бы и нужно шить, но я боюсь, что я пропускаю тут какие-то важные нюансы, я так далеко не заходил. Так как мы всё-таки не софт ставим, а аж шьём биос, то я бы разорился на программатор с клипсой и таки снял бы дампы с чипов. Так надёжнее, ибо потенциально можно раскирпичить девайс, плюс много попыток. Правда возможно, там тоже есть свои подводные камни, нужно гуглить.

Если же на этапе проверки бут гарда не повезло, и картинка какая-то такая, то не повезло, и фиг что с ME сделаешь. Наверно. У меня картинка на ноутбуке была как раз такая.

Я не очень шарю во всём этом, могу где-то тупить. Хочу попробовать поменять что-нибудь с помощью setup_var, но никак не могу понять, какие адреса переменных использовать. IFRextract'овский файл содержит VarStoreInfo и VarStore, и я хз, какой адрес использовать. Не знаю, насколько это осмысленно, поэтому прошу не пинать.

Например, тут:

One Of: Me FW Image Re-Flash, VarStoreInfo (VarOffset/VarName): 0x2, VarStore: 0x4, QuestionId: 0x86E
Ясное дело, что нельзя просто написать setup_var 0x2|0x4 0x1, потому что на 0x2 и 0x4 - это явно не то, ведь поискав, находим и другие настройки с VarStore: 0x4 и VarStoreInfo: 0x2

Для примера дамп «скрытого меню» (я хз как в него попасть, был бы рад советам): Section_PE32_image_E6A7A1CE_5881_4B49_80BE_69C91811685C_Setup_body IFR.txt

                                UEFI Protocol Detected
--------------------------------------------------------------------------------


                                String Packages
--------------------------------------------------------------------------------
Offset:		Language:
--------------------------------------------------------------------------------
0x354		en-US (0x0)


                                   Form Sets
--------------------------------------------------------------------------------
Offset:		Title:
--------------------------------------------------------------------------------
0x44E74		Platform Information Menu (0x12CB from string package 0x0)
0x45504		Intel Advanced Menu (0x12DD from string package 0x0)
Интересный кусок
0x5DB4A 		Ref: Firmware Update Configuration, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x864, FormId: 0x1043 {0F 0F 89 03 8A 03 64 08 00 00 FF FF 00 43 10}
0x5DB59 		Gray Out If {19 82}
0x5DB5B 			QuestionId: 0xA17 equals value 0x1 {12 86 17 0A 01 00}
0x5DB61 				QuestionId: 0xA15 equals value 0x1 {12 06 15 0A 01 00}
0x5DB67 				Or {16 02}
0x5DB69 			End {29 02}
0x5DB6B 			One Of: ME State, VarStoreInfo (VarOffset/VarName): 0x2, VarStore: 0x1108, QuestionId: 0x865, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 91 03 92 03 65 08 08 11 02 00 10 10 00 01 00}
0x5DB7C 				One Of Option: Disabled, Value (8 bit): 0x0 {09 07 04 00 00 00 00}
0x5DB83 				One Of Option: Enabled, Value (8 bit): 0x1 (default) {09 07 03 00 30 00 01}
0x5DB8A 			End One Of {29 02}
0x5DB8C 		End If {29 02}
Про возможность писать ME:
0x5DD5A 	Form: Firmware Update Configuration, FormId: 0x1043 {01 86 43 10 89 03}
0x5DD60 		One Of: Me FW Image Re-Flash, VarStoreInfo (VarOffset/VarName): 0x2, VarStore: 0x4, QuestionId: 0x86E, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 8B 03 8C 03 6E 08 04 00 02 00 10 10 00 01 00}
0x5DD71 			One Of Option: Disabled, Value (8 bit): 0x0 (default) {09 07 04 00 30 00 00}
0x5DD78 			One Of Option: Enabled, Value (8 bit): 0x1 {09 07 03 00 00 00 01}
0x5DD7F 		End One Of {29 02}
0x5DD81 		Suppress If {0A 82}
0x5DD83 			QuestionId: 0xA11 equals value 0x3 {12 86 11 0A 03 00}
0x5DD89 				Not {17 02}
0x5DD8B 			End {29 02}
0x5DD8D 			One Of: Local FW Update, VarStoreInfo (VarOffset/VarName): 0x1, VarStore: 0x1108, QuestionId: 0x86F, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 8D 03 8E 03 6F 08 08 11 01 00 10 10 00 01 00}
0x5DD9E 				One Of Option: Disabled, Value (8 bit): 0x0 {09 07 04 00 00 00 00}
0x5DDA5 				One Of Option: Enabled, Value (8 bit): 0x1 (default) {09 07 03 00 30 00 01}
0x5DDAC 			End One Of {29 02}
0x5DDAE 		End If {29 02}
0x5DDB0 	End Form {29 02}

Может, это вообще не то, я целый вечер тыкаюсь почти вслепую.

Для определённости. Использовал биос от ThinkPad P50 (1.46).

К сожалению Thinkpad P50 не поддерживается коребутом - во всяком случае пока - а с коребутом было бы намного, намного проще...

Кстати: допустим, сделаешь ты так чтобы твой UEFI запускался вместе с урезанным Intel ME. А с UEFI малварью, исходники которой к тому же утекли от NSA ко всяким хакирам, что делать будешь? я не сторонник полумер, считаю если обороняться так по полной: не только ME урезать, но и coreboot ставить вместо UEFI и о роутере позаботиться и много ещё чего

Если беспокоиться о безопасности, то нормальных варианта два: 1) ждать пока coreboot выйдет на P50 (или даже помочь в этом) а пока не делать на нём ничего серьёзного 2) продать P50 и взять нормальный Thinkpad из этого списка - https://www.coreboot.org/Supported_Motherboards - например, T430 / T430s / T530 / X230 / S230U (Twist) с процессором Intel третьего поколения Ivy Bridge (есть модификации этих моделей ноутов с i7, если нужна мощь)

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

я не сторонник полумер, считаю если обороняться так по полной

В таком случае, ставить надо LibreBoot, как минимум. Но и это не избавит от проприетарных прошивок устройств (например, SSD) и микрокода в процессоре.

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

В таком случае, ставить надо LibreBoot, как минимум

Согласен. Проблема в том что человек вряд ли согласится на Libreboot ( ноуты там слишком старые ) и на coreboot уговорить намного проще - а чем больше людей сидит на каком-то coreboot'овском железе тем больше вероятность что его в итоге «освободят» и запустят libreboot. SSD с опенсорсной прошивкой кстати существуют - правда дорого стоят : http://www.openssd.io/ , http://www.openssd-project.org/wiki/The_OpenSSD_Project но это и неудивительно, за свободу приходится платить. А микрокод не для всех процессоров нужен, есть AMD которые работают без него

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

человек вряд ли согласится на Libreboot (ноуты там слишком старые)

Вот именно. Но тоже самое можно сказать и про coreboot. Взять, упомянутые выше, T430/T430s/T530. Посредственный TN-дисплей. Шумят и греются, как печки. По меркам 2018 года, это динозавры.

чем больше людей сидит на каком-то coreboot

Боюсь, что число разработчиков это не сильно прибавит.

тем больше вероятность что его в итоге «освободят»

Думаю это больше зависит от возможности вообще это сделать. А возможность эта зависит от производителей железа.

А микрокод не для всех процессоров нужен, есть AMD которые работают без него.

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

xdimquax ★★★ ()

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

Например, поможет ли перепаивание чипа(-ов), прошитых своими руками - или верификацией занимается чипсет. Я не очень внимательно читал статью на хабре, но похоже, что так. То есть тут метаться бесполезно.

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

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

Коребут не нужен

Пельменям он может и не нужен, а свободкофилам вроде меня - очень даже нужен! :) К тому же, если Thinkpad поддерживается коребутом, то его потенциальная стоимость на вторичном рынке (та сумма за которую можно кому-то впарить) значительно возрастает - и поддержка коребутом твоего Thinkpad'а важна хотя бы из этих корыстных соображений

SakuraKun ()
Последнее исправление: SakuraKun (всего исправлений: 3)