ID: 587 类型:基础 | 状态:草稿 |
描述
软件将指针设置为一个非空或0的特定地址。
扩展描述
使用固定地址不可移植,因为该地址可能在所有环境或平台中都无效。
相关视图
与“研究层面”视图(CWE-1000)相关
与“开发层面”视图(CWE-699)相关
引入模式
阶段 | 说明 |
架构与设计 | |
实现 |
应用平台
语言
C (出现的可能性不确定)
C++ (出现的可能性不确定)
C# (出现的可能性不确定)
Class: 组装(出现的可能性不确定)
后果
范围 | 冲击 | 可能性 |
完整性 | 技术冲击: 执行未获授权的代码或命令 I如果在已知位置执行代码,攻击者可能能够预先在那里注入代码。 | |
可利用性 | 技术冲击: DoS: 崩溃、退出或重启 如果代码被移植到另一个平台或环境,指针可能无效并导致崩溃。 | |
保密性 | 技术冲击: 内存读取; 修改内存 已知指针位置的数据很容易被攻击者读取或影响。 |
示例
例1
此代码假定在特定地址始终可以找到特定的函数。它为该地址分配一个指针并调用函数。
(问题代码)
Example Language: C
int (*pt2Function) (float, char, char)=0x08040000;
int result2 = (*pt2Function) (12, 'a', 'b');
// Here we can inject code to execute.
同一个函数可能并不总是在同一个内存地址中找到。这可能导致崩溃,或者攻击者可能更改预期地址处的内存,从而导致任意代码执行。
应对措施
阶段: 实现 永远不要再固定地址存放指针。 |
种属
关系 | 类型 | ID | 名称 |
属于 | 738 | CERT C Secure Coding Standard (2008) Chapter 5 - Integers (INT) | |
属于 | 872 | ||
属于 | 884 | ||
属于 | 998 | ||
属于 | 1158 |