操作系统/虚拟化安全知识域:用于内存保护的现代硬件扩展

用于内存保护的现代硬件扩展

此外,虽然分段大多已失效,但除了分页之外,还有许多其他形式的硬件支持用于内存保护。例如,许多机器都支持缓冲区边界检查,有些可以追溯到四分之一世纪或更长时间。但是,为了说明相应的基元,我们将看看现代通用处理器中可用的内容,主要关注英特尔x86家族。这里的重点不是我们认为这个处理器更重要,甚至不是功能X或Y在未来会非常重要(这是有争议的和很难预测),而是说明这仍然是当今硬件开发的一个非常活跃的领域。

作为第一个示例,考虑一下有点命运多舛的英特尔内存保护扩展(MPX),它增强了英特尔的主力处理器,以确保阵列指针不会偏离阵列边界(阻止缓冲区溢出等漏洞被利用)。为此,一小组新寄存器可以存储少量数组的下限和上限,而在取消引用指针之前,新的MPX指令检查数组指针的值是否存在边界冲突。即使在仅在用户空间中使用MPX的系统中,操作系统也起着作用,例如,处理硬件在遇到缓冲区边界时引发的异常违反。MPX因这些边界寄存器太少而受到严厉批评,导致性能开销很大。此外,MPX不支持多线程,这可能会导致旧代码中的数据竞争。有人可能会说,MPX是硬件供应商尝试为其CPU添加新内存安全功能的一个很好的例子,不幸的是,这并不总是成功的。

最近,英特尔在其处理器9中添加了内存保护密钥(MPK)。英特尔MPK允许将PTE(图2)中以前未使用的四个位设置为16个“键”值之一。此外,它还添加了一个新的32位寄存器,每个密钥包含2位,以指示是否允许使用该密钥标记的页面进行读写。MPK允许开发人员在少量(在本例中为16个)保护域中对内存进行分区,例如,仅允许特定的加密库访问加密钥匙。虽然非特权用户进程可能会更新寄存器的值,但只有特权操作系统代码才能使用密钥标记内存页。

一些处理器设计支持更高级的内存保护,使用ARM术语,我们将称为内存标记扩展(MTE10)。这个想法简单而强大。处理器为每个对齐的内存块(其中块是16字节)分配一个硬件中的所谓“标签”。同样,每个指针也会获取一个标记。标签通常不是很大,比如4位,所以它们可以存储在64位指针值的最顶端字节中,反正我们并不真正使用(事实上,ARM支持顶字节忽略功能,使硬件显式屏蔽最上面的字节)。每当程序分配N个字节的内存时,分配器都会将分配四舍五入为16个字节的倍数,并为其分配一个随机标记。它还将相同的标记分配给指向内存的指针。从现在开始,仅当指针中的标记与其引用的内存的标记匹配时,才允许取消引用指针,从而有效地阻止大多数空间和时间内存错误。

同时,一些处理器,尤其是低功耗设备中的处理器,甚至根本没有成熟的MMU。相反,它们有一个更简单的内存保护单元(MPU),仅用于保护内存,其方式类似于上面讨论的MPK功能。在MPU设计中,操作系统定义了许多具有特定内存访问权限和内存属性的内存区域。例如,ARMv8-M处理器上的MPU最多支持16个区域。同时,MPU监控处理器的所有内存访问(包括指令提取和数据访问),并在检测到访问冲突时触发异常。

请注意,在上面,我们假设操作系统需要保护免受不受信任的用户应用程序的侵害。当操作本身不受信任时,会出现特殊情况。也许您正在受感染的操作系统或云中运行安全敏感型应用程序,您不确定是否要信任云提供商。在一般情况下,您可能希望在不信任任何其他软件的情况下保护您的数据和应用程序。为此,处理器可以提供硬件支持,以便在安全、隔离的环境中运行极其敏感的代码,在ARM的“信任区”中称为可信执行环境,或者英特尔软件防护扩展(SGX)中的飞地。它们提供的基元略有不同。例如,在SGX安全区中运行的代码旨在成为正常用户进程的一部分。它使用的内存总是在离开处理器后立即加密。此外,SGX还提供硬件支持来执行证明,以便(可能是远程)方可以验证代码是否在安全区中运行以及它是正确的代码。另一方面,ARMTrustZone将运行正常操作系统和用户应用程序的“正常世界”与通常运行自己的较小操作系统以及少量安全敏感应用程序的“安全世界”隔离开来。正常世界中的代码可以调用安全世界中的代码,其方式类似于应用程序调用操作系统的方式。特殊环境(如ARMTrustZone)(或英特尔的SMM模式,稍后讨论)的一个有趣应用是使用它来监控常规操作系统的完整性-希望在它造成严重损害之前检测到任何隐形恶意软件或rootkit。尽管这些受信任环境的各个方面与操作系统安全性明显重叠,但我们认为它们大多超出了此知识领域的范围。我们还应该注意到,近年来,硬件可信执行环境提供的安全性一再被各种侧信道刺穿,这些侧信道从所谓的安全世界泄漏信息。

再次切换齿轮,可能是操作系统没问题,但硬件不是。恶意或故障硬件可能会使用系统的直接内存访问(DMA)来读取或覆盖内存中它们无法访问的敏感数据。此外,对于某些标准(例如USB-C上的Thunderbolt),计算机的PCIe链路可能会直接暴露在用户插入计算机的设备中。不幸的是,对于用户来说,很难确定看起来像显示器电缆或电源适配器的东西不包含一些旨在破坏计算机的恶意电路。作为部分补救措施,如今大多数架构都带有特殊的MMU,用于与设备之间传输的数据。该硬件称为IOMMU,用于将设备虚拟地址映射到物理地址,完全模仿图2中所示的基于页面的保护。2,但现在用于DMA设备。换句话说,设备可以访问虚拟内存地址,IOMMU将其转换为实际物理地址,检查权限,并在页面未映射到设备或保护位与请求的访问不匹配时停止。虽然这样做提供了一些针对恶意设备(或驱动程序)的保护措施,但重要的是要认识到IOMMU旨在促进虚拟化,实际上不应被视为适当的安全解决方案。有很多事情可能会出错。例如,管理员可能想要撤销设备对内存页面的访问权限。由于更新IOMMU页表是一个缓慢的操作,因此操作系统延迟此操作并将其与其他操作一起批处理的情况并不少见。结果是,可能有一小段时间窗口,在此期间设备仍然可以访问内存页面,即使它看起来这些权利已被撤销。

最后,我们可以观察到,每个表面积的晶体管数量不断增加,使CPU供应商能够在其芯片上放置越来越多的硬件扩展,而上面讨论的那些绝不是现代处理器中唯一与安全相关的扩展。其他示例包括加密单元、内存加密、有效切换扩展页表的说明以及指针身份验证(硬件检测到指针值的修改)。毫无疑问,未来几代将出现更多功能,操作系统将不得不进行调整才能以有意义的方式使用它们。这些问题的更广泛观点可以在硬件安全CyBOK知识领域中找到。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/152475.html<

(0)
管理的头像管理
上一篇2025-03-14 00:49
下一篇 2025-03-14 00:50

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注