CWE

常见的弱点枚举

一个由社区开发的软件&硬件缺陷类型的列表

2021 CWE最重要的硬件的弱点
CWE最危险的弱点
>CWE列表> CWE -个人字典定义(4.10)
ID

cwe - 404:不当关机或释放资源

弱点ID: 404
抽象:
结构:简单的
视图定制的信息:
+描述
产品不释放或错误发布资源前可以重用。
+扩展描述
创建一个资源或分配时,开发人员负责正确地释放资源以及占所有潜在路径过期或失效,比如一组一段时间或撤销。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为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定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 401年 失踪之后释放内存有效寿命
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 772年 失踪后释放资源的有效寿命
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 775年 失踪的文件描述符或处理后有效
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为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()方法会被调用。在忙碌的环境中,操作系统可以使用所有可用的文件句柄前关闭()函数。

(坏的代码)
例如语言:Java
私人空间processFile(字符串帧)
{
BufferReader费尔= new BufferReader(新FileReader(帧));
字符串行;
在((= fil.ReadLine行())! = null)
{
processLine(线);
}
}

良好的代码示例简单地添加一个显式的调用关闭()函数使用文件系统完成后。在这样的一个简单的例子很容易看到并修复问题。在实际系统中,这个问题可能更为模糊。

(好的代码)
例如语言:Java
私人空间processFile(字符串帧)
{
BufferReader费尔= new BufferReader(新FileReader(帧));
字符串行;
在((= fil.ReadLine行())! = null)
{
processLine(线);
}
fil.Close ();
}

示例2

这段代码试图打开一个连接到一个数据库并抓住任何可能发生的异常。

(坏的代码)
例如语言:Java
尝试{
连接= DriverManager.getConnection监狱(some_connection_string);
}
捕获(异常e) {
日志(e);
}

如果发生异常后建立数据库连接在同一连接关闭之前,数据库连接池可能会变得疲惫。如果超出可用连接的数量,其他用户不能访问这个资源,有效地拒绝访问应用程序。

示例3

在正常情况下以下c#代码执行一个数据库查询,处理数据库返回的结果,并关闭SqlConnection对象分配。但如果发生异常时执行的SQL或处理结果,SqlConnection对象不是封闭的。如果经常出现这种情况,数据库将耗尽可用的游标和无法执行任何更多的SQL查询。

(坏的代码)
例如语言:c#

SqlConnection康涅狄格州= new SqlConnection (connString);
SqlCommand cmd = new SqlCommand(参数);
cmd。Connection = conn;
conn.Open ();
SqlDataReader rdr = cmd.ExecuteReader ();
HarvestResults (rdr);
conn.Connection.Close ();

示例4

下面的C函数不关闭文件句柄打开如果出现错误。如果长期存在的过程,这个过程可以运行文件句柄。

(坏的代码)
例如语言: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,新的/删除,新的[]/[]删除分配/释放资源。

(坏的代码)
例如语言:c++
A类{
空白foo ();
};
无效::foo () {
int * ptr;
ptr = (int *) malloc (sizeof (int));
删除ptr;
}

例子6

在这个例子中,程序调用delete()函数在非堆内存。

(坏的代码)
例如语言:c++
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年 方案及数据保护措施
+笔记

的关系

重叠内存泄漏,不对称的资源消耗,畸形的输入错误。
+分类法映射
映射分类名称 节点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 千鸟
+修改
修改日期 修饰符 组织
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年1月31日