Bezzębne Intel Management Engine: ME_cleaner uwalnia komputer od mechanizmu zdalnej kontroli
Od wprowadzenia na rynek ponad 10 lat temu I/O Controller Huba 7,silnik Intel Management Engine (ME), wbudowany w płyty główne dlaprocesorów zgodnych z technologiami Intel vPro, budzi niepokójobrońców prywatności. Wykorzystując koprocesor z bezpośrednimdostępem do interfejsu sieciowego, pozwalaon na sprzętowe zarządzanie komputerem, aktualizację firmware,śledzenie ruchu sieciowego, czytanie plików na dysku, podglądaniezawartości ekranu – a wszystko to poza systemem operacyjnym,sterowane niewolnym, niekontrolowanym przez użytkownika binarnymblobem Intela. Nie wszystko jednak stracone: na GitHubie zadebiutowałpożyteczny projekt, dzięki któremu będzie można zneutralizowaćIntel ME.
W starszych wersjach Management Engine, sprzed 2009 roku, możnabyło mechanizm ten wyłączyć, ustawiając kilka bitów w pamięciflash kontrolera ICH. Następnie firmware sterujące ME mogło zostaćcałkowicie wymazane – i coś takiego na starszych systemach robiąwolne zamienniki, takie jak libreboot. W kolejnych wersjachwprowadzono jednak mechanizm odpowiedzialny za inicjalizację sprzętui zarządzanie energią. Wyszukuje on podpisanego manifestu firmwareME, a jeśli go nie znajdzie, to wyłącza komputer po 30 minutach.
Zrobić z tym cokolwiek wydawało się praktycznie niemożliwe –weryfikacja podpisu sprawiała, że jedyną siłą we wszechświecie,która mogłaby zmienić firmware ME był Intel. Ostatnim gwożdziemdo trumny był wprowadzony w 2013 roku wraz z procesorami Haswellmechanizm Intel Boot Guard. Pozwalał on producentom na wygenerowaniepary kryptograficznych kluczy, z których klucz publiczny byłwgrywany na CPU. Procesor sprawdzał następnie, czy firmwarerozruchowe jest podpisane kluczem producenta, i jeśli nie było, toodmawiał dalszej pracy. Właściwie jedynym sposobem na uniknięcieBoot Guarda było samodzielne zmontowanie sobie peceta.
Na pomoc ze strony Intela w tej sprawie nie było co liczyć.Chipzilla przedstawiała przecież swój mechanizm zdalnegozarządzania jako zaletę, a nieogromne zagrożenie, czemu miałaby je neutralizować? Otwarcie kodufirmware ME nie wchodziło w grę, pełno tu było własnościowychtechnologii firm trzecich, licencjonowanych jedynie przez Intela.Miliardy użytkowników platform Intela były skazane na mogącegodowolnie szpiegować ich binarnego bloba. Na tym tle starania Rosji iChin mające na celu stworzenie własnej platformy sprzętowej stająsię całkiem zrozumiałe.
Zespół hakerów z grupy h4denedzer0 w zeszłym rokuzaprezentowałjednak coś, co było światełkiem w tunelu – metodęneutralizacji Management Engine na platformach Sandy Bridge i Ivy.Wykorzystując modularną architekturę ME, poszukiwano sposobówzablokowania ładowania modułów bez alarmowania intelowegowyłącznika. Przełom nastąpił we wrześniu, kiedy to Todkryto, żeskasowanie pierwszej 4-kilobajtowej strony firmware ME nie wyłączyłojego Thinkpada x230, bez problemu mógł na nim uruchomić Linuksa,hiperwizor Xen i na nim Qubes OS-a. Potem udało się ustalić, żemożna usunąć wszystkie partycje firmware ME za wyjątkiem tej,która zawiera kernel czasu rzeczywistego – i Thinkpad pozostawałfunkcjonalny.
W listopadzie włoscy badacze odkryli zaś, że platforma SandyBridge jest w stanie przyjąć tak spreparowane firmware Intel MEzawierające tylko kernel, nawet bez poprawnej tabeli partycji.Finalnym owocem tego odkrycia jest napisany w Pythonie skryptME_Cleaner. Potrafi on dosłownie „wyrwać zęby” intelowejManagement Engine, praktycznie uniemożliwiając jej interakcje zsystemem. Co najważniejsze, w swojej obecnej postaci działa nietylko z opensource’owym firmware, takim jak Libreboot/Coreboot, alemożna go zastosować też na fabrycznych firmware z urządzeniami,które nie mają Boot Guarda.
ME_Cleaner został z powodzeniem przetestowany na wielu różnychpłytach głównych dla platform od starego Nehalema po nowe Skylake.Z tabelki obrazująca jego skuteczność można sądzić, że już naplatformie Sandy Bridge można całkowicie usunąć wszystkiepartycje oraz wszystkie skompresowane moduły, pozostawiając jedynieniezbędny do niewyłączenia komputera kernel Intel ManagementEngine.
Wszystkie niezbędnej informacje na ten temat, jak i sam skrypt,znajdziecie na stronieprojektu na GitHubie. Skrypt działa automatycznie, skanująctablicę partycji firmware, usuwając zbędne wpisy, flagi, moduły ipoprawiając sumę kontrolną. Po jego użyciu należy komputerfizycznie wyłączyć – i włączyć, z nadzieją, że wszystkopójdzie dobrze. Autor newsa zaryzykował i zneutralizował dziśManagement Engine 9.0 na swoim komputerze (platforma Haswell). Poszłowszystko dobrze, linuksowy kernel załadował się bez żadnychbłędów – niniejsze słowa pisane są już z uwolnionej odbinarnego bloba Intela maszyny. Pamiętajcie jednak, że wszystkietakie operacje na swoich komputerach robicie na własnąodpowiedzialność.