精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SSD上成功地進(jìn)行全系統(tǒng)的本地權(quán)限提升的攻擊的要求

SSDFans ? 來(lái)源:未知 ? 作者:李倩 ? 2018-03-20 09:05 ? 次閱讀

簡(jiǎn)介

Rowhammer表明,基于非物理硬件的攻擊可能具有破壞性。在最近的一篇論文中,Cai等人提出,可以在基于MLC NAND閃存的SSD上執(zhí)行類(lèi)似的攻擊,并且具有潛在的破壞性。在本文中,我們將討論在SSD上成功地進(jìn)行全系統(tǒng)的本地權(quán)限提升的攻擊的要求,并展示基于文件系統(tǒng)的攻擊方法,我們將對(duì)此進(jìn)行演示。 特別地,我們展示了攻擊者可以通過(guò)使用單元與單元之間的干擾獲得攻擊原語(yǔ),因此需要在OS層進(jìn)行精心的設(shè)計(jì)。

前言

在開(kāi)發(fā)軟件時(shí),通常會(huì)抽象出硬件,并將諸如資源隔離等安全保護(hù)視為理所當(dāng)然。 簡(jiǎn)而言之,現(xiàn)代軟件編程幾乎不需要知道底層硬件的復(fù)雜性。

Rowhammer 把硬件的內(nèi)部運(yùn)作引入到我們的注意力中。 Rowhammer利用內(nèi)存管理更深層次的缺陷來(lái)破壞敏感的內(nèi)存區(qū)域。最近的工作表明,這樣一個(gè)非顯而易見(jiàn)的復(fù)雜漏洞可以被利用來(lái)通過(guò)Javascript注入錯(cuò)誤[8],實(shí)現(xiàn)手機(jī)上的權(quán)限升級(jí)[22]或者破壞共同托管的虛擬機(jī)。

但是,DRAM并不是唯一擁有敏感數(shù)據(jù)的地方,這些敏感數(shù)據(jù)對(duì)在軟件中實(shí)施正確的安全保護(hù)是必不可少的。通過(guò)文件系統(tǒng)組織的持久性存儲(chǔ),根據(jù)存儲(chǔ)在磁盤(pán)上的元數(shù)據(jù)授予對(duì)數(shù)據(jù)的訪問(wèn)權(quán)限。在現(xiàn)代計(jì)算機(jī)中,閃存已經(jīng)在很大程度上取代了旋轉(zhuǎn)磁盤(pán)作為主要的永久性存儲(chǔ)介質(zhì)。

Cai等人最近發(fā)表的論文中提出在固態(tài)硬盤(pán)上可能出現(xiàn)類(lèi)似rowhammer的攻擊,但不會(huì)出現(xiàn)實(shí)際的攻擊,我們從系統(tǒng)角度研究這類(lèi)攻擊SSD的可行性。 特別是,我們表明,在對(duì)閃存設(shè)備行為和文件系統(tǒng)使用的真實(shí)假設(shè)下,利用閃存弱點(diǎn)來(lái)升級(jí)本地權(quán)限是可能的(雖然很具有挑戰(zhàn)性)。 我們演示的攻擊不是”全系統(tǒng)”,因?yàn)槲覀儍H僅演示了文件系統(tǒng)層的攻擊,并假定底層閃存介質(zhì)的損壞是可能的。 但是,我們還描述了這種攻擊如何擴(kuò)展到全系統(tǒng)攻擊,我們打算在未來(lái)的工作中展示這種攻擊。

更準(zhǔn)確地說(shuō),我們利用對(duì)SSD(包括ECC)中現(xiàn)有可靠性機(jī)制的了解,證明攻擊者從MLC NAND閃存的缺陷中獲得的attack primitive是粗粒度的損壞:不像在rowhammer中,攻擊者可以翻轉(zhuǎn)單個(gè)bit,在這種攻擊的情況下,攻擊者只能破壞一個(gè)數(shù)據(jù)塊。然后我們證明,這個(gè)較弱的attack primitive(與翻轉(zhuǎn)單個(gè)位相比,這為攻擊者提供了更高級(jí)別的控制)足以導(dǎo)致提升本地權(quán)限的攻擊。

模型:我們假設(shè)被攻擊系統(tǒng)在基于MLC NAND閃存的SSD上運(yùn)行文件系統(tǒng),并假設(shè)攻擊者不具有特權(quán),即被攻擊系統(tǒng)的非root訪問(wèn)。該訪問(wèn)使攻擊者可以通過(guò)文件系統(tǒng)對(duì)系統(tǒng)存儲(chǔ)器進(jìn)行受控寫(xiě)入訪問(wèn)。一個(gè)典型的場(chǎng)景是非特權(quán)用戶(hù)的登錄shell。我們不討論對(duì)被攻擊統(tǒng)的物理訪問(wèn)。

貢獻(xiàn):本文的主要貢獻(xiàn)如下:

(1)我們首次詳細(xì)介紹了如何進(jìn)行完整系統(tǒng)地,基于閃存缺陷的、提升本地特權(quán)的攻擊。

(2)我們將此攻擊在文件系統(tǒng)級(jí)別進(jìn)行了實(shí)施并演示。

(3)我們討論了該攻擊的泛化和限制。

背景介紹

2.1基于硬件的攻擊

