描述
扩展描述
创建一个资源或分配时,开发人员负责正确地释放资源以及占所有潜在路径过期或失效,比如一组一段时间或撤销。
的关系
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
自然 |
类型 |
ID |
的名字 |
ChildOf |
支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 |
664年 |
资源的不当控制通过它的生命周期 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
299年 |
检查证书撤销不当 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
459年 |
不完整的清理 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
763年 |
无效的指针或引用 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
772年 |
失踪后释放资源的有效寿命 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
1266年 |
从退役设备洗涤不当的敏感数据 |
PeerOf |
类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 |
405年 |
不对称的资源消耗(放大) |
PeerOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
239年 |
故障处理不完整的元素 |
CanPrecede |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
619年 |
悬空数据库游标(光标注入) |
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 |
类型 |
ID |
的名字 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
401年 |
失踪之后释放内存有效寿命 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
459年 |
不完整的清理 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
763年 |
无效的指针或引用 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
772年 |
失踪后释放资源的有效寿命 |
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”方案及数据保护措施”(cwe - 1340)
自然 |
类型 |
ID |
的名字 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
761年 |
免费的指针不在缓冲区的开始 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
762年 |
不匹配的内存管理程序 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
763年 |
无效的指针或引用 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
772年 |
失踪后释放资源的有效寿命 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
775年 |
失踪的文件描述符或处理后有效 |
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
可用性 其他
|
技术的影响:DoS:资源消耗(其他);不同的上下文
大多数未释放的资源问题导致通用软件可靠性问题,但是如果攻击者可以故意引发资源泄漏,攻击者可能会发起拒绝服务攻击消耗资源池。 |
|
保密
|
当一个资源包含敏感信息不正确关闭,它可能暴露敏感数据在随后的分配。 |
|
利用的可能性
示范例子
示例1
下面的方法永远不会关闭文件句柄。给予足够的时间,最终BufferReader的Finalize()方法应该调用关闭(),但没有保证这个动作需要多长时间。事实上,没有保证Finalize()方法会被调用。在忙碌的环境中,操作系统可以使用所有可用的文件句柄前关闭()函数。
私人空间processFile(字符串帧) {
BufferReader费尔= new BufferReader(新FileReader(帧)); 字符串行; 在((= fil.ReadLine行())! = null) {
processLine(线); } }
良好的代码示例简单地添加一个显式的调用关闭()函数使用文件系统完成后。在这样的一个简单的例子很容易看到并修复问题。在实际系统中,这个问题可能更为模糊。
私人空间processFile(字符串帧) {
BufferReader费尔= new BufferReader(新FileReader(帧)); 字符串行; 在((= fil.ReadLine行())! = null) {
processLine(线); } fil.Close (); }
示例2
这段代码试图打开一个连接到一个数据库并抓住任何可能发生的异常。
尝试{
连接= DriverManager.getConnection监狱(some_connection_string); } 捕获(异常e) {
日志(e); }
如果发生异常后建立数据库连接在同一连接关闭之前,数据库连接池可能会变得疲惫。如果超出可用连接的数量,其他用户不能访问这个资源,有效地拒绝访问应用程序。
示例3
在正常情况下以下c#代码执行一个数据库查询,处理数据库返回的结果,并关闭SqlConnection对象分配。但如果发生异常时执行的SQL或处理结果,SqlConnection对象不是封闭的。如果经常出现这种情况,数据库将耗尽可用的游标和无法执行任何更多的SQL查询。
… SqlConnection康涅狄格州= new SqlConnection (connString); SqlCommand cmd = new SqlCommand(参数); cmd。Connection = conn; conn.Open (); SqlDataReader rdr = cmd.ExecuteReader (); HarvestResults (rdr); conn.Connection.Close (); …
示例4
下面的C函数不关闭文件句柄打开如果出现错误。如果长期存在的过程,这个过程可以运行文件句柄。
int decodeFile (char *帧){
字符缓冲区(BUF_SZ); 文件* f = fopen(帧,“r”); 如果(f) {
printf(“不能打开% s \ n”、帧); 返回DECODE_FAIL; } 其他{
而(fgets (buf BUF_SZ f)) {
如果(! checkChecksum (buf)) {
返回DECODE_FAIL; } 其他{
decodeBlock (buf); } }
} 文件关闭(f); 返回DECODE_SUCCESS;
}
示例5
在这个例子中,这个程序不使用匹配的功能,比如malloc / free,新的/删除,新的[]/[]删除分配/释放资源。
A类{
空白foo (); }; 无效::foo () {
int * ptr; ptr = (int *) malloc (sizeof (int)); 删除ptr; }
例子6
在这个例子中,程序调用delete()函数在非堆内存。
A类{
空白foo (bool); }; 无效::foo (bool堆){
int localArray [2] = {
11日,22日 }; int * p = localArray; 如果(堆){
p = new int [2]; } 删除[]p; }
观察到的例子
参考 |
描述 |
|
不关闭命名管道连接如果畸形数据发送。 |
|
套接字不当当攻击者多次连接和断开与服务器关闭。 |
|
返回值的文件/套接字操作不检查,允许合成文件描述符。 |
潜在的缓解措施
阶段:需求
使用一种语言,不允许这个弱点或发生提供了结构,使这个弱点更容易避免的。
例如,语言(如Java、Ruby和Lisp执行垃圾收集自动释放内存的对象已经被收回。
|
实施阶段:
是一种很好的做法负责释放所有资源分配和符合你怎么没空闲内存的一个函数。如果你分配内存,你打算免费功能,完成后,你必须确保释放内存出口点的功能包括错误条件。 |
实施阶段:
内存应该分配/释放使用匹配函数如malloc / free,新/删除,新的[]/[]删除。 |
实施阶段:
当释放一个复杂对象或结构,确保您正确地处理组件,它的所有成员不仅仅是对象本身。 |
弱点Ordinalities
Ordinality |
描述 |
主 |
(缺点是一个质量问题,可能会间接更容易引入的安全相关的弱点或使他们更难检测)
发布不当或关闭资源可以主要资源枯竭,性能和信息保密问题等等。 |
合成 |
(缺点是一个质量问题,可能会间接更容易引入的安全相关的弱点或使他们更难检测)
发布不当或关闭资源可以从错误处理不当或不足资源合成跟踪。 |
检测方法
自动动态分析
这个弱点能被探测到的使用动态交互的工具和技术的软件使用大型测试套件和许多不同的输入,如模糊测试(起毛)健壮性测试和故障注入。软件的操作可能慢下来,但它不应该成为不稳定,崩溃,或者产生不正确的结果。
资源清理错误可能检测到的压力测试通过调用软件同时从大量的线程或进程,并寻找任何意想不到的行为的证据。软件的操作可能慢下来,但它不应该成为不稳定,崩溃,或者产生不正确的结果。
|
手动动态分析
识别错误情况不太可能发生在正常使用和触发器。例如,产品在低内存条件下运行,运行特权或权限不足,中断一个事务之前完成,或禁用连接DNS等基本网络服务。监控软件为任何意想不到的行为。如果你触发一个未处理的异常或类似的错误被发现,由应用程序的环境中,它仍可能表明意想不到的条件并不是由应用程序本身。 |
自动静态分析
自动静态分析,通常被称为静态应用程序安全性测试(科协),可以找到一些实例的这个弱点分析源代码或二进制/编译后的代码,而不必执行它。通常情况下,这是通过建立一个模型的数据流和控制流,然后寻找潜在攻击模式,连接“源”与“下沉”(输入)的起源(目的地数据与外部组件交互,较低的层,如操作系统,等等)。
|
会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 |
类型 |
ID |
的名字 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
398年 |
7 pk -代码质量 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
730年 |
OWASP十大2004类别A9 -拒绝服务 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
743年 |
CERT C安全编码标准(2008)第十章-输入输出(FIO) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
752年 |
2009年前25 -资源管理风险 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
857年 |
CERT甲骨文安全Java编码标准(2011)第14章-输入输出(FIO) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
876年 |
CERT c++安全编码部分08 -内存管理(MEM) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
877年 |
CERT c++安全编码部分09 -输入输出(FIO) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
882年 |
CERT c++安全编码部分14 -并发(CON) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
982年 |
SFP二级集群:未能释放资源 |
MemberOf |
视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 |
1003年 |
弱点简化映射的漏洞发布 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1147年 |
SEI CERT甲骨文Java安全编码标准,指南13。输入输出(FIO) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1162年 |
SEI CERT 08 C编码标准指导方针。内存管理(MEM) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1163年 |
SEI CERT 09 C编码标准指导方针。输入输出(FIO) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1306年 |
方案及质量措施——可靠性 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1308年 |
方案及质量措施,安全 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1309年 |
方案及质量措施——效率 |
MemberOf |
视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 |
1340年 |
方案及数据保护措施 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1416年 |
综合分类:资源生命周期管理 |
脆弱性映射笔记
用法:Allowed-with-Review
(CWE ID可以用来映射到实际的漏洞在有限的情况下需要仔细审查) |
原因:抽象 |
理由是: 这个CWE条目是一个类并会基本的孩子可能更合适 |
评论: 检查这个条目的孩子是否有一个更好的选择 |
笔记
的关系
重叠内存泄漏,不对称的资源消耗,畸形的输入错误。
分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
千鸟 |
|
|
不当关机或释放资源 |
7有害的王国 |
|
|
未释放的资源 |
OWASP十大2004 |
A9 |
CWE更具体 |
拒绝服务 |
CERT C安全编码 |
FIO42-C |
CWE更抽象 |
当他们不再需要关闭文件 |
CERT C安全编码 |
MEM31-C |
CWE更抽象 |
在不再需要时释放动态分配的内存 |
CERT甲骨文安全Java编码标准(2011) |
FIO04-J |
|
不再需要时释放资源 |
软件故障模式 |
SFP14 |
|
未能释放资源 |
引用
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪恶之八:c++灾难。”Page 143. McGraw-Hill. 2010. |
内容的历史
提交 |
提交日期 |
提交者 |
组织 |
2006-07-19 (CWE草案3,2006-07-19) |
千鸟 |
|
|
修改 |
修改日期 |
修饰符 |
组织 |
2008-07-01 |
Eric Dalci |
Cigital |
更新Time_of_Introduction |
2008-08-15 |
|
Veracode |
建议OWASP 2004年排名前十的映射 |
2008-09-08 |
CWE内容团队 |
主教法冠 |
更新描述、关系、Other_Notes Taxonomy_Mappings |
2008-10-14 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2008-11-24 |
CWE内容团队 |
主教法冠 |
更新的关系,Taxonomy_Mappings |
2009-01-12 |
CWE内容团队 |
主教法冠 |
更新Common_Consequences、Likelihood_of_Exploit Other_Notes、Potential_Mitigations Relationship_Notes,关系,Weakness_Ordinalities |
2009-03-10 |
CWE内容团队 |
主教法冠 |
更新Potential_Mitigations |
2009-05-27 |
CWE内容团队 |
主教法冠 |
更新描述、人际关系 |
2009-07-27 |
CWE内容团队 |
主教法冠 |
更新Demonstrative_Examples Related_Attack_Patterns |
2009-10-29 |
CWE内容团队 |
主教法冠 |
更新Other_Notes |
2010-02-16 |
CWE内容团队 |
主教法冠 |
更新Potential_Mitigations、人际关系 |
2010-06-21 |
CWE内容团队 |
主教法冠 |
更新Detection_Factors Potential_Mitigations |
2010-12-13 |
CWE内容团队 |
主教法冠 |
更新Demonstrative_Examples |
2011-03-29 |
CWE内容团队 |
主教法冠 |
更新Weakness_Ordinalities |
2011-06-01 |
CWE内容团队 |
主教法冠 |
更新Common_Consequences、关系、Taxonomy_Mappings |
2011-06-27 |
CWE内容团队 |
主教法冠 |
更新Common_Consequences |
2011-09-13 |
CWE内容团队 |
主教法冠 |
更新的关系,Taxonomy_Mappings |
2012-05-11 |
CWE内容团队 |
主教法冠 |
更新Demonstrative_Examples、引用关系,Taxonomy_Mappings |
2014-02-18 |
CWE内容团队 |
主教法冠 |
更新Demonstrative_Examples |
2014-06-23 |
CWE内容团队 |
主教法冠 |
更新Related_Attack_Patterns |
2014-07-30 |
CWE内容团队 |
主教法冠 |
更新的关系,Taxonomy_Mappings |
2015-12-07 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2017-01-19 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2017-05-03 |
CWE内容团队 |
主教法冠 |
更新Related_Attack_Patterns |
2017-11-08 |
CWE内容团队 |
主教法冠 |
更新Applicable_Platforms、Functional_Areas Likelihood_of_Exploit、关系、Taxonomy_Mappings |
2019-01-03 |
CWE内容团队 |
主教法冠 |
更新关系,Taxonomy_Mappings,类型 |
2019-06-20 |
CWE内容团队 |
主教法冠 |
更新Related_Attack_Patterns、人际关系 |
2020-02-24 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2020-06-25 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2020-08-20 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2020-12-10 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2021-03-15 |
CWE内容团队 |
主教法冠 |
更新Demonstrative_Examples |
2021-07-20 |
CWE内容团队 |
主教法冠 |
更新Related_Attack_Patterns |
2022-10-13 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2023-01-31 |
CWE内容团队 |
主教法冠 |
更新描述,Detection_Factors |
2023-04-27 |
CWE内容团队 |
主教法冠 |
更新Detection_Factors、关系、Time_of_Introduction |
2023-06-29 |
CWE内容团队 |
主教法冠 |
更新Mapping_Notes |
更多的信息是可用的,请编辑自定义过滤器或选择一个不同的过滤器。
|