cwe - 244:清理不当堆内存的释放(堆检验)
描述
使用realloc()调整缓冲区存储敏感信息可以把敏感信息暴露于攻击,因为它不是从内存中删除。
扩展描述
当敏感数据,如密码或一个加密密钥不从内存,它可以接触到使用“堆检查”的攻击,攻击者读取敏感数据使用内存转储或其他方法。realloc()函数通常用于增加分配的内存块的大小。这个操作通常需要将旧的内存块的内容复制到一个新的、更大的块。这个操作离开原来的块的内容完整但无法进入程序,防止程序能够擦洗敏感数据从内存。如果攻击者可以稍后检查内存转储的内容,可以暴露敏感数据。
的关系
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
保密 其他
|
小心使用vfork()和fork()在安全敏感的代码。流程状态不会清除并将包含数据从过去使用的痕迹。 |
|
示范例子
示例1
下面的代码调用realloc()包含敏感数据的一个缓冲区:
cleartext_buffer = get_secret ();。 cleartext_buffer = realloc (cleartext_buffer, 1024); … scrub_memory (cleartext_buffer, 1024);
有一个尝试用力搓洗敏感数据从内存,但realloc()使用,所以它可以返回一个指针指向一个不同的记忆的一部分。最初分配的内存cleartext_buffer仍可能包含一个未清偿的副本的数据。
影响资源
会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
7有害的王国 |
|
|
堆检验 |
CERT C安全编码 |
MEM03-C |
|
清晰的敏感信息存储在可重用资源返回以便重用 |
软件故障模式 |
SFP23 |
|
公开的数据 |
引用
|