DMA攻擊
此條目翻譯自英語維基百科,需要相關領域的編者協助校對翻譯。 |
DMA攻擊是電腦安全領域中的一種旁路攻擊,攻擊者利用允許直接記憶體存取(DMA)的高速擴充埠來侵入電腦或其他裝置。
DMA技術允許與電腦相連的裝置(例如攝錄一體機、網卡、儲存裝置,或其他附件或內建的PC卡)使用直接硬體訪問來讀寫主主記憶體,無需作業系統的任何監督或互動,得以最大化資料傳輸速度。採用DMA技術的正當用途配件和連接已廣泛存在,但攻擊者可以用同樣方式製作一個與埠連接的惡意附件,然後可能直接訪問電腦實體記憶體的部分或全部位址空間,進而繞過一切作業系統安全機制和鎖定螢幕,讀取電腦執行的所有操作,竊取資料或金鑰,安裝或執行間諜軟體,或侵入其他漏洞,以及修改系統來允許軟體後門或其他形式的惡意軟體。
對此類埠進行物理連接防護可預防DMA攻擊。許多電腦的BIOS或UEFI中可以禁用DMA連接,以減少或消除此類攻擊。
使用DMA技術且可能存在漏洞的連接包括FireWire、CardBus、ExpressCard、Thunderbolt、USB 4.0、PCI、PCI-X和PCI Express等。
概述
現代作業系統中,非系統級(即使用者模式)的應用程式不能訪問任何未被虛擬記憶體控制器(即主記憶體管理單元,MMU)明確授權的主記憶體位置。除預防可能因軟體缺陷造成的損害,並提升實體記憶體使用效率外,這種架構也是作業系統安全性的一部分。但是,核心模式驅動程式、許多硬體裝置以及使用者模式中的漏洞,都能允許直接、無障礙地訪問實體記憶體位址空間。實體位址空間包括全部的主系統主記憶體,以及主記憶體對映匯流排和硬體裝置(由作業系統通過類似普通主記憶體讀寫的方式控制)。
OHCI 1394規範允許裝置出於效能原因繞過作業系統並直接訪問實體記憶體,沒有任何安全限制。[1][2]而SBP2裝置能被輕易偽造,從而欺騙作業系統,攻擊者能夠讀取和寫入實體記憶體,進而未經授權地訪問主記憶體中的敏感資料。[3]
具有FireWire、ExpressCard、Thunderbolt或其他擴充埠(如司空見慣的PCI和PCI Express)的系統均可能容易受到外部裝置的DMA攻擊,連接到系統的裝置可能直接訪問實體記憶體位址空間,而非安全的虛擬記憶體位址空間。即便系統本身沒有FireWire埠,如果它允許通過PCMCIA/CardBus/PC Card或ExpressCard埠安裝FireWire埠裝置,也可能受到此攻擊。
用途
攻擊者可能使用社會工程學攻擊向「中獎者」傳送惡意的Thunderbolt裝置。連接到電腦後,裝置能直接、毫無阻礙地訪問實體位址空間,繞過作業系統的幾乎全部安全措施,並能讀取加密金鑰、安裝惡意軟體或控制其他系統裝置。如果攻擊者可以物理訪問目標電腦,同樣可以輕鬆展開攻擊。
名為Inception[5]的工具可發起這種攻擊。知名間諜軟體FinFireWire也能對執行中的Windows、Mac OS或Linux電腦進行非授權訪問。[6]
緩解措施
防護潛在惡意裝置的物理安全措施可以避免DMA攻擊。
核心模式驅動程式有許多可能危及系統安全性的權限,因此僅應載入受信任、無缺陷的驅動程式。例如,較新版本的64位元Microsoft Windows要求驅動程式必須經過微軟測試並取得數位簽章,且防止安裝任何沒有數位簽章的驅動程式。
輸入輸出主記憶體管理單元(IOMMU)是一種將「虛擬記憶體」概念應用於此類系統匯流排的技術,可用於杜絕此類安全漏洞,並能提高系統穩定性。英特爾的IOMMU技術命名為VT-d,AMD的IOMMU技術命名為AMD-Vi。Linux和Windows 10支援上述IOMMU技術[7] [8] [9]並運用它們來阻止非授權的I/O事務。
較新的作業系統本身也可能提供預防DMA攻擊的措施。近年的Linux核心包含禁用FireWire裝置DMA的選項,且不會影響其他功能。[10]Microsoft Windows 8.1會阻止訪問無人值守、控制介面已鎖定的裝置的DMA埠。[11]但截至2019年,主流作業系統尚未考慮可能被惡意裝置利用的,多個類比外圍裝置之間複雜互動方式所產生的漏洞。[12]
另一個抵禦DMA攻擊的緩解方案是,不在未加密的主記憶體中儲存敏感資料。但禁止讀取主記憶體內容的措施並不周全,通過DMA寫入主記憶體可能實現代碼注入,進而損害看似安全的主記憶體外儲存裝置。其中一個例子是TRESOR-HUNT,通過覆蓋作業系統的某些部分,它能暴露出從未儲存於實體記憶體、僅存在於特定CPU暫存器中的加密金鑰。[13]
對於有憂慮的使用者,微軟建議更改Windows的預設組態。[14]
參見
參考資料
- ^ Freddie Witherden. Memory Forensics Over the IEEE 1394 Interface (PDF). 2010-09-07 [2011-04-02]. (原始內容存檔 (PDF)於2021-05-02).
- ^ Piegdon, David Rasmus. Hacking in Physically Addressable Memory - A Proof of Concept (PDF). Seminar of Advanced Exploitation Techniques, WS 2006/2007. 2006-02-21 [2022-03-30]. (原始內容存檔 (PDF)於2021-05-08).
- ^ Blocking the SBP-2 Driver to Reduce 1394 DMA Threats to BitLocker. Microsoft. 2011-03-04 [2011-03-15]. (原始內容存檔於2012-08-13).
- ^ Tom Green. 1394 Kernel Debugging: Tips And Tricks. Microsoft. [2011-04-02]. (原始內容存檔於2011-04-09).
- ^ Inception is a physical memory manipulation and hacking tool exploiting PCI-based DMA. The tool can attack over FireWire, Thunderbolt, ExpressCard, PC Card and any other PCI/PCIe interfaces.: carm... 28 June 2019 [2022-03-30]. (原始內容存檔於2022-04-01).
- ^ Tactical IT Intrusion Portfolio: FINFIREWIRE (PDF). Gamma International. October 2011 [2014-04-28]. (原始內容存檔 (PDF)於2022-01-20).
- ^ /linux/Documentation/Intel-IOMMU.txt. 14 July 2014. (原始內容存檔於14 July 2014).
- ^ Linux Kernel Driver DataBase: CONFIG_AMD_IOMMU: AMD IOMMU support. cateee.net. [2022-03-30]. (原始內容存檔於2021-05-11).
- ^ Dansimp. Kernel DMA Protection (Windows 10) - Microsoft 365 Security. docs.microsoft.com. [2021-02-16]. (原始內容存檔於2020-04-22) (美國英語).
- ^ Hermann, Uwe. Physical memory attacks via FireWire/DMA - Part 1: Overview and Mitigation. 14 August 2008. (原始內容存檔於4 March 2016).
- ^ Countermeasures: Protecting BitLocker-encrypted Devices from Attacks. Microsoft. January 2014. (原始內容存檔於2014-03-24).
- ^ Thunderclap: Exploring Vulnerabilities in Operating System IOMMU Protection via DMA from Untrustworthy Peripherals – NDSS Symposium. [2020-01-21]. (原始內容存檔於2019-08-06) (美國英語).
- ^ Blass, Erik-Oliver. TRESOR-HUNT. Proceedings of the 28th Annual Computer Security Applications Conference on - ACSAC '12. 2012: 71. ISBN 9781450313124. doi:10.1145/2420950.2420961.
- ^ KB2516445: Blocking the SBP-2 Driver to Reduce 1394 DMA Threats to Bitlocker. Microsoft. 2011-03-04 [2011-03-15]. (原始內容存檔於2012-08-13).
外部連結
- 0wned by an iPod - hacking by Firewire由 Maximillian Dornseif 在 PacSec/core04 會議上的演講,日本,2004
- 通過 Firewire/DMA 進行實體記憶體攻擊 - 第 1 部分:概述和緩解(更新)