表1展示了基于硬件攻擊的分類(lèi)。首先,我們區(qū)分兩個(gè)主要類(lèi)別:物理和非物理攻擊。對(duì)于物理攻擊,需要直接訪問(wèn)系統(tǒng)的硬件。這種攻擊的例子是探測(cè)電壓電平或刮掉硅芯片上的鍍層來(lái)對(duì)其邏輯進(jìn)行逆向工程。少數(shù)相關(guān)的例子使用冷卻劑噴霧和冷啟動(dòng)來(lái)從系統(tǒng)的記憶庫(kù)中泄露敏感信息。另一方面,非物理攻擊仍然利用系統(tǒng)的硬件,但不需要直接訪問(wèn),因此可能更強(qiáng)大。例如,定時(shí)旁路攻擊可以針對(duì)云中的服務(wù)器遠(yuǎn)程執(zhí)行。

在正交層面上,我們區(qū)分危害系統(tǒng)機(jī)密性和完整性的攻擊。危害機(jī)密性的攻擊通常需要讀取原語(yǔ)來(lái)公開(kāi)敏感信息,例如高速緩存旁道攻擊中的關(guān)鍵材料。另一方面,對(duì)系統(tǒng)完整性的攻擊需要寫(xiě)入原語(yǔ)來(lái)主動(dòng)修改和破壞系統(tǒng)的各個(gè)方面以改變其行為。一個(gè)非常突出的例子是drammer [22],它使用rowhammer [10,19]內(nèi)存寫(xiě)入原語(yǔ)在Android上執(zhí)行特權(quán)升級(jí)攻擊 。

本文中顯示的攻擊屬于同一類(lèi)非物理硬件完整性攻擊。

2.2 閃存的缺陷

MLC NAND閃存表現(xiàn)出與介質(zhì)和器件特性相關(guān)的可靠性問(wèn)題。首先,MLC NAND Flash上的重復(fù)編程擦除(P / E)周期會(huì)加重器件的負(fù)載并逐漸使其可靠性變差[23]。其次,單元間干擾(CCI)是閃存頁(yè)面寫(xiě)入期間發(fā)生的另一個(gè)不利影響,并影響NAND器件的可靠性。由于存儲(chǔ)器陣列中相鄰單元之間的電容耦合[12],施加于當(dāng)前正在編程的頁(yè)面單元的編程電壓對(duì)相鄰頁(yè)面單元造成干擾。第三,由于只讀操作的反復(fù)執(zhí)行而導(dǎo)致的閾值電壓不穩(wěn)定,從而造成干擾,導(dǎo)致位錯(cuò)誤數(shù)量的顯著增加[21]。第四,最近的研究已經(jīng)表明,在部分編程的MLC NAND塊中,在頁(yè)面編程完成之前,會(huì)進(jìn)行大量的讀取,剩下的頁(yè)面的誤碼率會(huì)顯著增加[14]。

攻擊者可以利用CCI來(lái)更改被攻擊者閃存頁(yè)面中的信息。這可以通過(guò)使用對(duì)被攻擊的閃存頁(yè)面產(chǎn)生最大干擾的特殊數(shù)據(jù)模式對(duì)相鄰的被攻擊者頁(yè)面進(jìn)行編程來(lái)實(shí)現(xiàn)。由于CCI的性質(zhì),只有少數(shù)單元可以進(jìn)行狀態(tài)轉(zhuǎn)換。 具體而言,CCI可以導(dǎo)致單元狀態(tài)僅轉(zhuǎn)換到較大的閾值電壓。使用CCI,攻擊者可以寫(xiě)入具有最大干擾模式的攻擊閃存頁(yè),以概率的方式對(duì)相鄰受害者頁(yè)面的所有或不同字段的單元進(jìn)行不受控制的隨機(jī)修改。

2.3 閃存可靠性的方法

在閃存控制器級(jí)別,使用兩種機(jī)制來(lái)提高可靠性:擾碼和糾錯(cuò)碼(ECC)。由于某些位模式更可能導(dǎo)致錯(cuò)誤,因此數(shù)據(jù)不會(huì)按原樣寫(xiě)入,而是由擾碼器編碼以減少錯(cuò)誤的方式寫(xiě)入[20]。 通常情況下,數(shù)據(jù)可以通過(guò)與塊地址相關(guān)的位模式簡(jiǎn)單異或。關(guān)于ECC,寫(xiě)入閃存頁(yè)的數(shù)據(jù)被編碼:將冗余位添加到用戶(hù)數(shù)據(jù)中,以確保從閃存讀取的二進(jìn)制序列中存在的錯(cuò)誤可通過(guò)解碼進(jìn)行糾正。閃存存儲(chǔ)系統(tǒng)中使用的編碼字長(zhǎng)度通常在512B到2KB之間。雖然兩種使用最廣泛的編碼是Bose-Chaudhuri-Hocquenghem(BCH)編碼和低密度奇偶校驗(yàn)(LDPC)編碼,但編碼設(shè)計(jì)的確切細(xì)節(jié)是制造商決定的。

全系統(tǒng)攻擊

利用閃存缺陷的本地權(quán)限提升的全系統(tǒng)攻擊需要解決存儲(chǔ)層次結(jié)構(gòu)上不同層面的多重挑戰(zhàn)。即從最低層到最高層:

(1)閃存芯片:?jiǎn)卧g干擾。

(2)閃存控制器:擾碼器和ECC。

(3)SSD控制器:磨損均衡和塊放置算法

(4)操作系統(tǒng):文件系統(tǒng)緩存和錯(cuò)誤檢測(cè)。

(5)用戶(hù):權(quán)限提升。

第1層是攻擊的基礎(chǔ)。正如第2節(jié)所述,以前的工作表明可以在具有特定訪問(wèn)模式的閃存頁(yè)中引起位翻轉(zhuǎn),特別是使用單元間干擾。

