查看: 1901|回复: 22
收起左侧

[分享] 内核DMA保护和DMA保护

[复制链接]
Dizziness2929
发表于 2024-4-28 15:45:41 | 显示全部楼层 |阅读模式
本帖最后由 Dizziness2929 于 2024-4-28 15:59 编辑



相信有人打开基于虚拟化的安全技术后,看到箭头指的这两个位置直接懵了“DMA保护和内核DMA保护?这俩不都一回事怎么还能分出来两个?”。

别,你先别急,这实际上是两个完全不一样的东西。

在这之前先讲一下DMA攻击,我相信大家都看过DMA硬件开挂(然后直呼不可战胜)的操作了,那么DMA攻击又是怎么回事?

答案:在现代计算机(包括你的手机之类的)中,为了提升硬件运行效率,于是就出现了一门技术——让硬件自己去访问她想要去的内存区域,绕过CPU处理(甚至,CPU还要将自己的运行周期让给这个硬件去读写内存)。

这极大地提升了硬件效能(也让物理黑客成为了现实)。

面临即将被物理黑客干碎的危机,操作系统厂商、UEFI厂商和处理器厂商站了出来(喂!说到底不就只有Intel和Microsoft这两家吗?)搞出了一套可行的DMA保护方法:

1.首先,所有的DMA请求都必须经过UEFI,UEFI为她们统一划分一个“可访问区域”,如果硬件访问超出范围,则直接击毙(

2.其次,这个过程需要CPU介入处理,由CPU的虚拟化指令集(确切来说是IOMMU,也就是“输入输出控制器”)搭配UEFI固件,将DMA访问全部重定向以避免访问到敏感数据(俗称影流之主)

那么,回到原题:内核DMA保护和DMA保护的区别是?

答案也很简单:内核DMA保护其实真正的含义是“UEFI DMA保护”。在新的UEFI版本中,UEFI固件将会亲自使用IOMMU去重定向所有DMA请求,操作系统只需要划分一个不希望被访问的区域,接下来当撒手掌柜就完事了(幸福的世界,还不需要用户在UEFI中打开Intel VT-x/AMD-V)。

而DMA保护不同,DMA保护是启用“基于虚拟化的安全技术”后出现。其原理是:操作系统调用虚拟化指令集(Intel VT-d VT-x/AMD-V)亲自来重定向所有DMA访问请求。由于缺少UEFI辅助,这么做必然会丢失一定的性能。

同时,由于缺少UEFI固件支持,操作系统无法抵御“启动前DMA攻击”,具体来说:黑客趁你电脑关机人也不在,偷偷在你电脑上装了个DMA卡,或者当着你的面在你电脑关机时给你装上去的(怎么当着面装上去的不在本话题讨论),然后打开电脑。

此时你的电脑UEFI不具备DMA保护能力,DMA攻击硬件在这个过程可以完全的劫持操作系统和主板固件,于是你的DMA保护就和没有一样。

这就是两者的区别。

PS:内核DMA保护并不需要虚拟化技术,但确切的说是:不需要的是用来开虚拟机的那部分虚拟化技术。





题外话:macOS是如何做DMA保护的?

直接引用Apple原文吧:
搭载 Apple 芯片的 Mac 的直接内存访问保护

Apple 片上系统针对系统中的每个 DMA 代{过}{滤}理(包括 PCIe 和雷雳端口)包含一个输入/输出内存管理单元 (IOMMU)。由于每个 IOMMU 有自己的一套地址转换表以转换 DMA 请求,通过 PCIe 或雷雳连接的外围设备只能访问明确映射给其使用的内存。外围设备无法访问属于系统其他部分(如内核或固件)的内存或者分配给其他外围设备的内存。如果 IOMMU 检测到外围设备试图访问未映射给该外围设备使用的内存,会触发内核崩溃。

基于 Intel 的 Mac 的直接内存访问保护

基于 Intel 且支持 Intel 定向 I/O 虚拟化技术 (VT-d) 的 Mac 电脑在启动过程的非常早期阶段会初始化 IOMMU(启用 DMA 重映射)然后中断重映射,以减少各种类别的安全性漏洞。Apple IOMMU 硬件开始以默认拒绝策略运行,因此系统接通电源时,IOMMU 会立即自动开始阻止来自外围设备的 DMA 请求。软件初始化 IOMMU 后,IOMMU 将开始允许外围设备想要访问明确映射给其使用的内存区域的 DMA 请求。

【注】中断 PCIe 重映射在搭载 Apple 芯片的 Mac 上并非必要,因为每个 IOMMU 只处理自己外围设备的 MSI。

自 macOS 11 起,如果辅助 DMA 的 UEFI 驱动器与外部设备配对,所有搭载 Apple T2 安全芯片的 Mac 电脑都会在受限的 Ring 3 环境中运行此类固件。此属性有助于减少恶意设备在启动时以非预期方式与 UEFI 驱动器交互可能导致的安全性漏洞。它尤其减少了驱动器处理 DMA 缓冲时导致的漏洞的影响。




参考资料:


https://learn.microsoft.com/zh-c ... ion-for-thunderbolt

https://learn.microsoft.com/zh-c ... ker/countermeasures

https://learn.microsoft.com/zh-c ... rnel-dma-protection

https://developer.baidu.com/article/details/3026523

https://www.4hou.com/posts/g67j

https://support.apple.com/zh-cn/guide/security/seca4960c2b5/web

https://www.ol4three.com/2020/11 ... %E6%B5%85%E8%B0%88/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 5人气 +13 收起 理由
a286282313 + 3
Picca + 1 版区有你更精彩: )
DisaPDB + 3
隔山打空气 + 3
UNknownOoo + 3 aw

查看全部评分

小新爱打小怪兽
发表于 2024-4-28 16:48:01 | 显示全部楼层
感谢分享
DisaPDB
发表于 2024-4-28 18:23:47 | 显示全部楼层
有种熟悉的感觉……
UNknownOoo
发表于 2024-4-28 18:47:43 | 显示全部楼层
感谢分享()

这高度专业的描述方式+语言习惯....似乎好像猜到是谁哩()
Dizziness2929
 楼主| 发表于 2024-4-28 19:51:16 | 显示全部楼层
DisaPDB 发表于 2024-4-28 18:23
有种熟悉的感觉……

?啊?什么鬼?
Dizziness2929
 楼主| 发表于 2024-4-28 19:52:08 | 显示全部楼层
UNknownOoo 发表于 2024-4-28 18:47
感谢分享()

这高度专业的描述方式+语言习惯....似乎好像猜到是谁哩()

怎么你和楼上都觉得我似曾相识?
DisaPDB
发表于 2024-4-28 19:53:00 | 显示全部楼层
Dizziness2929 发表于 2024-4-28 19:52
怎么你和楼上都觉得我似曾相识?

因为真的很像某位故人
Dizziness2929
 楼主| 发表于 2024-4-28 19:54:37 | 显示全部楼层
DisaPDB 发表于 2024-4-28 19:53
因为真的很像某位故人

什么撞脸乁( ˙ω˙ )厂
Picca
发表于 2024-4-28 23:07:54 | 显示全部楼层
本帖最后由 Picca 于 2024-4-28 23:31 编辑

娱乐测试了一下,确实有点像某位故人

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
Dizziness2929
 楼主| 发表于 2024-4-29 06:39:30 | 显示全部楼层
Picca 发表于 2024-4-28 23:07
娱乐测试了一下,确实有点像某位故人

机器学习是吧(<_<)
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-5-14 21:58 , Processed in 0.127374 second(s), 18 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表