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

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

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

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

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

簡介

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

前言

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

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

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

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

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

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

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

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

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

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

背景介紹

2.1基于硬件的攻擊

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

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

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

2.2 閃存的缺陷

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

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

2.3 閃存可靠性的方法

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

全系統(tǒng)攻擊

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

(1)閃存芯片:單元間干擾。

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

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

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

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

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

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

剩下的挑戰(zhàn)(第4層到第5層)主要在于找到一個基于文件系統(tǒng)的攻擊矢量,它利用了這個弱攻擊原語,這是本文的主要貢獻(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編碼/解碼的存在決定了攻擊者所期望的最好的情況是對flash頁面/塊的不受控制的隨機(jī)修改。為了理解這一點,讓我們考慮一下不同的解碼方法,即通過將原始位錯誤注入閃存頁面可能會導(dǎo)致攻擊行為。我們將假設(shè)用戶數(shù)據(jù)已經(jīng)使用BCH編碼進(jìn)行保護(hù),BCH編碼能夠利用它的碼字(C1)糾正t bit出錯。T的值通常非常高(例如,t = 50)。 在引入錯誤時,可能會引發(fā)三種可能的事件:

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

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

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

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

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

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

(3)P3:對塊進(jìn)行無控制的隨機(jī)修改(高位翻轉(zhuǎn),導(dǎo)致無法檢測的解碼失敗)

(4)P4:損壞一個塊(讀取該塊時出錯)

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

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

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

3.2 測試平臺

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

在我們的測試平臺中使用的MLC NAND芯片在可靠性方面的研究已經(jīng)在之前的工作中有介紹到[14,15,16]。在這項工作的背景下,測試平臺已被用于驗證我們對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)該不會(或以很低的概率)導(dǎo)致致命的文件系統(tǒng)錯誤,從而阻止攻擊并需要管理員干預(yù)。

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

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

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

4.1 環(huán)境搭建

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

4.2 攻擊

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.4 Improved attack using double indirect blocks

針對double indirect block的破壞而非indirect block的破壞可以執(zhí)行非常類似的攻擊。 盡管這種攻擊稍微難以解釋,但它成功的可能性更高和而且更靈活(對整個文件系統(tǒng)具有完全的讀寫能力:請注意,這仍然會通過創(chuàng)建SUID-root文件來提升權(quán)限)。

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

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

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

討論

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

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

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

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

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

5.3 其他攻擊

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

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

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

5.4 加密和完整性

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

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

總結(jié)

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

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

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

    關(guān)注

    16

    文章

    1766

    瀏覽量

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

    關(guān)注

    20

    文章

    2816

    瀏覽量

    117012

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

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

    針對國家氣象服務(wù)中心的實際要求,建立供各級公共氣象服務(wù)中心開展公眾氣象服務(wù)調(diào)查、滿意度調(diào)查使用的公共氣象效益評估系統(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è)計

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

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

    提升權(quán)限模塊

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

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

    Android系統(tǒng)權(quán)限提升攻擊檢測技術(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ū)動軟件)

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

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

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

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

    1 月 29 日消息 iOS 14 為 iPhone 和 iPad 增加了一個新的 “BlastDoor”沙箱安全系統(tǒng),以防止利用信息應(yīng)用進(jìn)行攻擊。蘋果并沒有分享具體信息,但谷歌 Project
    的頭像 發(fā)表于 01-29 11:16 ?2773次閱讀
    蘋果 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披露了一個可將權(quán)限不足的本地用戶的權(quán)限提升為root權(quán)限的漏洞

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

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

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

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

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

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

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