Flash社區(qū)早已知道并研究了NAND錯(cuò)誤,并且在SSD可靠性問(wèn)題的背景下,制造商設(shè)計(jì)了閃存和SSD控制器,以降低在實(shí)際使用中發(fā)生此類(lèi)錯(cuò)誤的概率。 實(shí)質(zhì)上,第2層和第3層旨在向操作系統(tǒng)提供沒(méi)有可靠性問(wèn)題的塊設(shè)備的抽象,并以存儲(chǔ)設(shè)備的尋址粒度完美隔離訪問(wèn)。通常在系統(tǒng)安全性方面,這種抽象可能顯示出漏洞。接下來(lái)我們解釋攻擊者可能從這個(gè)漏洞抽象中得到什么攻擊原語(yǔ)。

剩下的挑戰(zhàn)(第4層到第5層)主要在于找到一個(gè)基于文件系統(tǒng)的攻擊矢量,它利用了這個(gè)弱攻擊原語(yǔ),這是本文的主要貢獻(xiàn)。 這種攻擊的總體思路是破壞文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),并準(zhǔn)備新的文件系統(tǒng)并選擇結(jié)構(gòu),這可能導(dǎo)致權(quán)限的提升(在這種情況下,創(chuàng)建SUID根目錄的 shell二進(jìn)制文件)。

我們已經(jīng)探索了多種可能性,并在第4節(jié)中介紹了我們發(fā)現(xiàn)的最佳攻擊方案(就成功概率而言)。

3.1 Attack primitives

系統(tǒng)中ECC編碼/解碼的存在決定了攻擊者所期望的最好的情況是對(duì)flash頁(yè)面/塊的不受控制的隨機(jī)修改。為了理解這一點(diǎn),讓我們考慮一下不同的解碼方法,即通過(guò)將原始位錯(cuò)誤注入閃存頁(yè)面可能會(huì)導(dǎo)致攻擊行為。我們將假設(shè)用戶(hù)數(shù)據(jù)已經(jīng)使用BCH編碼進(jìn)行保護(hù),BCH編碼能夠利用它的碼字(C1)糾正t bit出錯(cuò)。T的值通常非常高(例如,t = 50)。 在引入錯(cuò)誤時(shí),可能會(huì)引發(fā)三種可能的事件:

(1)解碼成功。如果引入的錯(cuò)誤數(shù)小于或等于t,解碼一定成功。

(2)檢測(cè)到解碼失敗。如果注入錯(cuò)誤的數(shù)量嚴(yán)格大于t并且得到的二進(jìn)制向量不在另一個(gè)碼字的解碼半徑內(nèi),則會(huì)發(fā)生此情況。通常,讀取失敗將由系統(tǒng)報(bào)告,系統(tǒng)將處理該失敗操作。

(3)未檢測(cè)到解碼失敗。 當(dāng)注入錯(cuò)誤的數(shù)量嚴(yán)格大于t并且所得到的矢量落入另一個(gè)碼字(C2)的解碼半徑內(nèi)時(shí),會(huì)發(fā)生此情況。如果發(fā)生此情況,則不會(huì)報(bào)告讀取失敗并將損壞的數(shù)據(jù)返回給用戶(hù),就像讀取成功一樣。

圖1說(shuō)明了三種不同類(lèi)型的解碼事件。顯然,成功的攻擊只能利用未檢測(cè)到的解碼失敗的事件。因此,攻擊者必須注入足夠的錯(cuò)誤以將原始回讀模式推入不正確碼字的解碼半徑。 以這種方式,有可能導(dǎo)致真正的數(shù)據(jù)損壞,但是將這種損壞的模式控制到bit級(jí)是不可能的。可以誘發(fā)的損壞模式的集合由可通過(guò)經(jīng)由CCI機(jī)制或以其他方式翻轉(zhuǎn)寫(xiě)入模式中的比特而可達(dá)到的錯(cuò)誤代碼字的數(shù)量來(lái)確定。為了描述和總結(jié)這一點(diǎn),從最強(qiáng)到最弱的可能攻擊原語(yǔ)可能是:

(1)P1:在可控de 位置翻轉(zhuǎn)單個(gè)bit

(2)P2:在塊內(nèi)不可控制地翻轉(zhuǎn)單個(gè)bit

(3)P3:對(duì)塊進(jìn)行無(wú)控制的隨機(jī)修改(高位翻轉(zhuǎn),導(dǎo)致無(wú)法檢測(cè)的解碼失?。?/p>

(4)P4:損壞一個(gè)塊(讀取該塊時(shí)出錯(cuò))

對(duì)于DRAM的rowhammer 是可以實(shí)現(xiàn)P1或P2的,但,由于閃存具備強(qiáng)大的ECC保護(hù), P1和P2在這里不太可能實(shí)現(xiàn)。P4極不可能用于提升權(quán)限的攻擊。 我們將攻擊集中在P3上,這是唯一可能成功實(shí)現(xiàn)的攻擊。

在實(shí)施攻擊時(shí),F(xiàn)TL操作(如磨損均衡和垃圾回收(GC)引起的閃存頁(yè)面的寫(xiě)入)以及塊放置算法必須考慮在內(nèi)。傳統(tǒng)地,F(xiàn)TL執(zhí)行磨損均衡是試圖使所有的塊具有相同的P/E值[5]。由于磨損均衡通常是不經(jīng)常的操作,因此攻擊者可以通過(guò)多次重復(fù)攻擊來(lái)緩解磨損均衡對(duì)攻擊造成的潛在干擾。另一方面,F(xiàn)TL 的GC寫(xiě)入操作在穩(wěn)定的寫(xiě)入工作負(fù)載下可能是用戶(hù)寫(xiě)入數(shù)據(jù)的多倍[1,3],因此占總閃存頁(yè)寫(xiě)入的很大一部分。為了避免GC寫(xiě)入操作對(duì)攻擊造成干擾,攻擊者可以等待足夠的時(shí)間(通常為幾十秒),以便GC操作在攻擊開(kāi)始之前以及完成。這是可能成功的,因?yàn)镾SD通常在閑置時(shí)準(zhǔn)備大量空閑以維持用戶(hù)寫(xiě)入的突發(fā)。

