隨著電子裝置擔負的責任越來越多,我們放入蜂窩式電話、媒體播放器、機頂盒以及其他電器的個人信息也越來越多。于是,嵌入式系統的安全性涵蓋了隱私信息保護的方方面面,從在商業終端(POS)上進行的信用卡交易的真實性保護,一直到私人語音郵件的防護。
在這篇調研報告中,我們將回顧最基本的攻擊狀況、系統弱點,并討論最好的防衛策略。我們從硬件、軟件及軟硬件混合的角度來分析系統的強化,比如安全引導、系統管理程序對存儲器的控制。
產品層次的正式安全認證可以具體到某一特定的應用,于是,詳情會被保存得相當隱秘,這也就不難理解了。同樣的,我們也從安全的角度,提出能夠產生有用度量的方法,來決定SOC及系統組件的一般魯棒性和適用性。(注:魯棒性 (robustness)就是系統的健壯性。它是在異常和危險情況下系統生存的關鍵。比如說,計算機軟件在輸入錯誤、磁盤故障、網絡過載或有意攻擊情況下,能否不死機、不崩潰,就是該軟件的魯棒性。)
攻擊狀況分析
知道我們所擔心的是什么,這是很重要的。它們的技巧是什么?它們的資源有幾種?威脅的類型千變萬化,從相對低強度的軟件攻擊—這種攻擊基于一些可在網上新聞組(如:alt.hacker或各種各樣的“warez”站點)找到的軟件—一直到資金充足的工業間諜活動。
攻擊狀況可合乎情理地劃分為如下幾類:
。一個聰明的外部人員:這個人很聰明但對系統的了解卻很有限。他已經可以使用先進程度中等的設備,并可以利用已知的弱點而不是制造新的弱點。
。一個充分了解系統的內部人員:這個人受過專業技術教育并擁有技術方面的經驗。他對系統各個部件的了解程度不同,但是,由于其位置處于“防火墻之后”,他將會獲得具有高度損壞性的詳細資料。這種人可以利用高度專業化的工具和手段進行分析。
。一個有資金支持的組織:一個組織將能夠組建具有技術互補性的專家隊伍。在那個對系統了解充分的內部人可能在某些特定的領域具有專長,而該組織可以通過增加人手來填補這些領域內的空白。他們將有機會使用先進的分析工具和精密的儀器來更改組件。聚焦離子束(FIB)是一種復雜且昂貴設備的技術,可以用來修改集成電路。這種設備遠遠超過大多數個人的使用需要,但是,那些破解有著重要價值的對象的安全防護措施的組織卻要利用該技術。
攻擊
攻擊者技術和能力不同,他們的方法也不同。我們從一些基本可以在分屬各種威脅程度的幾種攻擊方法開始。
一類范圍很寬的軟件的攻擊,依賴于攻擊者在執行環境中獲得足夠的特權,以便能控制和獲取敏感的裝置及數據。例如,在iPhone軟件體系結構的開發過程中,諸如瀏覽器等部分就處于系統的優先層面1。從系統集成的角度來說,這是有道理的。但是使得系統易遭攻擊,因為任何會受到威脅的系統組成部分,可以具有最高權限級別,因此可以訪問大量系統資源。
使用這種方法的最近的一個例子,由Charlie Miller等人在去年夏天公布于眾。通過將一個惡意的HTML文件指向電話的Safari網絡瀏覽器,可以控制對包含敏感信息的存儲區的訪問。這會使電話的Safari網絡瀏覽器崩潰。
在實際應用中,這種攻擊可以通過發含有鏈接的郵件,這樣一個簡單的權宜之計來實現。其中,郵件中鏈接所指的是一個具有惡意HTML的服務器。如果接收者電擊那個鏈接,使用那個攻擊所轉化的安裝程序,接收者就很可能受到攻擊。
從安全的角度來說, DMA(直接存儲器存取)存儲器是一個令人頭疼的問題。它們使用一種強大的機制來迅速而有效地轉移數據,但是它們轉移數據的過程也是大多數系統所無法控制的。如果目標裝置是有DMA能力的,一個惡意的應用程序通過注入代碼和數據或獲取敏感信息,可以完全地搞垮一個系統。DMA控制器,由于它們可以很輕松地進行繞過保護層和訪問存儲器,因此在正在設計的SOC和系統中,必須對其進行一系列詳細的審查。
有一種掠奪普遍使用的數據結構的攻擊方法是緩存器溢出攻擊。這種攻擊普遍利用那些被用來存儲用戶向一個程序所提供的輸入的堆棧,比如說:姓名、住址、電話號碼和其他的典型表格性數據。在正常操作條件下,數據按照操作者的輸入順序,與返回存儲地址一起,存儲在堆棧里。
然而,在一些情況下,應用軟件并不進行適當的檢查,來確定接受到的數據是否超出了所分配的緩沖存儲區域。向緩存中本該操作者輸入數據的區域,傳送尺寸過大的數據,并伴以一段惡意的執行代碼及一個用來覆蓋調用程序的返回地址的地址數據。那個特大的數據導致比堆棧配置空間更大空間的使用,造成緩存溢出。同時,由于地址數據過多的返回地址指向攻擊者的惡意代碼,當功能嘗試返回時,就開始執行黑客在錯誤返回地址所寫的代碼。這種危害已經達成,侵入者掌握了控制權。
一旦攻擊行動成功地將執行代碼放入它的域中,系統水平上的危險度就依賴于賦予被劫持的進程的授權水平。當然,如果被危及的程序在系統中被許可控制的范圍并不寬,那么危害的程度就會相對減小。
由于這些種類數據結構的廣泛使用,這是一種相當普遍的攻擊方式。所以,在一些任何安全防護壁壘中,如:系統管理程序,安全內核,應該盡量少地使用緩存和堆棧,如果能夠完全避免使用它們,那就更好了。
正如我們所指出的,通過破襲正在運行系統的組件,可以進行大量的控制。然而,當系統關閉時,可以生成大量其它的惡意程序。在一些情況下,侵入者可以在存儲裝置上寫入代碼,比如導入代碼。這就允許侵入者可以更改代碼,使驅動程序在下次導入時按照攻擊者所希望的方式而不是它原來的設計所期望的方式工作。這種進攻更有可能是由更高一個層次的黑客來執行的,比如:“了解情況的內部人員”。
在整個程序開發過程中所使用的設計功能,通常是進入系統的秘密途徑。聯合測試行動組(JTAG)標準的端口是一個邊界掃描端口,可以連接到許多電路板級和芯片級的資源上,可以讓攻擊者獲得對幾乎任何一種敏感資源的控制,更改執行流程或執行代碼。
通常情況下,是否在交付產品時提供JTAG端口,是一個復雜而難以決斷的問題,這是因為,將其取消,就意味著在現場進行的調試變得十分困難,但是,若是保留它,又會讓系統存在潛在的弱點,而極易被擊破。這是一個很好的例子,它說明,在設計過程中,把產品設計得盡可能開放有用,而同時又要封閉可造成危害的途徑,這兩者是相互沖突的。
如果存在一條外部存儲總線,它為攻擊者提供了重要的機會,并對安全設計來說是一個重要的挑戰。如果攻擊者可以偵測外部存儲總線,那么他就有可能形成一個代碼序列,這個序列反加到原來的那些總線上后,可以誘騙系統泄漏一些內部秘密。這就是我們之前所提到的“重放攻擊”(replay attack)。即使加密的SDRAM,也可由于復制或回放被選擇的存儲內容,而受到這種類型的攻擊。
旁路轉換緩沖器(translation lookaside buffer,TLB)是一個高速緩沖存儲器,它將虛擬內存地址轉換成物理地址。應對對這個子系統進行特別嚴格的審查,這是因為,作為系統的一部分,不但對于系統性能來說很重要,而且也是可被攻擊的弱點。從我們的目標出發,主要有兩大類:硬件填充,即集成一個稱作“硬件表walker”的裝置,以及軟件填充。
對于具有“硬件表walker”的系統而言,TLB再次填充是在出現TLB丟失時由硬件自動完成的。如果攻擊者具有可以向存儲有MMU描述符表格的存儲器寫入的權限,那么攻擊者就可以改變表內的內容,并寫入錯誤的轉換關系。這種行為會產生很多影響,比如產生一個對內存或敏感裝置的映射。
一個稍微有些不同的策略適用于具有TLB的軟件填充策略的體系架構。MMU和TLB是寄存器控制的,而且需要進入優先權才能訪問,但系統仍然存在弱點,即執行重填入的代碼和該代碼所操作的數據都保留在內存中,因此容易被惡意的應用程序所使用。
在密碼學中,“旁路攻擊”是基于從加密系統的物理實現方案所獲取的信息、而非基于理論算法缺陷的任何攻擊行為。眾所周知的攻擊包括定時攻擊2、功率測量、輻射監測。在這些攻擊中,功率或輻射特征經匯編后,與已知的系統行為相比較,以便找出行為的模式。一旦模式和相應的內部行為被確定,就可以設定故障誤注入的時機和位置,以使得系統按照需要出現異常。
而一些黑客滿足于他們從SOC封裝之外所了解的信息,為了實現一些高價值的目標[如電子收款機系統(POS)終端],我們應關注一個更現實的問題,黑客們將會嘗試將嵌入式器件的封裝去除,來進行信號探查和內部存儲的分析。作為這個方法的第一步,攻擊者,很可能是一個團伙中的一員,會通過加熱或酸腐蝕來融化芯片的外殼,以便能置入微探針。完成這一步后,器件開始運行,黑客嘗試分析模式并測定弱點。
圖 1 描述硬件表Walker攻擊的代碼序列。在初始狀態下(1),敏感數據駐留在內部存儲中,無法從虛擬地址空間獲取。攻擊者利用專門的探測手段,可以直接訪問外部存儲,以修改MMU描述符表(2)。當應當進行下一次虛擬地址(3)的TLB重填的時刻到來時,所針對的數據被映射到虛擬地址空間中,從而被攻擊者所截獲
黑客通過使用故障注入的方法,使用能量脈沖、熱量和高頻率,試圖影響正常的系統運行。一旦這些方法的某種組合可以將系統驅動到一個更“有用”的狀態,黑客就能獲得更多的信息,從而進一步破壞系統的安全性。
在一種資源可再生的攻擊中,應用程序的開發者已經假設,一旦某種資源,如一個目標文件,被刪除,存儲器中資源的內容也就會被刪除了。但實際情況并不總是這樣,攻擊可以利用這個情況來掃描存儲器,找到有用的殘留信息。一般而言,在一個安全的環境中,用密碼寫的應用程序,被用來跟蹤任何包含敏感信息的資源,并在將那些資源返回信息資源池之前將其清除。
然而,在應用程序崩潰或外部中止的情況下,那種行為就不能得到保證。即使安全地使用存儲器,緊密地控制資源區,只要在一個恰當時機注入故障條件,比如能量脈沖,存儲器中就會殘留數據,而這些數據隨后將被黑客所盜取。
拒絕服務型(DoS)攻擊,是試圖通過讓某個計算機的通信通道飽和或者公然強制發生復位來阻止計算機的資源為其合法用戶所用。
在這個分類中,攻擊者可以利用很多途徑,包括命名很有創意性的攻擊狀況,如“Smurf攻擊”。這個攻擊利用配置不好的網絡,這種網絡將對查詢IP廣播地址的“Ping”要求作出回應。這種情況下的“ping”操作,可以誘騙受害人返回其地址。這些網絡就變成了“Smurf 放大器”,產生大量針對受害者的通信流量。這種攻擊并不是什么新鮮招數。對系統管理員來說,配置他們的網絡以拒絕“ping”對廣播地址的請求且不轉移這類信息包,是一件相當簡單的事情。雖然這種方法不再是一個活躍的威脅,但很好地說明了DoS的共同特征,或者,更準確的說,是分布拒絕式服務(DDOS) 攻擊:利用共同的系統特征的漏洞,劫持大量無辜的器件,來放大攻擊所產生的影響,和對目標系統的防護措施的破壞力。
在當前出現的多種攻擊方法中,惡意軟件的分布式攻擊方法已演變為包括高級的軟件機器人或定位于以前所破解的系統中的“bots(木馬)”。這些bot被拴綁在團塊或“botnet(僵尸網絡)”上,協同形成實際DDOS的攻擊。
評論
查看更多