淺談 Malicious Engine

想必不少人之前看到有新聞說 ME 被發現有漏洞,但是又不知道它是什麼,相關的中文資料很少。
這幾天正好想寫點什麼,那就拿這個題材來水一水吧,文筆不好請見諒。

什麼是 ME?

  • Intel ME 是 Intel Management Engine 的簡稱。
  • Intel ME 是一個擁有從底層控制硬件能力的、獨立與處理器和操作系統的框架,它對於操作系統也是隱形的。簡單點說就是擁有極高的權限。其中 Intel Active Management Technology(英特爾主動管理技術)是運行與 ME 框架上的應用的一個例子。
  • Intel ME 被搭載在幾乎所有的 2006 年之後上市出售的 intel 平臺上。硬件部分整合在 CPU 或是主板芯片組內;軟件(固件)部分一般與 BIOS 共存在一個 ROM 芯片中(如果把 ROM 的內容提取出來的話,會發現 ME 固件往往比 BIOS 本身以及 GBE 固件加在一起還大)。

    Found Region Section
    FLREG0:    0x00000000
      Flash Region 0 (Flash Descriptor): 00000000 - 00000fff
    FLREG1:    0x07ff0500
      Flash Region 1 (BIOS): 00500000 - 007fffff
    FLREG2:    0x04ff0003
      Flash Region 2 (Intel ME): 00003000 - 004fffff
    FLREG3:    0x00020001
      Flash Region 3 (GbE): 00001000 - 00002fff
    FLREG4:    0x00001fff
      Flash Region 4 (Platform Data): 00fff000 - 00000fff (unused) (以上是我的 X220 的原版 BIOS的結構信息)
    

在 Linux 平臺上可以使用 intelmetool 來查看 ME 的狀態。
X220_intelmetool (我的 X220 上已經用 me_cleaner 把 ME 閹割了,所以狀態是 Recovery)

Windows 平臺可以使用 MEInfoWin 這個程序來查看,因爲版權問題不在這裏提供下載。
(好吧事實是我也找不到下載地址)

爲什麼 ME 會被認爲不安全?

ME 本身是爲了企業管理用途而存在的,但是存在以下問題,導致我們不得不擔憂它的安全性:

  • ME 擁有高於幾乎所有別的系統組件的權限,也因爲這點有人把它叫做 Ring -3
  • ME 是閉源的,用戶無法審覈它是否足夠安全。
  • ME 幾乎無法被關閉或禁用
  • ME 以及依賴它的組件已經被發現了有漏洞存在(CVE-2017-5689),並且很可能有更多的漏洞等着被發現(畢竟基本不可能一個 Bug 都不存在)。

就像是你的身體裏有個不受你的意識控制,而又有能力控制你的身體,還能窺探甚至影響你的思維的不明物體。
這個不明物體甚至還是有缺陷的,可能會讓別人隨意控制你。

尤其是如果你是自由軟件的狂熱愛好者、會在電腦上處理機密信息或是很重要的隱私,ME 無疑是一個不可忽視的漏洞。

說得陰謀論點,它甚至可能是 Intel 或是美國政府在你的電腦裏留下的後門。

如果你用的是 AuthenticAMD 平臺的機器,那麼自然不用擔心 ME 的存在。然而天下的烏鴉一般黑,一個類似的東西叫 PSP(PlayStation Portable~~ Platform Security Processor),也有差不多的問題存在,只是現在似乎還沒有被公開有漏洞。~~ AMD 的 PSP 可以被用戶禁用。

ME 可能被關閉/禁用麼?

在前面也說了,ME 幾乎不可能被關閉,爲什麼又要寫這一段呢?
ME 的確很難被關閉。它沒有開關,(在 Nehalem 架構之後)如果暴力破壞它的固件,機器會在 30 分鐘內自動斷電或是重啓;至於破壞硬件… 洗洗睡吧。 而且隨着 ME 的一代代更新,ME 覆蓋的範圍越來越廣,最新的 ME 已經接管了硬件初始化;同時還有 Boot Guard 的存在,風險很大。
然而再嚴密的東西也總會有疏漏的地方(墨先生一句話說得好,凡事有可能出岔子,它就會出岔子),幾乎不能被關閉也只是幾乎而已,廣大勞動人民的智慧是無窮的已經有人發現了在部分平臺上禁用它或是讓它失去功能的辦法。
主要有以下思路:

  • 對於 Nehalem 之前的架構,可以通過一點小小的修改來徹底移除。
  • 在不破壞基礎框架的前提下破壞一部分 ME 的組件:
    具體實現是 me_cleaner ,需要使用編程器。它會把 BIOS 裏的 ME 固件裏的一部分非必要組件連同簽名一起移除(具體信息可以看這裏)。
    但是注意,這個方法僅僅只是讓 ME 失去了部分功能(幾乎殘廢了),並不是完美的方法(剩餘的必要部分也可能有問題)。另外要提醒的是,刷 BIOS 有風險,請做好備份。
  • 有人發現了 ME 11(Skylake and above) 的固件裏有個保留位,通過修改它可以做到禁用 ME,具體可以看這裏

現在還沒有任何簡單的方法來移除 ME,僅有的辦法也都需要編程器以及一定的動手技巧,還有刷壞 BIOS 成磚的風險。如果沒有相關經驗,並不怎麼建議移除它。


最後安利一下 coreboot,可以把它理解爲一個開源的 BIOS 實現,官網是 https://coreboot.org 。有能力並且有興趣,而且設備又有適配的話可以試試。

本文的工具和信息不少也是來自 coreboot 項目的,如果喜歡並且方便可以捐贈給他們。

不管怎麼樣,還是希望開源自由的硬件和軟件遲早能夠勝過這些夾雜了私貨的產品,作爲用戶能得到不少好處。

參考資料:

Intel, Active Management Technology 和 Management Engine 是英特爾公司或其子公司在美國和 / 或其他國家(地區)的商標,商標版權歸英特爾公司所有。