cwe - 1257:不适当的访问控制应用到镜像或别名内存区域
描述
别名或镜像内存区域在硬件设计可能不一致的硬件执行的读/写权限。一个可能的结果是,一个不可信的代理阻止访问内存区域而不是阻止访问相应的别名内存区域。
扩展描述
硬件产品设计往往需要实现内存保护功能,支持软件特权定义内存区域隔离和访问控制(读/写)的政策。孤立的内存区域可以被定义在不同的内存空间在设计中(例如系统物理地址,虚拟地址,内存映射IO)。
每个存储单元应该映射和分配系统核心软件的地址可以使用内存读/写。可以同一存储单元映射到多个系统地址,这样读/写系统任何别名地址将解码同一存储单元。
这样做通常是冗余的硬件设计和简化地址译码逻辑。如果一个内存区域的损坏或故障,那么硬件可以切换使用镜像内存区域中的数据。内存中创建的别名也可以系统地址地图如果地址译码器单位忽略了高阶地址位当一个较小的地址区域映射到全系统地址。
常见的安全弱点,可以存在于内存映射,别名内存区域可以有不同的读/写访问保护执行由硬件,这样一个不可信的代理阻止访问内存地址而不是阻止访问相应的别名内存地址。这种不一致可以用于绕过访问保护主内存块和读取或修改受保护的内存。
一个不可信的代理也能创建内存系统中的别名地址映射为恶意目的是否能够改变一个地址的映射区域或修改内存区域的大小。
的关系
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
保密
|
|
高 |
完整性
|
|
高 |
可用性
|
|
高 |
示范例子
示例1
在系统级芯片(SoC)的设计体系结构使用16位地址。IP单元(Unit_A)有4个千字节的内存映射到一个16千字节地址范围系统中织物地址映射。
系统地址 |
映射到 |
0 x0000 - 0 x3fff |
x0fff Unit_A寄存器:0 x0000 - 0 |
0 x4000 - 0 xffff |
其他IPs和内存 |
保护寄存器控制Unit_A无特权的软件是阻止访问地址0 x0000 - 0 x0fff之间。
Unit_A面具的地址译码器的高阶地址位和解码只有低12位计算偏移量为4 kb内存空间。
在这个设计别名内存地址范围是:
0 x0000 - 0 x0fff
0 x1000 - 0 x1fff
0 x2000 - 0 x2fff
0 x3000 - 0 x3fff
相同的寄存器可以使用四种不同的访问地址:0 x0000 0 x1000 x3000 0 x2000, 0。
系统地址过滤只屏蔽范围0 x0000 - 0 x0fff和不屏蔽的别名地址0 x1000 - 0 x3fff范围。因此,不受信任的软件可以利用别名内存地址绕过内存保护。
在这个设计别名内存地址(0 x1000 - 0 x3fff)可以阻止所有系统软件由软件访问,因为他们不习惯。
的交替,微处理器逻辑可以改变内存保护政策适用于完整的地址范围映射到Unit_A (0 x0000 - 0 x3fff)。
潜在的缓解措施
阶段:体系结构和设计;实现
检查应该申请一致性主要内存区域之间的访问权限和任何镜像或别名内存区域。如果不同的内存保护单位(微处理器)保护别名地区,其保护范围的定义和政策应该是同步的。 |
阶段:体系结构和设计;实现
控件允许启用内存别名或更改映射内存区域的大小应该只被信任的软件组件编程。 |
脆弱性映射笔记
用法:允许
(CWE ID可以用来映射到现实世界的漏洞) |
原因:可接受的使用 |
理由是: 这CWE条目底部的抽象级别,这是一个首选的抽象级别映射到漏洞的根本原因。 |
评论: 仔细阅读这两个名称和描述,以确保此映射是一个适当的配合。不要试图“力”映射到底层基础/变体只是遵守这首选的抽象级别。 |
更多的信息是可用的,请编辑自定义过滤器或选择一个不同的过滤器。
|