為了在閃存芯片級(jí)別最大化并行性,SSD通常使用塊放置算法,其將到來(lái)的寫(xiě)入操作動(dòng)態(tài)地映射到不同的Flash芯片(例如,以循環(huán)方式)。 這些塊放置算法可以阻止攻擊者的攻擊,因?yàn)閷?xiě)入被攻擊頁(yè)面后立即發(fā)生攻擊頁(yè)面寫(xiě)入,可能不會(huì)發(fā)生在與被攻擊頁(yè)面相同的閃存塊中。為了緩解這一障礙,攻擊者應(yīng)該重復(fù)寫(xiě)入攻擊者頁(yè)面足夠多的時(shí)間,最終使其寫(xiě)入到與被攻擊者頁(yè)面相同的閃存塊中。

3.2 測(cè)試平臺(tái)

我們的測(cè)試平臺(tái),如圖2所示,包含:帶有FPGA和DRAM的PCIe閃存開(kāi)發(fā)板,通用CPU和MLC NAND閃存芯片。NAND閃存的編程,數(shù)據(jù)擾碼器和糾錯(cuò)碼(ECC)都在FPGA中完全實(shí)現(xiàn)。FTL運(yùn)行在FPGA和CPU上。開(kāi)發(fā)板連接到運(yùn)行RHEL 6.7的x86-64服務(wù)器上。我們可以完全控制在開(kāi)發(fā)板上運(yùn)行的硬件和軟件堆棧,以及與設(shè)備通信Linux設(shè)備驅(qū)動(dòng)程序。

在我們的測(cè)試平臺(tái)中使用的MLC NAND芯片在可靠性方面的研究已經(jīng)在之前的工作中有介紹到[14,15,16]。在這項(xiàng)工作的背景下,測(cè)試平臺(tái)已被用于驗(yàn)證我們對(duì)MLC NAND閃存行為的理解

文件系統(tǒng)層攻擊

我們現(xiàn)在詳細(xì)描述攻擊中與文件系統(tǒng)相關(guān)的部分(第4層到第5層)。演示本地權(quán)限提升的視頻:https://www.youtube.com/watch?v=Mnzp1p9Nvw0。成功的攻擊需要滿足以下約束條件:

(1)R1:目標(biāo)塊的數(shù)據(jù)損壞應(yīng)該不會(huì)(或以很低的概率)導(dǎo)致致命的文件系統(tǒng)錯(cuò)誤,從而阻止攻擊并需要管理員干預(yù)。

(2)R2:攻擊目標(biāo)應(yīng)該是經(jīng)常寫(xiě)的塊(為了獲得更大的成功機(jī)會(huì))。理想情況下,寫(xiě)入應(yīng)該由攻擊者觸發(fā)。這是為了允許對(duì)攻擊的第1層到第3層的文件系統(tǒng)攻擊進(jìn)行計(jì)時(shí)。

(3)R3:目標(biāo)塊的數(shù)據(jù)損壞應(yīng)該具有足夠的可能性來(lái)創(chuàng)建可利用的條件。

(4)R4:新緩存應(yīng)該被刷新以強(qiáng)制操作系統(tǒng)訪問(wèn)閃存盤(pán)中的損壞數(shù)據(jù)。

4.1 環(huán)境搭建

我們使用ext3文件系統(tǒng)在Linux上實(shí)施了攻擊,并使用默認(rèn)的安裝選項(xiàng)進(jìn)行安裝。文件系統(tǒng)不需要是根文件系統(tǒng)。我們將在第5節(jié)討論這些假設(shè)在多大程度上可以放寬和推廣。

4.2 攻擊

考慮到攻擊的限制,我們選擇了indirect block作為被攻擊的塊。

ext3 的indirect block是一個(gè)包含數(shù)據(jù)塊指針的文件系統(tǒng)塊大小區(qū)域,每個(gè)大小為4個(gè)字節(jié)。 因此,在4K塊大小的文件系統(tǒng)中,indirect block包含1024個(gè)數(shù)據(jù)塊指針(數(shù)據(jù)塊包含文件內(nèi)容)。 一旦文件大小超過(guò)12個(gè)塊,就會(huì)(通過(guò)內(nèi)核文件系統(tǒng)驅(qū)動(dòng)程序)寫(xiě)入一個(gè)indirect block:因此這個(gè)寫(xiě)入非常容易為攻擊者提供提供觸發(fā)機(jī)會(huì)。

如果攻擊的較低層(第1層到第3層)成功,則indirect block被破壞,對(duì)于indirect block中的1024個(gè)數(shù)據(jù)指針中的每一個(gè),有三種可能的結(jié)果。

(1)32位數(shù)據(jù)指針可指向文件系統(tǒng)內(nèi)部的一個(gè)”interesting block”(例如,inode table,root ssh私鑰文件,root使用的重要二進(jìn)制文件):這是唯一可利用的條件。

(2)32位數(shù)據(jù)指針可指向文件系統(tǒng)內(nèi)的”uninteresting block “,例如已經(jīng)屬于攻擊用戶(hù)的文件中的數(shù)據(jù)塊。

(3)32位數(shù)據(jù)指針可指向文件系統(tǒng)外部的塊(即:塊號(hào)≥文件系統(tǒng)上的塊數(shù))。 在這種情況下,攻擊是不可利用的。 但是,幸運(yùn)的是,文件系統(tǒng)內(nèi)核驅(qū)動(dòng)程序只會(huì)為相應(yīng)的數(shù)據(jù)訪問(wèn)返回一個(gè)錯(cuò)誤:后續(xù)使用相同indirect block的訪問(wèn)仍然可以成功。 如果1024個(gè)損壞塊中的任何一個(gè)指向一個(gè)interesting block的塊,驅(qū)動(dòng)程序的這種行為對(duì)攻擊是有效的,這大大增加了攻擊的成功概率。

