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

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

此外,虽然分段大多已失效,但除了分页之外,还有许多其他形式的硬件支持用于内存保护。例如,许多机器都支持缓冲区边界检查,有些可以追溯到四分之一世纪或更长时间。但是,为了说明相应的基元,我们将看看现代通用处理器中可用的内容,主要关注英特尔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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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