日前,美國自由軟件基金會FSF刊文討伐Intel ME引擎會完全控制用戶電腦,而且用戶很可能完全不知情。
FSF在這篇文章中指出,Intel的ME程序?qū)嶋H上相當(dāng)于一個小型、低功耗的電腦系統(tǒng),它由一個或者多個內(nèi)核、內(nèi)存、系統(tǒng)時鐘、總線及用于加密引擎的保留內(nèi)存組成,還有自己的獨立操作系統(tǒng)及程序,可以讀取系統(tǒng)主內(nèi)存,可以通過Intel網(wǎng)絡(luò)控制器連接網(wǎng)絡(luò)。
此外,該文指出Intel ME程序可以完全控制用戶的電腦,它可以控制開機、關(guān)機,讀取所有開放文件、檢查所有已運行的程序、追蹤用戶的鍵盤、鼠標(biāo)動作,甚至還能截屏?,F(xiàn)在,Intel安全部門的首席技術(shù)員Steve Grobman對此事進行了回應(yīng),他表示所謂的“后門”子虛烏有。Steve Grobman稱,這個所謂的“后門”并不是大家想的那個樣子,只是Intel借助推送固件升級的接口而已。
此外,Steve Grobman還表示,及時推送固件生意有助于Intel和OEM廠商為處理器增強防護,這樣反而更安全了。
詳細解讀:什么是CPU的后門
聽聽一位資深工程師告訴你,什么才是CPU的后門。
人們普遍認為,任何一款軟件都可以通過后門被破壞。舉幾個比較有代表性的例子如:Sony/BMG的安裝程序,有個內(nèi)置的后門禁止用戶復(fù)制CD,這個后門也使得惡意的第三方能接管任何安裝了該軟件的機器;三星Galaxy,它有個后門允許調(diào)制解調(diào)器訪問設(shè)備的文件系統(tǒng),這也就允許了任何一個假基站來訪問設(shè)備上的文件;以及Lotus Notes,它有個后門能使加密失敗。
盡管后門多見于FPGA和網(wǎng)絡(luò)設(shè)備,但每當(dāng)有人提起CPU上的后門程序是否可能的時候,大部分情況下大家都會斷言這是不可能的。人們不會斷言CPU后門程序是存在的,但我會斷言,如果有正確的訪問權(quán)限,實現(xiàn)就很容易了。
比方說,你想制造出一個后門。你要怎么做呢?這要分三個環(huán)節(jié):一個CPU后門能做什么,要怎樣才能訪問這個后門,需要什么樣的讓步才能安裝該后門?
從第一個環(huán)節(jié)開始,后門能做什么?這就有很多很多的可能。最簡單的就是提升權(quán)限:使CPU從ring3過渡到ring0或SMM,給正在運行的進程的內(nèi)核級別的權(quán)限。因為它是負責(zé)運行的CPU嘛,完全可以無視硬件和軟件虛擬化。你可以做很多更微妙或更具侵略性的事情,但權(quán)限提升不僅夠簡單,而且夠強大,所以我就不再打算討論其他的選項。
現(xiàn)在你知道了你想要借后門做什么,那么究竟應(yīng)該如何觸發(fā)后門呢?理想情況下,它應(yīng)該既不會被人碰巧運行到,也無法通過暴力尋找到。即使有這樣的限制,可能的觸發(fā)狀態(tài)空間仍舊是巨大的。
讓我們來看一個特定的指令,fyl2x。在正常操作下,它需要兩個浮點寄存器作為輸入,給您2*80=160位(bits)來隱藏一個觸發(fā)器。如果你通過一對特定值來觸發(fā)一個后門,可能相對于隨機篩選更安全些。如果你真的很擔(dān)心后門被人意外發(fā)現(xiàn)或暴力破解掉,你也可以檢查兩個正常輸入寄存器以外的值(畢竟,你控制著整個CPU?。?/p>
這個觸發(fā)器簡單有效,但不足之處是要觸發(fā)它很可能需要運行本機代碼,但你其實不可能讓Chrome或Firefox發(fā)出一個fyl2x指令。通過相對容易地令JavaScript引擎發(fā)出指令(像fadd),你可以嘗試變通地去解決這個問題。與此相對的問題是,如果你想要patch一條add指令,并對它添加一些檢查,它就會顯著地變慢(盡管如此,如果你可以改寫硬件,你應(yīng)該能夠無開銷地完成它)。通過patch一個rep字符串指令,做一些事情來設(shè)置恰當(dāng)?shù)?amp;ldquo;key”,接在塊拷貝(block copy)后面,或者idiv,也有可能可以創(chuàng)造一些難以檢測并可以通過JavaScript來觸發(fā)的后門?;蛘撸绻阋呀?jīng)成功地得到了設(shè)計的副本,你也許可以想出一個辦法,當(dāng)任意一些JavaScript運行的時候,來使用調(diào)試邏輯觸發(fā)器或性能計數(shù)器去引發(fā)一個后門。
好了,現(xiàn)在你已經(jīng)有一個后門了。那么你怎么植入該后門呢?在軟件方面,你可以編輯源代碼或二進制文件。
在硬件方面,如果你有機會到訪問到源,你可以在跟在軟件中一樣容易進行編輯。對硬件重編譯源代碼,建物理芯片,有著極高的固定成本;如果你試圖讓你的更改編入源代碼,你要么犧牲設(shè)計,在一切被發(fā)送去生產(chǎn)之前就植入你的所有更改,要么犧牲生產(chǎn)過程,在最后一刻偷偷植入你的更改。
如果這聽起來太難了,你可以嘗試犧牲補丁機制。多數(shù)現(xiàn)代的CPU配備了一個內(nèi)置的補丁機制,允許事后的bug修復(fù)。你使用的CPU可能早就已經(jīng)被修補過,也許從第一天開始就是,以作為固件更新的一部分的名目。你CPU補丁機制的細節(jié)是嚴格保密的。這很有可能是CPU上被蝕刻了一個公共密鑰,這樣它就只能接受已經(jīng)簽署了正確私鑰的補丁。
這就是實際正在發(fā)生的事嗎?不知道。它可能發(fā)生嗎?當(dāng)然可能。有多大幾率呢?唔,主要的挑戰(zhàn)是非技術(shù)性的,所以我不是那個能給出這個問題答案的人。如果非要猜的話,我會說不是,如果沒有除了容易破壞其它設(shè)備以外的原因的話。
還沒有討論如何制作這樣一個后門:即使有人能夠訪問你用來觸發(fā)后門的軟件,也還是很難發(fā)現(xiàn)它。這更難,但是一旦芯片開始使用內(nèi)置TPM的話,它就應(yīng)該有可能了。
(審核編輯: 滄海一土)
分享