假設(shè)被損壞的指針指向一個(gè)inode表(可利用的條件)。 然后,攻擊者可以通過(guò)簡(jiǎn)單地寫(xiě)入攻擊文件(受攻擊者控制)來(lái)創(chuàng)建(或修改)一個(gè) root 用戶(hù)所有的inode。 然后,攻擊者將這個(gè)inode的數(shù)據(jù)塊指針指向一個(gè)shell的數(shù)據(jù)塊,最后通過(guò)執(zhí)行攻擊文件(現(xiàn)在是一個(gè)SUID-root shell,這需要SUID-root shell對(duì)應(yīng)的inod從緩存中刷新)來(lái)提升權(quán)限,如圖3所示。

我們已經(jīng)證明了R1是符合要求的,因?yàn)殡S機(jī)地破壞indirect block不會(huì)導(dǎo)致致命的錯(cuò)誤。 R2也是符合的,因?yàn)楣粽哂|發(fā)indirect block指針的寫(xiě)入(通過(guò)簡(jiǎn)單地向文件中寫(xiě)入足夠的字節(jié))。我們現(xiàn)在表明,R3約束(創(chuàng)造充分可利用的條件的概率)也得到了滿足。

單個(gè)數(shù)據(jù)指針指向interesting block的概率是p1:

并且任何1/4的塊大小的攻擊指針指向interesting block的概率是p2:

假設(shè)只有inode表對(duì)于攻擊者而言是”有趣的”,并且具有4 KB塊大小的100 GB文件系統(tǒng),每個(gè)inode(缺省值為/etc/mke2fs.conf)16384字節(jié)的inode比率為:

因此,假設(shè)攻擊者在indirect inode成功地使一個(gè)數(shù)據(jù)塊崩潰,權(quán)限提升攻擊將將有9%的概率會(huì)成功。 因此,我們認(rèn)為R3比較符合。

最后,我們展示緩存可以被攻擊者刷新(R4)。攻擊者需要在兩個(gè)不同的時(shí)間刷新緩存:為了覆蓋inode表內(nèi)容,并執(zhí)行新創(chuàng)建的SUID-root shell。在第一種情況下,應(yīng)從緩存中剔除出的緩存數(shù)據(jù)是indirect block,在第二種情況下,是inode。攻擊者自然可以采取兩種策略:被動(dòng)或主動(dòng)攻擊。被動(dòng)地,攻擊者可以等待文件系統(tǒng)被重新安裝(例如,在重新啟動(dòng)時(shí)),或者系統(tǒng)上的并發(fā)活動(dòng)導(dǎo)致足夠的內(nèi)存壓力,以從緩存中驅(qū)逐間接塊以及隨后的inode。主動(dòng)攻擊者觸發(fā)的路由包括創(chuàng)建內(nèi)存壓力:攻擊者只是使用程序分配足夠的內(nèi)存,從而鼓勵(lì)操作系統(tǒng)從緩存中逐出文件系統(tǒng)元數(shù)據(jù)。這是我們?cè)谘菔局胁捎玫姆椒ā?(這種方法的有效性可能會(huì)因VFS和頁(yè)面緩存設(shè)置的不同而不同,但在我們的攻擊中,RHEL 6.7的默認(rèn)設(shè)置是驅(qū)逐有效的)。

4.3 細(xì)節(jié)探索

我們現(xiàn)在討論在實(shí)際過(guò)程中出現(xiàn)的一些細(xì)節(jié),但不是攻擊的核心。

首先,從上面的描述可以看出,攻擊者需要知道一個(gè)root shell的數(shù)據(jù)塊號(hào)。 盡管可以通過(guò)從inode表讀取(通過(guò)被攻擊文件)并識(shí)別shell(例如通過(guò)時(shí)間戳或文件大?。﹣?lái)查找,但這是不太可能的,因?yàn)閕node表的可讀部分不太可能包含root shell。 一個(gè)更簡(jiǎn)單的替代方案是攻擊者首先通過(guò)在目標(biāo)文件中創(chuàng)建一個(gè)shell的副本,從而讓文件系統(tǒng)創(chuàng)建并設(shè)置數(shù)據(jù)塊指針,然后設(shè)置SUID位并通過(guò)直接寫(xiě)入inode table的方式使文件為root所有。

其次,攻擊者需要能夠識(shí)別破壞是否成功,即indirect block指針指向inode table的某處而不是其他地方。 實(shí)際上,由于inode表的結(jié)構(gòu),這很容易實(shí)現(xiàn)(例如,具有默認(rèn)權(quán)限的常規(guī)文件的標(biāo)記每256個(gè)字節(jié)重復(fù)一次)。

第三,攻擊者可以覆蓋現(xiàn)有的inode或?qū)⒁獎(jiǎng)?chuàng)建的文件的inode。 如果攻擊者對(duì)其可以創(chuàng)建的文件數(shù)量沒(méi)有限制(這通常是大多數(shù)Linux發(fā)行版的默認(rèn)設(shè)置),我們可以假設(shè)我們始終處于前一種情況。 然后,攻擊者不停創(chuàng)建文件,直到文件系統(tǒng)用完inode(所有inode表已滿),然后在文件系統(tǒng)中搜索(例如,使用find)一個(gè)SUIDroot文件并執(zhí)行它:這是在我們的演示中完成的一個(gè)攻擊方式。 在攻擊者可以創(chuàng)建的文件數(shù)量上有限制的情況下,雖然我們還沒(méi)有嘗試過(guò),攻擊仍然是可能的(通過(guò)刪除文件,等待inode重新分配給其他用戶(hù)并創(chuàng)建新文件,直到目標(biāo)inode被分配給攻擊者)。

