跳至內容

DMA攻擊

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

DMA攻擊電腦安全領域中的一種旁路攻擊,攻擊者利用允許直接記憶體存取(DMA)的高速擴充埠來侵入電腦或其他裝置。

DMA技術允許與電腦相連的裝置(例如攝錄一體機英語camcorder網卡儲存裝置,或其他附件或內建的PC卡)使用直接硬件訪問來讀寫主主記憶體,無需作業系統的任何監督或互動,得以最大化數據傳輸速度。採用DMA技術的正當用途配件和連接已廣泛存在,但攻擊者可以用同樣方式製作一個與埠連接的惡意附件,然後可能直接訪問電腦實體記憶體的部分或全部地址空間,進而繞過一切作業系統安全機制和鎖定螢幕,讀取電腦執行的所有操作,竊取數據或金鑰,安裝或執行間諜軟件,或侵入其他漏洞,以及修改系統來允許軟件後門或其他形式的惡意軟件。

對此類埠進行物理連接防護可預防DMA攻擊。許多電腦的BIOSUEFI中可以禁用DMA連接,以減少或消除此類攻擊。

使用DMA技術且可能存在漏洞的連接包括FireWireCardBusExpressCardThunderboltUSB 4.0PCIPCI-XPCI Express等。

概述

[編輯]

現代作業系統中,非系統級(即用戶模式)的應用程式不能訪問任何未被虛擬記憶體控制器(即主記憶體管理單元,MMU)明確授權的主記憶體位置。除預防可能因軟件缺陷造成的損害,並提升實體記憶體使用效率外,這種架構也是作業系統安全性的一部分。但是,內核模式驅動程式、許多硬件裝置以及用戶模式中的漏洞,都能允許直接、無障礙地訪問實體記憶體地址空間。實體位址空間包括全部的主系統主記憶體,以及主記憶體對映匯流排和硬件裝置(由作業系統通過類似普通主記憶體讀寫的方式控制)。

OHCI英語Open Host Controller Interface 1394規範允許裝置出於效能原因繞過作業系統並直接訪問實體記憶體,沒有任何安全限制。[1][2]SBP2英語Serial Bus Protocol 2裝置能被輕易偽造,從而欺騙作業系統,攻擊者能夠讀取和寫入實體記憶體,進而未經授權地訪問主記憶體中的敏感數據。[3]

具有FireWireExpressCardThunderbolt或其他擴充埠(如司空見慣的PCIPCI Express)的系統均可能容易受到外部裝置的DMA攻擊,連接到系統的裝置可能直接訪問實體記憶體地址空間,而非安全的虛擬記憶體地址空間。即便系統本身沒有FireWire埠,如果它允許通過PCMCIA/CardBus/PC Card或ExpressCard埠安裝FireWire埠裝置,也可能受到此攻擊。

用途

[編輯]

攻擊者可能使用社會工程學攻擊向「中獎者」傳送惡意的Thunderbolt裝置。連接到電腦後,裝置能直接、毫無阻礙地訪問實體位址空間,繞過作業系統的幾乎全部安全措施,並能讀取加密金鑰、安裝惡意軟件或控制其他系統裝置。如果攻擊者可以物理訪問目標電腦,同樣可以輕鬆展開攻擊。

除上述惡意用途外,DMA也可用於內核除錯等合法目的。[4]

名為Inception[5]的工具可發起這種攻擊。知名間諜軟件FinFireWire英語FinFireWire也能對執行中的Windows、Mac OS或Linux電腦進行非授權訪問。[6]

緩解措施

[編輯]

防護潛在惡意裝置的物理安全英語physical security措施可以避免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]

參見

[編輯]

參考資料

[編輯]
  1. ^ Freddie Witherden. Memory Forensics Over the IEEE 1394 Interface (PDF). 2010-09-07 [2011-04-02]. (原始內容存檔 (PDF)於2021-05-02). 
  2. ^ 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). 
  3. ^ Blocking the SBP-2 Driver to Reduce 1394 DMA Threats to BitLocker. Microsoft. 2011-03-04 [2011-03-15]. (原始內容存檔於2012-08-13). 
  4. ^ Tom Green. 1394 Kernel Debugging: Tips And Tricks. Microsoft. [2011-04-02]. (原始內容存檔於2011-04-09). 
  5. ^ 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). 
  6. ^ Tactical IT Intrusion Portfolio: FINFIREWIRE (PDF). Gamma International. October 2011 [2014-04-28]. (原始內容存檔 (PDF)於2022-01-20). 
  7. ^ /linux/Documentation/Intel-IOMMU.txt. 14 July 2014. (原始內容存檔於14 July 2014). 
  8. ^ Linux Kernel Driver DataBase: CONFIG_AMD_IOMMU: AMD IOMMU support. cateee.net. [2022-03-30]. (原始內容存檔於2021-05-11). 
  9. ^ Dansimp. Kernel DMA Protection (Windows 10) - Microsoft 365 Security. docs.microsoft.com. [2021-02-16]. (原始內容存檔於2020-04-22) (美國英語). 
  10. ^ Hermann, Uwe. Physical memory attacks via FireWire/DMA - Part 1: Overview and Mitigation. 14 August 2008. (原始內容存檔於4 March 2016). 
  11. ^ Countermeasures: Protecting BitLocker-encrypted Devices from Attacks. Microsoft. January 2014. (原始內容存檔於2014-03-24). 
  12. ^ Thunderclap: Exploring Vulnerabilities in Operating System IOMMU Protection via DMA from Untrustworthy Peripherals – NDSS Symposium. [2020-01-21]. (原始內容存檔於2019-08-06) (美國英語). 
  13. ^ 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. 
  14. ^ KB2516445: Blocking the SBP-2 Driver to Reduce 1394 DMA Threats to Bitlocker. Microsoft. 2011-03-04 [2011-03-15]. (原始內容存檔於2012-08-13). 

外部連結

[編輯]