描述
产品没有足够的跟踪和释放分配的内存后,慢慢消耗剩余的内存。
扩展描述
这通常是由操作不当引起的畸形或意外中断会话数据。在一些语言中,开发人员负责跟踪内存分配和释放内存。如果没有其他指针或引用的内存,那么它可以为释放不再被跟踪和识别。
替代条款
的关系
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 |
类型 |
ID |
的名字 |
ChildOf |
类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 |
404年 |
不当关机或释放资源 |
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 |
类型 |
ID |
的名字 |
ChildOf |
类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 |
404年 |
不当关机或释放资源 |
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 |
请注意 |
架构和设计 |
|
实现 |
有两个常见的内存泄漏,有时重叠的原因:
- 错误条件和其他特殊情况
- 混乱的程序负责释放内存的一部分
|
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
可用性
|
技术的影响:DoS:崩溃,退出或重新启动;DoS:不稳定;DoS:资源消耗(CPU);DoS:资源消耗(内存)
大多数内存泄漏导致通用产品可靠性问题,但是如果攻击者可以故意引发内存泄漏,攻击者可能会发起拒绝服务攻击(崩溃或挂程序)或利用其他意想不到的程序行为造成的低内存条件。 |
|
其他
|
|
|
利用的可能性
示范例子
示例1
下面的C函数分配一块内存泄漏如果调用读()不返回预期的字节数:
char * getBlock (int fd) {
char * buf = (char *) malloc (BLOCK_SIZE); 如果(buf) {
返回NULL; } 如果(读(fd,但BLOCK_SIZE) ! = BLOCK_SIZE) { } 返回缓冲区;
}
观察到的例子
参考 |
描述 |
|
内存泄漏,因为不自由()函数数据结构的一个元素。 |
|
内存泄漏时计数器变量不是递减。 |
|
链:引用计数不递减,导致操作系统的内存泄漏通过发送ICMP数据包。 |
|
内核使用错误的函数来释放一个数据结构,防止数据被其他代码正确跟踪。 |
|
内存泄漏通过未知的操作协议测试套件的一部分。 |
|
内存泄漏通过一系列相同的命令。 |
潜在的缓解措施
实施阶段:
选择一种语言或工具,提供了自动内存管理,或使手动内存管理更少出错。
例如,glibc Linux提供保护反对自由的无效的指针。
帮助正确和一致地管理内存在c++编程时,考虑使用智能指针类比如std:: auto_ptr(定义为ISO / IEC ISO / IEC 14882:2003), std::要和std:: unique_ptr(规定即将到来的c++标准的修订,正式称为C + + 1 x),或等价的解决方案,比如提高。
|
阶段:体系结构和设计
使用一个抽象库抽象危险的api。不是一个完整的解决方案。 |
阶段:体系结构和设计;构建和编译
Boehm-Demers-Weiser垃圾收集器或valgrind可用来检测泄漏的代码。
注意:这不是一个完整的解决方案,因为它不是100%的有效。 |
弱点Ordinalities
Ordinality |
描述 |
合成 |
(缺点是通常与其他弱点的存在) |
功能区域
影响资源
会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
笔记
的关系
这通常是一个合成的弱点由于畸形数据处理不当或提前终止会话。
术语
“内存泄漏”有时被用来描述其他的问题,例如信息泄漏内存的内容在无意中泄露(cve - 2003 - 0400就是这样一个例子,这个术语冲突)。
分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
千鸟 |
|
|
内存泄漏 |
7有害的王国 |
|
|
内存泄漏 |
扣 |
|
|
未能释放数据 |
OWASP十大2004 |
A9 |
CWE更具体 |
拒绝服务 |
CERT C安全编码 |
MEM31-C |
确切的 |
在不再需要时释放动态分配的内存 |
CERT甲骨文安全Java编码标准(2011) |
MSC04-J |
|
没有内存泄漏 |
软件故障模式 |
SFP14 |
|
未能释放资源 |
OMG ASCPEM |
ASCPEM-PRF-14 |
|
|
引用
|
ref - 390 j·维特克和h·汤普森。“如何打破软件安全”。艾迪生卫斯理》2003。 |
|
|
内容的历史
提交 |
提交日期 |
提交者 |
组织 |
2006-07-19 |
千鸟 |
|
|
修改 |
修改日期 |
修饰符 |
组织 |
2008-07-01 |
Eric Dalci |
Cigital |
更新Time_of_Introduction |
2008-08-01 |
|
股的分析 |
添加/更新白盒定义 |
2008-08-15 |
|
Veracode |
建议OWASP 2004年排名前十的映射 |
2008-09-08 |
CWE内容团队 |
主教法冠 |
更新Applicable_Platforms Common_Consequences,关系,Other_Notes,引用,Relationship_Notes, Taxonomy_Mappings Terminology_Notes |
2008-10-14 |
CWE内容团队 |
主教法冠 |
更新描述 |
2009-03-10 |
CWE内容团队 |
主教法冠 |
更新Other_Notes |
2009-05-27 |
CWE内容团队 |
主教法冠 |
更新后的名字 |
2009-07-17 |
股的分析 |
|
改善了White_Box_Definition |
2009-07-27 |
CWE内容团队 |
主教法冠 |
更新White_Box_Definitions |
2009-10-29 |
CWE内容团队 |
主教法冠 |
更新Modes_of_Introduction Other_Notes |
2010-02-16 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2010-06-21 |
CWE内容团队 |
主教法冠 |
更新Other_Notes Potential_Mitigations |
2010-12-13 |
CWE内容团队 |
主教法冠 |
更新Demonstrative_Examples、名称 |
2011-03-29 |
CWE内容团队 |
主教法冠 |
更新Alternate_Terms |
2011-06-01 |
CWE内容团队 |
主教法冠 |
更新Common_Consequences、关系、Taxonomy_Mappings |
2012-05-11 |
CWE内容团队 |
主教法冠 |
更新的关系,Taxonomy_Mappings |
2012-10-30 |
CWE内容团队 |
主教法冠 |
更新Potential_Mitigations |
2013-02-21 |
CWE内容团队 |
主教法冠 |
更新Observed_Examples |
2014-02-18 |
CWE内容团队 |
主教法冠 |
更新Potential_Mitigations,引用 |
2014-07-30 |
CWE内容团队 |
主教法冠 |
更新的关系,Taxonomy_Mappings |
2017-11-08 |
CWE内容团队 |
主教法冠 |
更新引用关系,Taxonomy_Mappings White_Box_Definitions |
2019-01-03 |
CWE内容团队 |
主教法冠 |
Common_Consequences更新,Demonstrative_Examples、名称、引用关系,Taxonomy_Mappings,类型,Weakness_Ordinalities |
2019-06-20 |
CWE内容团队 |
主教法冠 |
更新描述、名称 |
2020-02-24 |
CWE内容团队 |
主教法冠 |
更新引用关系,Taxonomy_Mappings |
2020-08-20 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2021-03-15 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2022-10-13 |
CWE内容团队 |
主教法冠 |
更新Taxonomy_Mappings |
2023-01-31 |
CWE内容团队 |
主教法冠 |
更新Common_Consequences、描述 |
以前的条目名称 |
改变日期 |
以前的条目名称 |
2008-04-11 |
内存泄漏 |
|
2009-05-27 |
未能释放内存之前删除最后引用(又名“内存泄漏”) |
|
2010-12-13 |
删除最后引用之前未能释放内存(内存泄漏) |
|
2019-01-03 |
不当释放的内存之前删除最后引用(内存泄漏) |
|
2019-06-20 |
不当释放的内存之前删除最后一个参考 |
|
|