描述
产品不初始化或不正确地初始化一个资源,这可能会让资源在一个意想不到的状态时访问或使用。
扩展描述
这可能有安全隐患时,相关资源预计将有一定的属性或值,如一个变量决定是否用户已经通过身份验证。
的关系
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
自然 |
类型 |
ID |
的名字 |
ChildOf |
支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 |
664年 |
资源的不当控制通过它的生命周期 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
454年 |
可信的外部初始化变量或数据存储 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
455年 |
出口在初始化失败 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
770年 |
资源配置没有限制或节流 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
908年 |
使用未初始化资源 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
909年 |
失踪的初始化资源 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
1051年 |
用硬编码的网络资源配置数据初始化 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
1052年 |
过度使用硬编码文本初始化 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
1188年 |
不安全的默认初始化资源 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
1221年 |
错误的注册违约或模块参数 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
1279年 |
密码操作之前运行支持单位是准备好了 |
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 |
请注意 |
实现 |
这个弱点可能发生在没有经过良好测试的代码路径,如罕见的错误条件。这是因为使用未初始化的数据将会发现一个错误在经常使用的功能。 |
操作 |
|
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
保密
|
当重用资源如内存或程序变量,该资源的原始内容可能不被清除之前,发送到一个不可信的聚会。 |
|
访问控制
|
如果强调安全的决策依赖于一个变量有一个“0”或同等价值,这个编程语言执行初始化代表程序员,然后绕过安全可能发生。 |
|
可用性
|
未初始化的数据可能包含值,导致程序流改变程序员无意的方式。例如,如果使用未初始化的变量作为数组索引在C语言中,那么它可能产生以前的内容索引数组的范围外,在其他环境中可能导致崩溃或退出。 |
|
利用的可能性
示范例子
示例1
在这里,一个布尔initiailized领域咨询,以确保初始化任务只完成了一次。然而,该领域是在静态初始化错误地设置为true,所以从来没有达到初始化代码。
私人布尔= true初始化; 公共空间someMethod () {
示例2
下面的代码只打算限制某些操作管理员。
用户名=美元GetCurrentUser (); (状态= GetStateData美元用户名); 如果(定义(状态)美元){
(uid = ExtractUserID美元状态); }
#做东西
如果(uid = = 0美元){
DoAdminThings (); }
如果应用程序无法提取状态信息——比如说,由于数据库超时,那么$ uid变量将不会由程序员显式地设置。这将导致美元uid被视为等同于“0”条件,允许原始用户执行管理员操作。即使攻击者不能直接影响状态数据,意想不到的错误可能导致不正确的权限分配给一个用户只是偶然。
示例3
下面的代码将连接字符串变量并打印字符串。
char str [20]; strcat (str,“hello world”); printf (" % s ", str);
这可能看起来无辜的足够,但是str未初始化,所以它包含随机存储器。因此,str[0]可能不包含零终结者,所以复制可能开始一个偏移量0。结果可能会有所不同,这取决于底层的内存。
如果找到零终结者str[8]之前,一些字节的随机垃圾前将打印字符串“hello world”。从以前使用内存可能包含敏感信息,比如密码(这可能发生的结果CWE-14或cwe - 244)。在这个例子中,它可能不是一个大问题,但考虑会发生什么如果大量内存输出零终结者。
如果没发现空终结者str[8]之前,可能会发生缓冲区溢出,因为strcat首先会查找零终结者,然后复制12字节从这个位置开始。此外,缓冲罩上可能发生(cwe - 126)如果一个空终结者不是发现在年底前达到内存段,导致段错误和崩溃。
观察到的例子
参考 |
描述 |
|
链:无效的值可以防止一个库文件被包括在内,跳过初始化的关键变量,导致合成eval注入。 |
|
不当的错误检查保护机制产生未初始化的变量,允许安全旁路和代码的执行。 |
|
使用未初始化的内存可能会允许代码执行。 |
|
未初始化的指针会导致崩溃和可能的代码执行。 |
|
操作系统内核不重置一个端口,当开始一个setuid程序,允许本地用户访问端口和获得的特权。 |
|
产品不清楚内存内容时生成一个错误消息,导致信息泄漏。 |
|
没有初始化触发NULL指针或双重释放。 |
|
未初始化的变量导致流行的桌面应用程序的代码执行。 |
|
链:未初始化的变量会导致无限循环。 |
|
链:不适当的初始化会导致内存泄露。 |
|
综合:竞争条件允许攻击者修改一个对象虽然仍被初始化,导致软件访问未初始化的内存。 |
|
|
|
链:游戏服务器可以访问玩家数据结构初始化之前发生了导致零废弃 |
|
链:可以解除引用未初始化的函数指针允许代码执行 |
|
链:初始化内存不当会导致零废弃 |
|
链:一些贫穷的ioctl不验证结构已经初始化之前调用,导致零废弃 |
潜在的缓解措施
阶段:需求
使用一种语言,不允许这个弱点或发生提供了结构,使这个弱点更容易避免的。
例如,在Java中,如果程序员不显式初始化一个变量,然后代码可以产生一个编译时错误(如果变量是本地)或自动初始化变量的默认值变量的类型。在Perl中,如果没有执行显式的初始化,然后分配一个默认值undef,解释为0,假,或同等价值取决于上下文变量的访问。
|
阶段:体系结构和设计
识别所有的变量和数据存储,接收信息从外部来源,并应用输入验证以确保他们只是预期值初始化。 |
实施阶段:
显式初始化所有的变量和其他数据存储在声明或在第一次使用。 |
实施阶段:
密切关注复杂的条件,影响初始化,因为一些条件可能不执行初始化。 |
实施阶段:
|
阶段:构建和编译
运行或编译您的产品设置生成警告未初始化的变量或数据。 |
测试阶段:
使用自动静态分析工具针对这种类型的弱点。许多现代技术利用数据流分析,减少假阳性的数量。这不是一个完美的解决方案,因为100%的准确率和覆盖率不可行。 |
弱点Ordinalities
Ordinality |
描述 |
主 |
(其他弱点的弱点存在独立的) |
合成 |
(缺点是通常与其他弱点的存在) |
检测方法
自动动态分析
这个弱点能被探测到的使用动态交互的工具和技术的软件使用大型测试套件和许多不同的输入,如模糊测试(起毛)健壮性测试和故障注入。软件的操作可能慢下来,但它不应该成为不稳定,崩溃,或者产生不正确的结果。
初始化问题可以检测到压力测试通过调用软件同时从大量的线程或进程,并寻找任何意想不到的行为的证据。软件的操作可能慢下来,但它不应该成为不稳定,崩溃,或者产生不正确的结果。
|
手动动态分析
识别错误情况不太可能发生在正常使用和触发器。例如,在低内存条件下运行程序,运行特权或权限不足,中断一个事务之前完成,或禁用连接DNS等基本网络服务。监控软件为任何意想不到的行为。如果你触发一个未处理的异常或类似的错误被发现,由应用程序的环境中,它仍可能表明意想不到的条件并不是由应用程序本身。 |
会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 |
类型 |
ID |
的名字 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
740年 |
CERT C安全编码标准(2008)第七章-数组(ARR) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
742年 |
CERT C安全编码标准(2008)第9章-内存管理(MEM) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
752年 |
2009年前25 -资源管理风险 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
846年 |
CERT甲骨文安全Java编码标准(2011)第3章-声明和初始化(DCL) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
874年 |
CERT c++安全编码部分06 -数组和STL (ARR) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
876年 |
CERT c++安全编码部分08 -内存管理(MEM) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
962年 |
SFP二级集群:未经检查的状态情况 |
MemberOf |
视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 |
1003年 |
弱点简化映射的漏洞发布 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1135年 |
SEI CERT甲骨文安全编码标准Java - 01指导方针。声明和初始化(DCL) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1306年 |
方案及质量措施——可靠性 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1308年 |
方案及质量措施,安全 |
MemberOf |
视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 |
1340年 |
方案及数据保护措施 |
分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
千鸟 |
|
|
不正确的初始化 |
CERT C安全编码 |
ARR02-C |
|
显式地指定数组界限,即使隐式定义的初始化器 |
CERT甲骨文安全Java编码标准(2011) |
DCL00-J |
|
防止类初始化周期 |
软件故障模式 |
SFP4 |
|
不受控制的状态条件 |
引用
|
|
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第七章“变量初始化”,312页。1版。艾迪生卫斯理》2006。 |
内容的历史
提交 |
提交日期 |
提交者 |
组织 |
2008-04-11 |
千鸟 |
|
|
修改 |
修改日期 |
修饰符 |
组织 |
2008-07-01 |
肖恩Eidemiller |
Cigital |
添加/更新示范例子 |
2008-07-01 |
Eric Dalci |
Cigital |
更新Potential_Mitigations Time_of_Introduction |
2008-09-08 |
CWE内容团队 |
主教法冠 |
更新的关系,Taxonomy_Mappings |
2008-11-24 |
CWE内容团队 |
主教法冠 |
更新的关系,Taxonomy_Mappings |
2009-01-12 |
CWE内容团队 |
主教法冠 |
更新Common_Consequences Demonstrative_Examples,描述、Likelihood_of_Exploit Modes_of_Introduction,名字,Observed_Examples, Potential_Mitigations,引用关系,Weakness_Ordinalities |
2009-03-10 |
CWE内容团队 |
主教法冠 |
更新Potential_Mitigations |
2009-05-27 |
CWE内容团队 |
主教法冠 |
更新描述、人际关系 |
2009-07-27 |
CWE内容团队 |
主教法冠 |
更新Related_Attack_Patterns |
2009-10-29 |
CWE内容团队 |
主教法冠 |
更新Common_Consequences |
2010-02-16 |
CWE内容团队 |
主教法冠 |
更新Potential_Mitigations |
2010-04-05 |
CWE内容团队 |
主教法冠 |
更新Applicable_Platforms |
2010-06-21 |
CWE内容团队 |
主教法冠 |
更新Detection_Factors Potential_Mitigations |
2010-09-27 |
CWE内容团队 |
主教法冠 |
更新Observed_Examples |
2011-06-01 |
CWE内容团队 |
主教法冠 |
更新Common_Consequences、关系、Taxonomy_Mappings |
2011-09-13 |
CWE内容团队 |
主教法冠 |
更新的关系,Taxonomy_Mappings |
2012-05-11 |
CWE内容团队 |
主教法冠 |
更新Demonstrative_Examples、引用关系,Taxonomy_Mappings |
2013-02-21 |
CWE内容团队 |
主教法冠 |
更新Demonstrative_Examples、人际关系 |
2014-07-30 |
CWE内容团队 |
主教法冠 |
更新的关系,Taxonomy_Mappings |
2015-12-07 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2017-01-19 |
CWE内容团队 |
主教法冠 |
更新的类型 |
2017-11-08 |
CWE内容团队 |
主教法冠 |
更新引用,Taxonomy_Mappings |
2019-01-03 |
CWE内容团队 |
主教法冠 |
更新Related_Attack_Patterns、关系、Taxonomy_Mappings |
2019-06-20 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2020-02-24 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2020-06-25 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2020-08-20 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2020-12-10 |
CWE内容团队 |
主教法冠 |
更新的关系 |
2021-03-15 |
CWE内容团队 |
主教法冠 |
更新Observed_Examples |
2023-01-31 |
CWE内容团队 |
主教法冠 |
更新描述、Potential_Mitigations关系 |
以前的条目名称 |
改变日期 |
以前的条目名称 |
2009-01-12 |
不正确或不完整的初始化 |
|
|