嵌入式系統(tǒng)安全性(上)
由于這些種類數(shù)據(jù)結(jié)構(gòu)的廣泛使用,這是一種相當(dāng)普遍的攻擊方式。所以,在一些任何安全防護(hù)壁壘中,如:系統(tǒng)管理程序,安全內(nèi)核,應(yīng)該盡量少地使用緩存和堆棧,如果能夠完全避免使用它們,那就更好了。
本文引用地址:http://m.butianyuan.cn/article/82062.htm正如我們所指出的,通過破襲正在運(yùn)行系統(tǒng)的組件,可以進(jìn)行大量的控制。然而,當(dāng)系統(tǒng)關(guān)閉時(shí),可以生成大量其它的惡意程序。在一些情況下,侵入者可以在存儲(chǔ)裝置上寫入代碼,比如導(dǎo)入代碼。這就允許侵入者可以更改代碼,使驅(qū)動(dòng)程序在下次導(dǎo)入時(shí)按照攻擊者所希望的方式而不是它原來的設(shè)計(jì)所期望的方式工作。這種進(jìn)攻更有可能是由更高一個(gè)層次的黑客來執(zhí)行的,比如:“了解情況的內(nèi)部人員”。
在整個(gè)程序開發(fā)過程中所使用的設(shè)計(jì)功能,通常是進(jìn)入系統(tǒng)的秘密途徑。聯(lián)合測(cè)試行動(dòng)組(JTAG)標(biāo)準(zhǔn)的端口是一個(gè)邊界掃描端口,可以連接到許多電路板級(jí)和芯片級(jí)的資源上,可以讓攻擊者獲得對(duì)幾乎任何一種敏感資源的控制,更改執(zhí)行流程或執(zhí)行代碼。
通常情況下,是否在交付產(chǎn)品時(shí)提供JTAG端口,是一個(gè)復(fù)雜而難以決斷的問題,這是因?yàn)?,將其取消,就意味著在現(xiàn)場(chǎng)進(jìn)行的調(diào)試變得十分困難,但是,若是保留它,又會(huì)讓系統(tǒng)存在潛在的弱點(diǎn),而極易被擊破。這是一個(gè)很好的例子,它說明,在設(shè)計(jì)過程中,把產(chǎn)品設(shè)計(jì)得盡可能開放有用,而同時(shí)又要封閉可造成危害的途徑,這兩者是相互沖突的。
如果存在一條外部存儲(chǔ)總線,它為攻擊者提供了重要的機(jī)會(huì),并對(duì)安全設(shè)計(jì)來說是一個(gè)重要的挑戰(zhàn)。如果攻擊者可以偵測(cè)外部存儲(chǔ)總線,那么他就有可能形成一個(gè)代碼序列,這個(gè)序列反加到原來的那些總線上后,可以誘騙系統(tǒng)泄漏一些內(nèi)部秘密。這就是我們之前所提到的“重放攻擊”(replay attack)。即使加密的SDRAM,也可由于復(fù)制或回放被選擇的存儲(chǔ)內(nèi)容,而受到這種類型的攻擊。
旁路轉(zhuǎn)換緩沖器(translation lookaside buffer,TLB)是一個(gè)高速緩沖存儲(chǔ)器,它將虛擬內(nèi)存地址轉(zhuǎn)換成物理地址。應(yīng)對(duì)對(duì)這個(gè)子系統(tǒng)進(jìn)行特別嚴(yán)格的審查,這是因?yàn)?,作為系統(tǒng)的一部分,不但對(duì)于系統(tǒng)性能來說很重要,而且也是可被攻擊的弱點(diǎn)。從我們的目標(biāo)出發(fā),主要有兩大類:硬件填充,即集成一個(gè)稱作“硬件表walker”的裝置,以及軟件填充。
對(duì)于具有“硬件表walker”的系統(tǒng)而言,TLB再次填充是在出現(xiàn)TLB丟失時(shí)由硬件自動(dòng)完成的。如果攻擊者具有可以向存儲(chǔ)有MMU描述符表格的存儲(chǔ)器寫入的權(quán)限,那么攻擊者就可以改變表內(nèi)的內(nèi)容,并寫入錯(cuò)誤的轉(zhuǎn)換關(guān)系。這種行為會(huì)產(chǎn)生很多影響,比如產(chǎn)生一個(gè)對(duì)內(nèi)存或敏感裝置的映射。
一個(gè)稍微有些不同的策略適用于具有TLB的軟件填充策略的體系架構(gòu)。MMU和TLB是寄存器控制的,而且需要進(jìn)入優(yōu)先權(quán)才能訪問,但系統(tǒng)仍然存在弱點(diǎn),即執(zhí)行重填入的代碼和該代碼所操作的數(shù)據(jù)都保留在內(nèi)存中,因此容易被惡意的應(yīng)用程序所使用。
在密碼學(xué)中,“旁路攻擊”是基于從加密系統(tǒng)的物理實(shí)現(xiàn)方案所獲取的信息、而非基于理論算法缺陷的任何攻擊行為。眾所周知的攻擊包括定時(shí)攻擊2、功率測(cè)量、輻射監(jiān)測(cè)。在這些攻擊中,功率或輻射特征經(jīng)匯編后,與已知的系統(tǒng)行為相比較,以便找出行為的模式。一旦模式和相應(yīng)的內(nèi)部行為被確定,就可以設(shè)定故障誤注入的時(shí)機(jī)和位置,以使得系統(tǒng)按照需要出現(xiàn)異常。
而一些黑客滿足于他們從SOC封裝之外所了解的信息,為了實(shí)現(xiàn)一些高價(jià)值的目標(biāo)[如電子收款機(jī)系統(tǒng)(POS)終端],我們應(yīng)關(guān)注一個(gè)更現(xiàn)實(shí)的問題,黑客們將會(huì)嘗試將嵌入式器件的封裝去除,來進(jìn)行信號(hào)探查和內(nèi)部存儲(chǔ)的分析。作為這個(gè)方法的第一步,攻擊者,很可能是一個(gè)團(tuán)伙中的一員,會(huì)通過加熱或酸腐蝕來融化芯片的外殼,以便能置入微探針。完成這一步后,器件開始運(yùn)行,黑客嘗試分析模式并測(cè)定弱點(diǎn)。
圖1 描述硬件表Walker攻擊的代碼序列。在初始狀態(tài)下(1),敏感數(shù)據(jù)駐留在內(nèi)部存儲(chǔ)中,無法從虛擬地址空間獲取。攻擊者利用專門的探測(cè)手段,可以直接訪問外部存儲(chǔ),以修改MMU描述符表(2)。當(dāng)應(yīng)當(dāng)進(jìn)行下一次虛擬地址(3)的TLB重填的時(shí)刻到來時(shí),所針對(duì)的數(shù)據(jù)被映射到虛擬地址空間中,從而被攻擊者所截獲
黑客通過使用故障注入的方法,使用能量脈沖、熱量和高頻率,試圖影響正常的系統(tǒng)運(yùn)行。一旦這些方法的某種組合可以將系統(tǒng)驅(qū)動(dòng)到一個(gè)更“有用”的狀態(tài),黑客就能獲得更多的信息,從而進(jìn)一步破壞系統(tǒng)的安全性。
在一種資源可再生的攻擊中,應(yīng)用程序的開發(fā)者已經(jīng)假設(shè),一旦某種資源,如一個(gè)目標(biāo)文件,被刪除,存儲(chǔ)器中資源的內(nèi)容也就會(huì)被刪除了。但實(shí)際情況并不總是這樣,攻擊可以利用這個(gè)情況來掃描存儲(chǔ)器,找到有用的殘留信息。一般而言,在一個(gè)安全的環(huán)境中,用密碼寫的應(yīng)用程序,被用來跟蹤任何包含敏感信息的資源,并在將那些資源返回信息資源池之前將其清除。
然而,在應(yīng)用程序崩潰或外部中止的情況下,那種行為就不能得到保證。即使安全地使用存儲(chǔ)器,緊密地控制資源區(qū),只要在一個(gè)恰當(dāng)時(shí)機(jī)注入故障條件,比如能量脈沖,存儲(chǔ)器中就會(huì)殘留數(shù)據(jù),而這些數(shù)據(jù)隨后將被黑客所盜取。
拒絕服務(wù)型(DoS)攻擊,是試圖通過讓某個(gè)計(jì)算機(jī)的通信通道飽和或者公然強(qiáng)制發(fā)生復(fù)位來阻止計(jì)算機(jī)的資源為其合法用戶所用。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論