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 部分:概述和緩解(更新)