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). 

外部連結

編輯