最后,攻擊者可能無(wú)法通過(guò)文件系統(tǒng)訪問(wèn)現(xiàn)有的inode(例如,它位于攻擊者無(wú)法訪問(wèn)的子目錄中)。在實(shí)踐中,這僅僅意味著interesting block的數(shù)量低于等式3中計(jì)算的塊數(shù)。

4.4 Improved attack using double indirect blocks

針對(duì)double indirect block的破壞而非indirect block的破壞可以執(zhí)行非常類(lèi)似的攻擊。 盡管這種攻擊稍微難以解釋?zhuān)晒Φ目赡苄愿吆投腋`活(對(duì)整個(gè)文件系統(tǒng)具有完全的讀寫(xiě)能力:請(qǐng)注意,這仍然會(huì)通過(guò)創(chuàng)建SUID-root文件來(lái)提升權(quán)限)。

double indirect block中的每個(gè)4字節(jié)指針都指向一個(gè)indirect block。 因此,破壞double indirect block可能導(dǎo)致攻擊者完全控制indirect block的內(nèi)容。 通過(guò)選擇indirect block中的指針,攻擊者可以讀寫(xiě)文件系統(tǒng)中的任意位置。

這里的可利用條件是double indirect block中的一個(gè)指針指向攻擊者擁有的塊。 例如,攻擊者可以在文件系統(tǒng)上創(chuàng)建一個(gè)非常大的文件(跨越多個(gè)塊),以增加某個(gè)受損指針受到攻擊的可能性。 一旦發(fā)生破壞,攻擊者可以通過(guò)用文件系統(tǒng)超級(jí)塊的地址(固定塊號(hào)和可識(shí)別的格式)填充大文件來(lái)驗(yàn)證他們是否擁有indirect block。 然后,攻擊者可以通過(guò)讀寫(xiě)目標(biāo)文件來(lái)修改大文件的內(nèi)容以訪問(wèn)文件系統(tǒng)上的任何塊:通過(guò)寫(xiě)入大文件來(lái)控制寫(xiě)或讀訪問(wèn)的位置(控制indirect block內(nèi)容),通過(guò)訪問(wèn)目標(biāo)文件來(lái)控制訪問(wèn)內(nèi)容。

假設(shè)攻擊者可以在一個(gè)塊大小為4 KB的ext3文件系統(tǒng)中創(chuàng)建一個(gè)100 GB的文件(這是合理的假設(shè)),這種改進(jìn)使攻擊的成功概率為99.7%(通過(guò)使用公式2獲得)。 這是因?yàn)閕nteresting block的數(shù)量大大增加。

討論

5.1 其他文件系統(tǒng)

盡管第4節(jié)中描述的攻擊的很多部分可以被推廣,但仍然依賴(lài)于使用indirect block的文件系統(tǒng),如ext3,ext2和某些版本的Unix文件系統(tǒng)(UFS1)。ext4文件系統(tǒng)使用擴(kuò)展(還要NTFS),從本質(zhì)上將數(shù)據(jù)塊描述為一個(gè)元組(起始文件塊,起始磁盤(pán)塊,塊數(shù))。 盡管在ext4中可能有一個(gè)”extent block”(超過(guò)3個(gè)extents,ext4開(kāi)始在inode之外的新的塊中存儲(chǔ)extents,從而啟動(dòng)樹(shù)結(jié)構(gòu)),但我們相信攻擊的成功的概率會(huì)很低,因?yàn)閑xtents的結(jié)構(gòu)更大(即,ext4解析器不會(huì)捕獲到隨機(jī)破壞的可能性很小):ext4通常使用48位的塊編號(hào)空間,而不是ext3的32位)。 因此,這種攻擊對(duì)其他文件系統(tǒng)是否仍然可行還有待觀察。

5.2 元數(shù)據(jù)checksums

另外,某些文件系統(tǒng)(如ZFS和ext4(但不包括ext3))可以選擇使用元數(shù)據(jù)校驗(yàn)和。 顯然,文件系統(tǒng)元數(shù)據(jù)校驗(yàn)和,無(wú)論它們是否使用加密哈希,都可以通過(guò)內(nèi)核文件系統(tǒng)驅(qū)動(dòng)程序檢測(cè)到文件系統(tǒng)元數(shù)據(jù)(例如,inode或范圍)已被損壞從而顯著降低攻擊的成功概率。

最后,我們?cè)趇ndirect block損壞后運(yùn)行e2fsck(一種檢查(和更正)ext3文件系統(tǒng)元數(shù)據(jù)的工具)。如預(yù)期的那樣,e2fsck成功檢測(cè)到文件系統(tǒng)元數(shù)據(jù)已損壞,這將使得管理員檢測(cè)到此攻擊。 當(dāng)然,e2fsck很少運(yùn)行,為了阻止攻擊,它需要在攻擊者獲得root權(quán)限并能夠糾正文件系統(tǒng)元數(shù)據(jù)之前運(yùn)行。

5.3 其他攻擊

任何直接或間接訪問(wèn)SSD的程序(廣義上講)都可能成為在SSD上進(jìn)行的非物理的完整性攻擊的目標(biāo)。 在本文中,我們考慮了文件系統(tǒng),但其他攻擊媒介也可能存在。

不幸的是,由于攻擊者獲得的P3的限制以及攻擊的其他限制(R1至R4),我們無(wú)法找到另一個(gè)真實(shí)世界的很可能會(huì)被用于特權(quán)升級(jí)的程序。 然而,我們不能排除這種可能性的存在,需要在這方面進(jìn)行進(jìn)一步的研究。

最后,作為一個(gè)類(lèi)似于rowhammer 和Gruss [8]等人的工作。值得考慮的是本文中提出的攻擊是否也可以通過(guò)瀏覽器和javascript被遠(yuǎn)程利用。 由于瀏覽器確實(shí)允許通過(guò)Web內(nèi)容的本地緩存、Cookie或使用HTML5存儲(chǔ)API來(lái)對(duì)文件系統(tǒng)(盡管是間接的)進(jìn)行寫(xiě)入和讀取,因此將此處介紹的攻擊媒介擴(kuò)展到遠(yuǎn)程攻擊可能是可行的。

5.4 加密和完整性

磁盤(pán)加密(如dm-crypt)的使用應(yīng)該可以從根本上防止這里提出的攻擊。 更準(zhǔn)確地說(shuō),磁盤(pán)加密不會(huì)阻止攻擊在第4層到第5層進(jìn)行(因?yàn)楣粽哒诟采w將被操作系統(tǒng)透明加密/解密的元數(shù)據(jù))。但是,這將使得攻擊者不可能從第1層到第3層的缺陷來(lái)獲得P3。事實(shí)上,正如第3節(jié)所述,為了繞過(guò)ECC,擾碼器的組合和Flash頁(yè)面只能在在一個(gè)方向上編程的限制來(lái)獲取P3,攻擊者需要控制寫(xiě)入磁盤(pán)的數(shù)據(jù)。 但是,通過(guò)使用磁盤(pán)加密,攻擊者很難在不知道加密密鑰的情況下這樣做。

如前所述,元數(shù)據(jù)完整性會(huì)阻止我們提供的文件系統(tǒng)攻擊。我們注意到,除ZFS外,目前的文件系統(tǒng)加密解決方案由于性能方面的考慮,通常不會(huì)實(shí)現(xiàn)(加密的)文件內(nèi)容的完整性。

總結(jié)

在本文中,我們提出并解決了需要處理的問(wèn)題,以便利用現(xiàn)實(shí)世界場(chǎng)景中的閃存缺陷。 最重要的是,我們展示了基于閃存缺陷的利用場(chǎng)景,利用其破壞文件系統(tǒng)元數(shù)據(jù)的能力。結(jié)合這兩個(gè)方面形成了一個(gè)完整系統(tǒng)的攻擊方法,理論的成功率在實(shí)踐中是足夠合理的;

在未來(lái)的工作中,我們計(jì)劃解決克服ECC的步驟,以完成我們的全系統(tǒng)攻擊的實(shí)施。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 閃存
    +關(guān)注

    關(guān)注

    16

    文章

    1778

    瀏覽量

    114820
  • SSD
    SSD
    +關(guān)注

    關(guān)注

    20

    文章

    2851

    瀏覽量

    117253

原文標(biāo)題:怎樣攻擊固態(tài)硬盤(pán)并破壞系統(tǒng)

文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    你的數(shù)據(jù)安全么?Hadoop再曝安全漏洞| 黑客利用Hadoop Yarn資源管理系統(tǒng)未授權(quán)訪問(wèn)漏洞進(jìn)行攻擊

    摘要: 4月30日,阿里云發(fā)現(xiàn),俄羅斯黑客利用Hadoop Yarn資源管理系統(tǒng)REST API未授權(quán)訪問(wèn)漏洞進(jìn)行攻擊。 Hadoop是一款由Apache基金會(huì)推出的分布式系統(tǒng)框架,它
    發(fā)表于 05-08 16:52

    全系統(tǒng)需要保護(hù)什么?

    新聞總是樂(lè)于報(bào)道安全系統(tǒng)遭到攻擊的事件:操作系統(tǒng)漏洞、非法入侵***網(wǎng)絡(luò)、筆記本電腦的*帳戶(hù)信息被竊等等。安全性不僅僅涉及到筆記本電腦和服務(wù)器,嵌入式領(lǐng)域也越來(lái)越關(guān)注安全性問(wèn)題,例如交通燈、家庭安
    發(fā)表于 08-06 08:01

    iis權(quán)限設(shè)置教程

      據(jù)最新的黑客攻擊方法顯示,如果在IIS的站點(diǎn)屬性打開(kāi)了“寫(xiě)入”權(quán)限,則被黑是輕而易舉的事。而一般在我們使用時(shí),要求大家打開(kāi)網(wǎng)站所在文件夾的“寫(xiě)入”權(quán)限,很多
    發(fā)表于 09-07 15:56 ?15次下載

    區(qū)域權(quán)限系統(tǒng)的設(shè)計(jì)

    針對(duì)國(guó)家氣象服務(wù)中心的實(shí)際要求,建立供各級(jí)公共氣象服務(wù)中心開(kāi)展公眾氣象服務(wù)調(diào)查、滿意度調(diào)查使用的公共氣象效益評(píng)估系統(tǒng),提出了權(quán)限控制與區(qū)域關(guān)聯(lián),是基于區(qū)域權(quán)限
    發(fā)表于 03-07 15:08 ?0次下載
    區(qū)域<b class='flag-5'>權(quán)限</b><b class='flag-5'>系統(tǒng)</b>的設(shè)計(jì)

    ARM和SQLite在遠(yuǎn)程控制系統(tǒng)中的研究

    在ARM2410和Linux平臺(tái)上成功地移植了SQLite,并利用SQLite和網(wǎng)絡(luò)成功地實(shí)現(xiàn)了用戶(hù)與遠(yuǎn)程嵌入式控制終端的動(dòng)態(tài)交互,最后對(duì)數(shù)據(jù)庫(kù)進(jìn)行加密,保障了安全性,可廣泛用于遠(yuǎn)程控制。該
    發(fā)表于 02-03 14:50 ?38次下載
    ARM和SQLite在遠(yuǎn)程控制<b class='flag-5'>系統(tǒng)</b>中的研究

    提升權(quán)限模塊

    易語(yǔ)言是一門(mén)以中文作為程序代碼編程語(yǔ)言學(xué)習(xí)例程:易語(yǔ)言-提升權(quán)限模塊
    發(fā)表于 06-06 17:36 ?4次下載

    Android系統(tǒng)權(quán)限提升攻擊檢測(cè)技術(shù)_王聰

    Android系統(tǒng)權(quán)限提升攻擊檢測(cè)技術(shù)_王聰
    發(fā)表于 03-19 11:41 ?0次下載

    權(quán)限提升之Mysql提權(quán)

    權(quán)限提升之Mysql提權(quán)
    發(fā)表于 09-07 10:50 ?4次下載
    <b class='flag-5'>權(quán)限</b><b class='flag-5'>提升</b>之Mysql提權(quán)

    基于CA技術(shù)的網(wǎng)絡(luò)信息安全系統(tǒng)(winpcap驅(qū)動(dòng)軟件)

    在真實(shí)的企業(yè)網(wǎng)絡(luò)環(huán)境中進(jìn)行測(cè)試,測(cè)試結(jié)果表明對(duì)于設(shè)計(jì)好的網(wǎng)絡(luò)信息安全系統(tǒng),能夠正確完成對(duì)網(wǎng)絡(luò)信息系統(tǒng)的身份認(rèn)證、接入認(rèn)證以及網(wǎng)絡(luò)訪問(wèn)權(quán)限控制功能,可以滿足實(shí)際對(duì)網(wǎng)絡(luò)信息安
    發(fā)表于 11-02 10:14 ?4次下載
    基于CA技術(shù)的網(wǎng)絡(luò)信息安<b class='flag-5'>全系統(tǒng)</b>(winpcap驅(qū)動(dòng)軟件)

    網(wǎng)絡(luò)安全系統(tǒng)之新型APT攻擊

    高級(jí)持續(xù)性威脅攻擊, 簡(jiǎn)稱(chēng)APT攻擊,也被稱(chēng)為定向威脅攻擊,它是指利用各種先進(jìn)的攻擊手段,對(duì)高價(jià)值目標(biāo)進(jìn)行的有組織、長(zhǎng)期持續(xù)性網(wǎng)絡(luò)
    發(fā)表于 08-09 11:32 ?3372次閱讀

    蘋(píng)果 iOS 14 新增 “BlastDoor”沙箱安全系統(tǒng):防止利用信息應(yīng)用進(jìn)行攻擊

    1 月 29 日消息 iOS 14 為 iPhone 和 iPad 增加了一個(gè)新的 “BlastDoor”沙箱安全系統(tǒng),以防止利用信息應(yīng)用進(jìn)行攻擊。蘋(píng)果并沒(méi)有分享具體信息,但谷歌 Project
    的頭像 發(fā)表于 01-29 11:16 ?2808次閱讀
    蘋(píng)果 iOS 14 新增 “BlastDoor”沙箱安<b class='flag-5'>全系統(tǒng)</b>:防止利用信息應(yīng)用<b class='flag-5'>進(jìn)行</b>的<b class='flag-5'>攻擊</b>

    GitHub披露了一個(gè)可將權(quán)限不足的本地用戶(hù)的權(quán)限提升為root權(quán)限的漏洞

    近日,GitHub 披露了一個(gè) Linux 漏洞,該漏洞可將權(quán)限不足的本地用戶(hù)的權(quán)限提升為 root 權(quán)限,且整個(gè)過(guò)程只需要幾個(gè)簡(jiǎn)單的命令即
    的頭像 發(fā)表于 06-21 17:06 ?2028次閱讀

    聯(lián)發(fā)科已修復(fù)天璣芯片被惡意應(yīng)用監(jiān)聽(tīng)的漏洞

    近日,由于聯(lián)發(fā)科公司設(shè)計(jì)的片上系統(tǒng)音頻處理固件存在安全漏洞,有可能被別有用心者利用于本地權(quán)限提升攻擊,惡意應(yīng)用能夠?qū)σ纛l接口的某些部分,執(zhí)行它本不該實(shí)現(xiàn)的相關(guān)操作。目前聯(lián)發(fā)科對(duì)其已經(jīng)完
    的頭像 發(fā)表于 11-26 10:43 ?2918次閱讀

    什么是機(jī)械安全系統(tǒng)?機(jī)械安全系統(tǒng)需要什么?

    提高機(jī)器安全性,就是提升企業(yè)的效益?,F(xiàn)如今,隨著全社會(huì)安全意識(shí)的提高,越來(lái)越多的機(jī)器和生產(chǎn)線都標(biāo)配了安全系統(tǒng)。一個(gè)標(biāo)準(zhǔn)的機(jī)械安全系統(tǒng)是什么樣的?怎樣才可以得到國(guó)際安全等級(jí)認(rèn)證呢?
    發(fā)表于 12-29 12:00 ?549次閱讀

    oracle系統(tǒng)權(quán)限和對(duì)象權(quán)限的區(qū)別

    Oracle系統(tǒng)權(quán)限和對(duì)象權(quán)限是Oracle數(shù)據(jù)庫(kù)中的兩種不同類(lèi)型的權(quán)限控制機(jī)制。雖然它們都是用于限制用戶(hù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的
    的頭像 發(fā)表于 12-05 16:21 ?994次閱讀