cwe - 1260:处理不当受保护的内存范围之间的重叠
描述
扩展描述
内存区域隔离和访问控制(读/写)政策是由硬件保护特权软件使用。软件组件通常允许更改或重新映射内存区域定义为了支持灵活和动态多变的内存管理系统软件。
如果一个软件组件运行在较低特权可以计划一个内存地址区域重叠与其他内存区域所使用的软件运行在更高的特权,特权升级可能会提供给攻击者。内存保护单元(微处理器)逻辑可以正确处理这样一个地址重叠和允许lower-privilege软件读取或写入受保护的内存区域,导致特权升级攻击。一个地址重叠的弱点也可以用来发动拒绝服务攻击higher-privilege软件内存区域。
的关系
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 |
请注意 |
架构和设计 |
期间推出的这些问题可能是硬件架构和设计或实施和确认后在测试阶段。 |
实现 |
|
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示范例子
示例1
例如,考虑一个设计一个16位的地址有两个软件特权级别:Privileged_SW Non_privileged_SW。孤立系统内存区域可以访问这两个特权级别,设计支持三个内存区域:Region_0 Region_1, Region_2。
每个区域被定义为两个32位寄存器:其范围和访问策略。
- Address_range[15:0]:指定地区的基地址
- Address_range[31:16]:指定区域的大小
- Access_policy[31:0]:指定什么类型的软件可以访问这一地区和行为是允许的
访问政策的一些象征性的定义如下:
- Access_policy。read_np:如果设置为1,允许从Non_privileged_SW读取
- Access_policy。write_np:如果设置为1,允许从Non_privileged_SW写道
- Access_policy。execute_np:如果设置为1,由Non_privileged_SW允许代码执行
- Access_policy。read_p:如果设置为1,允许从Privileged_SW读取
- Access_policy。write_p:如果设置为1,允许从Privileged_SW写道
- Access_policy。execute_p:如果设置为1,由Privileged_SW允许代码执行
任何请求的软件,一个address-protection过滤器检查地址范围和访问策略的三个区域,并只允许软件访问如果所有三个过滤器允许访问。
考虑以下目标访问控制目的的设计师:
- Privileged_SW Region_0 & Region_1:寄存器是可编程的
- Non_privileged_SW Region_2:寄存器是可编程的
意图是Non_privileged_SW不能修改内存区域和政策定义为Privileged_SW Region_0 Region_1。因此,它不能读或写Privileged_SW正在使用的内存区域。
Non_privileged_SW可以程序Address_range注册Region_2以便其地址与Region_0或Region_1定义的范围。使用此功能,有可能Non_privileged_SW阻止任何内存区域被Privileged_SW访问,即。,Region_0 Region_1。
这种设计在很多方面可以改进。
确保软件访问内存区域只允许如果所有三个过滤器允许访问。此外,该计划可以定义一个内存区域优先确保Region_2 (Non_privileged_SW定义的内存区域)不能重叠Region_0或Region_1 Privileged_SW(使用)。
观察到的例子
参考 |
描述 |
|
硬件产品的虚拟化产品允许妥协通过访问某些重新映射寄存器。 |
|
处理器设计缺陷允许0代码以访问更多特权环通过导致寄存器窗口重叠一系列保护系统内存( ref - 1100] |
潜在的缓解措施
阶段:体系结构和设计
按计划确保内存区域隔离和访问控制(读/写)政策是由硬件保护特权软件使用。
|
实施阶段:
所有可编程的内存保护地区,内存保护单位(微控制器)设计可以定义一个优先级方案。
例如:如果三个内存区域可以被编程(Region_0、Region_1 Region_2),设计可以执行优先配屋计划,这样,如果一个系统地址是在多个区域,然后最低的区域ID需要优先和访问控制政策的地区将被应用。在某些微处理器的设计,优先配屋计划也可以被信任的软件编程。
硬件逻辑或可信固件还可以定义和检查区域块编程的内存区域重叠的地址。
memory-access-control-check过滤器也可以设计政策滤波器应用于所有的重叠范围,即。内,如果一个地址是Region_0 Region_1,然后访问这个地址只授予如果Region_0和Region_1政策允许的访问。
|
弱点Ordinalities
Ordinality |
描述 |
主 |
(其他弱点的弱点存在独立的) |
合成 |
(缺点是通常与其他弱点的存在) |
检测方法
手动分析
创建一个高特权任意大小的内存块。尝试创建一个低特权内存块重叠高特权的内存块。如果创建工作,解决硬件。重复测试。
|
笔记
引用
|