CWE

常见的弱点枚举

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

2021 CWE最重要的硬件的弱点
CWE最危险的弱点
>CWE列表>视图片:cwe - 1178:解决的弱点SEI CERT Perl编码标准(4.10)
ID

CWE观点:解决的弱点SEI CERT Perl编码标准

视图ID: 1178
类型:
下载:小册子|CSV|XML
+客观的
CWE条目在这个视图(图)全部或部分消除遵循的指导在线维基,反映了当前的规则和建议SEI CERT Perl编码标准。
+观众
利益相关者 描述
软件开发人员 遵循SEI CERT Perl编码标准,开发人员将能够完全或部分防止缺陷中发现这一观点。此外,开发人员可以使用CWE覆盖图,以确定哪些弱点并不直接解决的标准,这将有助于识别并解决剩余空白培训、工具收购,或其他方法减少弱点。
产品的客户 如果一个软件开发人员自称是SEI CERT Perl编码标准后,然后客户可以寻找弱点在这个视图中以制定独立的这种说法的证据。
教育工作者 教育者可以以多种方式使用这个视图。例如,如果有一个专注于教学的弱点,教育者可以链接到相关的安全的编码标准。
+的关系
下面的图显示了树状之间的关系在不同级别的抽象上存在的弱点。在最高的层次上,类别和支柱存在弱点。类别(不是技术上的缺点)是特殊CWE条目用于集团弱点,共享一个共同的特点。柱子是描述的弱点在最抽象的时尚。下面这些顶级条目的弱点是不同程度的抽象。类仍然非常抽象,通常独立于任何特定的语言或技术。基础水平的弱点是用来提供一个更具体的类型的弱点。变量是一个弱点,在很低的水平的细节,描述通常局限于一个特定的语言或技术。链是一系列的缺点,必须可以连续产生可利用的漏洞。而复合的缺点是一组必须同时在场,以产生一个可利用的漏洞。
显示详细信息:
1178 -解决的弱点SEI CERT Perl编码标准
+ 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。01 SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS)- (1179)
1178年 (解决的弱点SEI CERT Perl编码标准)>1179年 01 (SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS))
弱点这类相关的规则和建议输入验证和数据的卫生处理(IDS)部分SEI CERT Perl编码标准。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。不当限制限制目录的路径名(“路径遍历”)(22)
1178年 (解决的弱点SEI CERT Perl编码标准)>1179年 01 (SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS))>22 (不当限制限制目录的路径名(路径遍历))
产品使用外部输入来构造一个路径名,目的是为了辨别一个文件或目录,坐落在父目录的限制,但是产品不正确路径名中的中和特殊元素可以导致路径名来解决限制目录以外的位置。目录遍历路径遍历
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。使用外部控制的格式字符串- (134)
1178年 (解决的弱点SEI CERT Perl编码标准)>1179年 01 (SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS))>134年 (使用外部控制的格式字符串)
产品使用一个函数,它接受一个格式字符串作为参数,但格式字符串来自外部源。
* 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。不当的验证数组索引- (129)
1178年 (解决的弱点SEI CERT Perl编码标准)>1179年 01 (SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS))>129年 (不正确验证数组索引)
产品使用不受信任的输入在计算或使用数组索引,但是产品不验证或不正确验证索引,确保索引引用数组中的一个有效位置。禁止入内的数组索引index-out-of-range数组索引下溢
* 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。内存分配过多的大小值- (789)
1178年 (解决的弱点SEI CERT Perl编码标准)>1179年 01 (SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS))>789年 (内存分配与过度大小值)
基于一个不可信的产品分配内存,大尺寸值,但这并不能保证尺寸在预期范围内,允许任意数量的内存分配。堆栈疲惫
* 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。不当的编码或逃避的输出- (116)
1178年 (解决的弱点SEI CERT Perl编码标准)>1179年 01 (SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS))>116年 (不正确的编码或转义输出)
产品准备一个结构化的信息沟通与另一个组件,但编码或逃避的数据丢失或错误地完成。因此,是不会保留消息的预期结构。输出卫生处理输出验证输出编码
* 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。不当中和一个命令中使用的特殊元素(“命令注入”)- (77)
1178年 (解决的弱点SEI CERT Perl编码标准)>1179年 01 (SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS))>77年 (不当中和特殊元素中使用一个命令(“命令注入”))
产品结构的全部或部分命令使用externally-influenced输入从一个上游组件,但这并不中和或错误地中和特殊元素时可以修改预定的命令发送到下游组件。
* 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。不当中和指令的动态评估代码(Eval注入)- (95)
1178年 (解决的弱点SEI CERT Perl编码标准)>1179年 01 (SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS))>95年 (不正确的指令在动态评估代码中和(Eval注入))
产品从一个上游组件接收输入,但它不会消除或中和代码语法错误使用前输入在一个动态的评价(如打电话。“eval”)。
+ 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。02 SEI CERT Perl编码标准,指导方针。声明和初始化(DCL)- (1180)
1178年 (解决的弱点SEI CERT Perl编码标准)>1180年 02 (SEI CERT Perl编码标准,指导方针。声明和初始化(DCL))
弱点这类相关的规则和建议的声明和初始化(DCL)部分SEI CERT Perl编码标准。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。函数调用与指定参数不正确- (628)
1178年 (解决的弱点SEI CERT Perl编码标准)>1180年 02 (SEI CERT Perl编码标准,指导方针。声明和初始化(DCL))>628年 (函数调用错误指定参数)
产品调用一个函数,程序,或常规参数不正确地指定,导致always-incorrect行为和合成的弱点。
* 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。失踪的初始化一个变量- (456)
1178年 (解决的弱点SEI CERT Perl编码标准)>1180年 02 (SEI CERT Perl编码标准,指导方针。声明和初始化(DCL))>456年 (没有初始化的变量)
产品不关键变量进行初始化,导致执行环境使用意想不到的价值。
* 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。使用未初始化的变量- (457)
1178年 (解决的弱点SEI CERT Perl编码标准)>1180年 02 (SEI CERT Perl编码标准,指导方针。声明和初始化(DCL))>457年 (使用未初始化的变量)
代码使用一个变量没有初始化,导致不可预知的或意想不到的结果。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。使用过时的功能- (477)
1178年 (解决的弱点SEI CERT Perl编码标准)>1180年 02 (SEI CERT Perl编码标准,指导方针。声明和初始化(DCL))>477年 (使用过时的函数)
代码使用过时或陈旧的函数,这意味着没有得到积极检查或维护的代码。
+ 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。03 SEI CERT Perl编码标准,指导方针。表达式(EXP)- (1181)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))
弱点这类相关的规则和建议的表达式(EXP)部分SEI CERT Perl编码标准。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。意想不到的状态代码或返回值- (394)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>394年 (意想不到的状态代码或返回值)
产品不正确检查当函数或操作函数返回一个值,是合法的,但不是所期望的产品。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。运算符优先级逻辑错误- (783)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>783年 (运算符优先级逻辑错误)
产品使用一个表达式的运算符优先级导致使用错误的逻辑。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。使用过时的功能- (477)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>477年 (使用过时的函数)
代码使用过时或陈旧的函数,这意味着没有得到积极检查或维护的代码。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。未捕获异常- (248)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>248年 (异常)
从一个函数抛出异常,但这并不是她的老公知道。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。未经检查的错误条件- (391)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>391年 (未检测错误条件)
(计划在弃用。看到维修笔记和考虑cwe - 252, cwe - 248,或cwe - 1069。]我gnoring exceptions and other error conditions may allow an attacker to induce unexpected behavior unnoticed.
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。清理不当抛出异常- (460)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>460年 (清理不当抛出例外)
产品不清理它的状态或不正确清理其状态时将抛出一个异常,导致意想不到的状态或控制流。
* 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。不正确的控制流范围- (705)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>705年 (不正确的控制流范围)
产品不正常控制流返回到正确的位置后,完成了一个任务或发现一个不寻常的条件。
* 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。不适当的检查异常或异常情况- (754)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>754年 (不正确检查异常或异常情况)
产品不检查或不正确检查异常或异常情况不会经常发生在日常操作的产品。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。不返回值- (252)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>252年 (不返回值)
产品不会检查方法或函数返回值,可以防止检测意想不到的状态和条件。
* 链链——一个复合元素是一个序列的两个或两个以上的独立的缺点,可以在软件中紧密联系在一起。一个弱点,X,可以直接创建所必需的条件导致另一个弱点,Y,进入一个脆弱的状态。,当这一切发生的时候,CWE指X作为“主”Y, Y是“合成”X连锁可能涉及两个以上缺点,在某些情况下,他们可能有一个树状结构。检查返回值为NULL指针- (690)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>690年 (不返回值为NULL指针)
产品后不检查错误调用函数可以返回一个空指针如果函数失败,导致合成NULL指针。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。函数调用与指定参数不正确- (628)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>628年 (函数调用错误指定参数)
产品调用一个函数,程序,或常规参数不正确地指定,导致always-incorrect行为和合成的弱点。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。返回一个可变对象,一个不受信任的调用者- (375)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>375年 (返回一个可变对象,一个不受信任的调用方)
发送似乎与可变数据的返回值可能会导致调用函数被修改或删除的数据。
* 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。使用错误的操作符的字符串比较- (597)
1178年 (解决的弱点SEI CERT Perl编码标准)>1181年 03 (SEI CERT Perl编码标准,指导方针。表达式(EXP))>597年 (使用错误的操作符字符串比较)
产品使用错误的操作符比较字符串时,比如使用“= =”当.equals()方法应该使用。
+ 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。04 SEI CERT Perl编码标准,指导方针。整数(INT)- (1182)
1178年 (解决的弱点SEI CERT Perl编码标准)>1182年 04 (SEI CERT Perl编码标准,指导方针。整数(INT))
弱点这类相关的规则和建议的整数(INT)部分SEI CERT Perl编码标准。
* 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。数字错误- (189)
1178年 (解决的弱点SEI CERT Perl编码标准)>1182年 04 (SEI CERT Perl编码标准,指导方针。整数(INT))>189年 (数字错误)
这一类的弱点有关不当或转换的数字计算。
* 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。05年SEI CERT Perl编码标准,指导方针。字符串(STR)- (1183)
1178年 (解决的弱点SEI CERT Perl编码标准)>1183年 05 (SEI CERT Perl编码标准,指导方针。字符串(STR))
弱点这类相关的规则和建议的字符串(STR)部分SEI CERT Perl编码标准。
+ 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。06 SEI CERT Perl编码标准,指导方针。面向对象编程(OOP)- (1184)
1178年 (解决的弱点SEI CERT Perl编码标准)>1184年 06 (SEI CERT Perl编码标准,指导方针。面向对象编程(OOP))
弱点这类相关的规则和建议的面向对象编程(OOP)部分SEI CERT Perl编码标准。
* 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。访问私有变量通过公共方法至关重要- (767)
1178年 (解决的弱点SEI CERT Perl编码标准)>1184年 06 (SEI CERT Perl编码标准,指导方针。面向对象编程(OOP))>767年 (通过公共方法访问重要的私有变量)
产品定义了一个公共方法,读取或修改一个私有变量。
+ 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。07年SEI CERT Perl编码标准,指导方针。文件输入和输出(FIO)- (1185)
1178年 (解决的弱点SEI CERT Perl编码标准)>1185年 07 (SEI CERT Perl编码标准,指导方针。文件输入和输出(FIO))
弱点这类相关的规则和建议在文件的输入和输出(FIO)部分SEI CERT Perl编码标准。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。不当链接之前决议文件访问(“链接后”)(59)
1178年 (解决的弱点SEI CERT Perl编码标准)>1185年 07 (SEI CERT Perl编码标准,指导方针。文件输入和输出(FIO))>59 (不正确的链接之前决议文件访问(“链接后”))
产品基于文件名试图访问一个文件,但它不适当阻止,文件名标识一个链接或快捷方式,解决了一个意想不到的资源。不安全的临时文件拉链滑
+ 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。SEI CERT Perl编码标准——50的指导方针。杂项(MSC)- (1186)
1178年 (解决的弱点SEI CERT Perl编码标准)>1186年 50 (SEI CERT Perl编码标准,指导方针。杂项(MSC))
弱点这类相关的规则和建议的杂项(MSC)部分SEI CERT Perl编码标准。
* 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。死代码- (561)
1178年 (解决的弱点SEI CERT Perl编码标准)>1186年 50 (SEI CERT Perl编码标准,指导方针。杂项(MSC))>561年 (死代码)
产品包含死代码,无法执行。
* 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。赋值变量而不使用- (563)
1178年 (解决的弱点SEI CERT Perl编码标准)>1186年 50 (SEI CERT Perl编码标准,指导方针。杂项(MSC))>563年 (任务变量没有使用)
变量的值被分配,但不会使用,使它一个死去的商店。未使用的变量
+笔记

的关系

在这个视图的关系确定基于特定语句中的规则与标准。不是所有的规则都有直接的关系个人的弱点,尽管他们可能在特定情况下有链接关系。
+引用
软件工程研究所(ref - 1011)。“SEI CERT Perl编码标准”。<https://wiki.sei.cmu.edu/confluence/display/perl/SEI +证书+ Perl +编码+标准>。
+查看指标
连续波在这个视图 总连续波
弱点 26 933年
类别 9 352年
的观点 0 47
35 1332年
+内容的历史
+提交
提交日期 提交者 组织
2019-01-08 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2020-02-24 CWE内容团队 主教法冠
更新View_Audience

视图组件

cwe - 767:访问私有变量通过公共方法至关重要

弱点ID: 767
抽象:变体
结构:简单的
视图定制的信息:
+描述
产品定义了一个公共方法,读取或修改一个私有变量。
+扩展描述
如果攻击者修改变量包含意想不到的价值,这可能违反假设从代码的其他部分。此外,如果攻击者可以读私有变量,它可能暴露敏感信息或更容易发动进一步攻击。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 668年 曝光资源错误的球体
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 275年 权限的问题
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

c++患病率(待定)

c#患病率(待定)

Java患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性
其他

技术的影响:修改应用程序数据;其他

+示范例子

示例1

下面的示例声明一个关键变量是私有的,然后允许变量被修改公共方法。

(坏的代码)
例如语言:c++
私人:浮动价格;
公众:void changePrice(浮动newPrice) {
价格= newPrice;
}

示例2

下面的例子可以用来实现一个用户论坛,一个用户(UID)可以在多个概要文件之间切换(PID)。

(坏的代码)
例如语言:Java
公共类客户{
私人int UID;
公共int PID;
私人字符串的用户名;
公共端(字符串的用户名){
PID = getDefaultProfileID ();
UID = mapUserNametoUID(用户名);
这一点。用户名=用户名;
}
公共空间setPID (int ID) {
UID = ID;
}
}

程序员实现setPID修改PID变量的意图,但由于一个错字。意外的关键变量指定UID。如果程序允许将概要文件id在1到10之间,但1意味着用户的UID是视为一个管理员,然后用户可以获得管理权限的这个错误。

+潜在的缓解措施

实施阶段:

适当地使用类accessor和mutator方法。接受数据时执行验证从公共方法,目的是修改一个至关重要的私有变量。也要确保适当的访问控制被应用在一个公共方法和关键数据的接口。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 963年 SFP二级集群:公开数据
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1184年 06 SEI CERT Perl编码标准,指导方针。面向对象编程(OOP)
+笔记

维护

这个条目是公共方法与访问控制密切相关。如果公共方法限制通过适当的访问控制,那么私有变量中的信息将不会接触到意想不到的聚会。可能会有链接或复合不当访问控制之间的关系,这一弱点。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
未能保护存储的数据修改
软件故障模式 SFP23 公开的数据
SEI CERT Perl编码标准 OOP31-PL 不精确的 不能访问私有变量或子程序在其他包吗
+内容的历史
+提交
提交日期 提交者 组织
2009-03-03 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新的关系
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Likelihood_of_Exploit、关系、Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2020-02-24 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
2023-01-31 CWE内容团队 主教法冠
更新描述

cwe - 563:赋值变量而不使用

弱点ID: 563
抽象:变体
结构:简单的
视图定制的信息:
+描述
变量的值被分配,但不会使用,使它一个死去的商店。
+扩展描述
作业后,变量是分配另一个值或超出范围。很可能变量只是残留,但也有可能未使用的变量指出一个错误。
+替代条款
未使用的变量
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 1164年 不相关的代码
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1006年 糟糕的编码实践
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
其他

技术的影响:质量退化;不同的上下文

这个弱点可能表明一个错误的程序或弃用变量,没有删除,表明质量较差。这可能导致进一步的缺陷和弱点的引入。
+示范例子

示例1

下面的代码片段分配变量r,然后覆盖值没有使用它。

(坏的代码)
例如语言:C
r = getName ();
r = getNewBuffer (buf);
+潜在的缓解措施

实施阶段:

删除未使用的变量的代码。
+弱点Ordinalities
Ordinality 描述
间接
(缺点是一个质量问题,可能会间接更容易引入的安全相关的弱点或使他们更难检测)
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 747年 CERT C安全编码标准(2008)第14章-杂项(MSC)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 883年 CERT c++安全编码部分49 -杂项(MSC)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 886年 SFP主要集群:未使用的实体
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1186年 SEI CERT Perl编码标准——50的指导方针。杂项(MSC)
+分类法映射
映射分类名称 节点ID 适合 映射节点名
CERT C安全编码 MSC00-C 编译干净地警告级别很高
SEI CERT Perl编码标准 MSC01-PL 不精确的 检测和删除未使用的变量
软件故障模式 SFP2 未使用的实体
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 匿名工具供应商(NDA)
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Potential_Mitigations Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新描述、关系、Other_Notes Taxonomy_Mappings
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences、人际关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-06-23 CWE内容团队 主教法冠
更新Common_Consequences、描述、名称、Other_Notes
2014-07-30 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Alternate_Terms、名称、关系,Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings Weakness_Ordinalities
2020-02-24 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
+以前的条目名称
改变日期 以前的条目名称
2014-06-23 未使用的变量
2017-11-08 赋值变量而不使用(未使用的变量)

cwe - 561:死代码

弱点ID: 561
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品包含死代码,无法执行。
+扩展描述
死代码不能被执行的代码在运行的程序。周围的代码使它不可能执行一段代码。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 1164年 不相关的代码
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 570年 表达式总是错误的
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 571年 表达式总是正确的
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1006年 糟糕的编码实践
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
其他

技术的影响:质量退化

死代码的结果不能被执行的代码是一个迹象显示源代码的问题,需要修复,表明质量较差。
其他

技术的影响:减少可维护性

+示范例子

示例1

第二个if语句的条件无法满足。它要求非空的变量,而在年代唯一的路径可以被指定一个非空值有一个返回语句。

(坏的代码)
例如语言:c++
字符串s =零;
如果(b) {
s =“是”;
返回;
}

如果(s ! = null) {
死();
}

示例2

下面的类,两个私有方法调用,但是由于没有一个从其他地方调用,它们都是死代码。

(坏的代码)
例如语言:Java
公开课DoubleDead {
私人空间doTweedledee () {
doTweedledumb ();
}
私人空间doTweedledumb () {
doTweedledee ();
}
公共静态void main (String [] args) {
system . out。println(“运行DoubleDead”);
}
}

(在本例中它是一件好事,方法都死了:调用任何一种会导致无限循环)。

示例3

字段命名胶不是用于下面的类。类的作者不小心把引号字段名称,将其转换成一个字符串常数。

(坏的代码)
例如语言:Java
公开课死{
字符串胶;

公共字符串getGlue () {
返回“胶水”;
}
}
+观察到的例子
参考 描述
链:不正确的“goto”苹果产品绕过SSL证书验证,允许Adversary-in-the-Middle (AITM)攻击(苹果“goto失败”错误)。cwe - 705(不正确的控制流范围)- >cwe - 561(死代码)- >cwe - 295(不正确的证书验证)- >cwe - 393(返回错误状态码)- >cwe - 300(由Non-Endpoint通道访问)。
+潜在的缓解措施

实施阶段:

在部署应用程序之前删除死代码。

测试阶段:

使用一个静态分析工具发现死代码。
+弱点Ordinalities
Ordinality 描述
间接
(缺点是一个质量问题,可能会间接更容易引入的安全相关的弱点或使他们更难检测)
+检测方法

体系结构或设计审查

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 检验(IEEE 1028标准)(适用于需求、设计、源代码,等等)。
  • 正式的方法/ Correct-By-Construction
成本有效的部分报道:
  • 攻击建模

有效性:高

自动静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 二进制字节码质量分析
  • 比较二进制/字节码应用程序权限清单

有效性:高

动态分析与人工解释结果

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 自动化监控执行

有效性:飙升部分

自动静态分析

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 许可清单分析

有效性:飙升部分

自动静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 源代码质量分析仪
成本有效的部分报道:
  • 警告标志
  • 源代码缺陷分析仪
  • Context-configured源代码分析器

有效性:高

动态分析与自动化的结果解释

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • Web应用程序扫描
  • Web服务的扫描仪
  • 数据库扫描仪

有效性:飙升部分

人工静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 手工源代码审查(不检查)
成本有效的部分报道:
  • 关注人工抽查,手动分析来源

有效性:高

+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 747年 CERT C安全编码标准(2008)第14章-杂项(MSC)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 883年 CERT c++安全编码部分49 -杂项(MSC)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 886年 SFP主要集群:未使用的实体
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1130年 方案及质量措施》(2016)——可维护性
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1186年 SEI CERT Perl编码标准——50的指导方针。杂项(MSC)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1307年 方案及质量度量,可维护性
+分类法映射
映射分类名称 节点ID 适合 映射节点名
CERT C安全编码 MSC07-C 检测和去除死代码
SEI CERT Perl编码标准 MSC00-PL 确切的 检测和去除死代码
软件故障模式 SFP2 未使用的实体
OMG ASCMM ASCMM-MNT-20
+引用
(ref - 960)对象管理组织(OMG)。“自动源代码可维护性措施(ASCMM)”。ASCMM-MNT-20。2016 - 01。<http://www.omg.org/spec/ASCMM/1.0>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 匿名工具供应商(NDA)
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Potential_Mitigations Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新描述、关系、Other_Notes Taxonomy_Mappings
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-07-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-10-29 CWE内容团队 主教法冠
更新Common_Consequences Other_Notes
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences、人际关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-06-23 CWE内容团队 主教法冠
更新Observed_Examples
2014-07-30 CWE内容团队 主教法冠
更新Detection_Factors Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新Common_Consequences、引用关系,Taxonomy_Mappings Weakness_Ordinalities
2019-06-20 CWE内容团队 主教法冠
更新的类型
2020-02-24 CWE内容团队 主教法冠
更新Applicable_Platforms Observed_Examples,关系
2020-08-20 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
2021-07-20 CWE内容团队 主教法冠
更新Observed_Examples
2023-01-31 CWE内容团队 主教法冠
更新描述

cwe - 628:函数调用与指定参数不正确

弱点ID: 628
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品调用一个函数,程序,或常规参数不正确地指定,导致always-incorrect行为和合成的弱点。
+扩展描述

有多种方式可以介绍这个弱点,包括:

  • 错误的变量或引用;
  • 一个不正确的数量的参数;
  • 不正确的参数;
  • 错误的类型的参数;或
  • 错误的值。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 573年 不当的规范由调用者
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 683年 函数调用与不正确的参数
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 685年 函数调用的参数的数量不正确
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 686年 函数调用与不正确的参数类型
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 687年 函数调用与指定参数值不正确
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 688年 与不正确的变量或函数调用引用作为参数
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1006年 糟糕的编码实践
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
其他
访问控制

技术的影响:质量退化;获得特权或假设的身份

这个弱点可能导致意想不到的行为,可能会导致额外的弱点如允许攻击者获得意想不到的对系统资源的访问。
+示范例子

示例1

下面的PHP方法鉴定了一个特定的用户名/密码组合但叫做参数在相反的顺序。

(坏的代码)
例如语言:PHP
功能验证(用户名、密码)美元{

/ /验证用户
}

验证($ _POST['密码'],$ _POST['用户名']);

示例2

这个Perl代码打算记录用户是否认证成功与否,并退出,如果用户无法进行身份验证。然而,当它调用ReportAuth(),第三个参数是指定为0,而不是1,所以它不会退出。

(坏的代码)
例如语言:Perl
子ReportAuth {
我的(用户名,因此,美元致命的美元)= @ _;
PrintLog(“身份验证:用户名= % s,结果= % d”,用户名美元,美元的结果);
如果(($结果不“成功”)& & $致命){
死”失败! \ n”;
}
}

子PrivilegedFunc
{
结果= CheckAuth美元($用户名);
ReportAuth(用户名,因此,美元0);
DoReallyImportantStuff ();
}

示例3

下面的Java片段,accessGranted()方法不小心被称为静态ADMIN_ROLES数组而不是用户角色。

(坏的代码)
例如语言:Java
私有静态最终String [] ADMIN_ROLES =…;
公共布尔空白accessGranted(字符串资源,字符串用户){
String [] userRoles = getUserRoles(用户);
返回accessGranted(资源、ADMIN_ROLES);
}

私人布尔空白accessGranted(字符串资源,String [] userRoles) {

/ /根据用户角色授予或拒绝访问
}
+观察到的例子
参考 描述
方法调用函数的参数顺序,它允许远程攻击者绕过访问限制。
+潜在的缓解措施

阶段:构建和编译

一旦发现,这些问题很容易解决。使用代码检查工具和相关的编译器特性来识别潜在的侵犯。特别注意的代码不可能行使在QA严重。

阶段:体系结构和设计

之前确保你的API是稳定在生产代码中使用它们。
+弱点Ordinalities
Ordinality 描述
(缺点是一个质量问题,可能会间接更容易引入的安全相关的弱点或使他们更难检测)
这通常是主要的其他缺点,但它可以合成功能的API或函数原型变化。
+检测方法

其他

因为这些错误通常引入错误的行为明显的用户,他们很快发现,除非他们发生在rarely-tested代码路径。管理的正确数量的参数可以更困难的情况下使用格式字符串,或者当变量数目的参数支持。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 736年 CERT C安全编码标准(2008)第3章-声明和初始化(DCL)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 737年 CERT C安全编码标准(2008)第4章-表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 742年 CERT C安全编码标准(2008)第9章-内存管理(MEM)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 998年 SFP二级集群:故障计算
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1157年 SEI CERT C编码标准- 03指导方针。表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1180年 02 SEI CERT Perl编码标准,指导方针。声明和初始化(DCL)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
+分类法映射
映射分类名称 节点ID 适合 映射节点名
CERT C安全编码 DCL10-C 维护作家之间的合同和可变函数的调用者
CERT C安全编码 EXP37-C CWE更抽象 使用正确的数目和类型的参数,调用函数
SEI CERT Perl编码标准 DCL00-PL CWE更抽象 不使用子程序的原型吗
SEI CERT Perl编码标准 EXP33-PL 不精确的 不调用一个函数在一个上下文没有定义吗
+内容的历史
+提交
提交日期 提交者 组织
2007-05-07 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2008-09-08 CWE内容团队 主教法冠
更新描述、关系、Other_Notes Weakness_Ordinalities
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-10-29 CWE内容团队 主教法冠
更新Detection_Factors、Other_Notes Weakness_Ordinalities
2010-02-16 CWE内容团队 主教法冠
更新Detection_Factors
2010-06-21 CWE内容团队 主教法冠
更新描述
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples,关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-07-30 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2020-02-24 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新Detection_Factors、人际关系
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 不正确地指定参数

cwe - 754:不当检查不寻常或异常情况

弱点ID: 754
抽象:
结构:简单的
视图定制的信息:
+描述
产品不检查或不正确检查异常或异常情况不会经常发生在日常操作的产品。
+扩展描述

程序员可能会假定某些事件或条件永远不会发生或不需要担心,如低内存条件下,由于缺乏资源限制权限,或行为不端的客户或组件。然而,攻击者可能故意引发这些不寻常的条件,因此违反了程序员的假设,可能引入不稳定,不正确的行为,或一个漏洞。

注意,这个条目不仅仅是关于使用异常和异常处理,检查和处理机制的不寻常或意外情况。

+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 703年 检查或不当处理异常情况
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 252年 不返回值
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 253年 函数返回值的错误检查
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 273年 检查了不当的特权
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 354年 不当的验证完整性检查的价值
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 391年 未经检查的错误条件
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 394年 意想不到的状态代码或返回值
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 476年 空指针废弃
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 252年 不返回值
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 273年 检查了不当的特权
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 476年 空指针废弃
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1012年 交叉剪接
+背景细节
许多函数会返回一些关于他们的行动的成功的价值。这将提醒程序是否处理函数的任何错误造成的。
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现 实现:造成这一弱点在建筑安全策略的实施。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性
可用性

技术的影响:DoS:崩溃,退出或重新启动;意想不到的状态

产生的数据作为一个函数调用的结果可能是在一个糟糕的状态回来。如果不检查返回值,那么这个糟糕的数据可用于操作,可能导致崩溃或其他意想不到的行为。
+利用的可能性
媒介
+示范例子

示例1

考虑下面的代码段:

(坏的代码)
例如语言:C
char buf [10], cp_buf [10];
fgets (buf 10 stdin);
strcpy (cp_buf buf);

程序员预计,当fgets()返回,但将包含一个以null结尾的字符串长度为9的或更少。但如果发生I / O错误,fgets()不会null-terminate缓冲区。此外,如果到达文件的末尾读取任何字符之前,fgets()返回而无需编写任何缓冲区。在这两种情况下,fgets()信号,发生了一些不寻常的东西通过返回NULL,但是在这段代码中,警告不会被注意到。缺乏一个空终结者buf会导致缓冲区溢出在随后调用strcpy ()。

示例2

下面的代码不检查内存分配成功之前使用malloc()返回的指针。

(坏的代码)
例如语言:C
buf = (char *) malloc (req_size);
strncpy (buf转送,req_size);

这个编码错误的传统防御是:“如果我的程序运行的内存,它就会失败。不管我是否处理错误的或者仅仅是允许程序死一个段错误当试图废弃空指针”。This argument ignores three important considerations:

  • 取决于应用程序的类型和大小,它可能会释放内存,在其他地方使用,以便能继续执行。
  • 程序执行不可能如果需要体面地退出。如果程序执行一个原子操作,它可以让系统处于不一致的状态。
  • 程序员已经失去了机会来记录诊断信息。并调用malloc()失败,因为req_size太大或因为有太多的请求被处理在同一时间吗?还是内存泄漏造成的,随着时间的推移建立?没有处理错误,就没有办法知道。

示例3

下面的示例文件读入一个字节数组。

(坏的代码)
例如语言:c#
char[]中byteArray = new char [1024];
(IEnumerator i = users.GetEnumerator ();i.MoveNext (); i.Current ()) {
字符串的用户名=(字符串)i.Current ();
字符串pFileName = PFILE_ROOT + " +用户名;
StreamReader sr = new StreamReader (pFileName);
sr.Read(中byteArray, 0, 1024); / /总是1 k字节的文件
sr.Close ();
processPFile(用户名、中byteArray);
}
(坏的代码)
例如语言:Java
FileInputStream fis;
byte[]中byteArray =新字节[1024];
迭代器(i = users.iterator ();i.hasNext ();) {
字符串的用户名=(字符串)i.next ();
字符串pFileName = PFILE_ROOT + " +用户名;
FileInputStream fis = new FileInputStream (pFileName);
fis.read(中byteArray);/ /文件总是1 k字节
fis.close ();
processPFile(用户名、中byteArray);

代码遍历一组用户,阅读一个私人数据文件为每个用户。程序员总是假设文件1 kb大小,因此忽略了阅读()的返回值。如果攻击者可以创建一个小文件,程序将回收的其余部分之前的数据用户和治疗它,好像它属于攻击者。

示例4

下面的代码并没有检查getParameter()返回的字符串为空在调用成员函数之前compareTo(),可能导致零废弃。

(坏的代码)
例如语言:Java
字符串itemName = request.getParameter (ITEM_NAME);
如果(itemName.compareTo (IMPORTANT_ITEM) = = 0) {
}

下面的代码不检查返回的字符串是否在调用成员函数之前项目属性为空=(),可能导致零废弃。

(坏的代码)
例如语言:Java
字符串itemName = request.Item (ITEM_NAME);
如果(itemName.Equals (IMPORTANT_ITEM)) {
}

传统的防御这个编码错误的方法是:“我知道请求的值将总是存在,因为....如果它不存在,程序不能执行所需的行为所以不管我处理错误的或者仅仅是允许程序死非关联化一个null值。”But attackers are skilled at finding unexpected paths through programs, particularly when exceptions are involved.

示例5

下面的代码显示了一个系统属性设置为null,后来引用时的程序员错误地假定它将总是被定义。

(坏的代码)
例如语言:Java
System.clearProperty (“os.name”);

字符串操作系统= System.getProperty (“os.name”);
如果(os)。equalsIgnoreCase (Windows 95)) system . out。println(“不支持”);

传统的防御这个编码错误的方法是:“我知道请求的值将总是存在,因为....如果它不存在,程序不能执行所需的行为所以不管我处理错误的或者仅仅是允许程序死非关联化一个null值。”But attackers are skilled at finding unexpected paths through programs, particularly when exceptions are involved.

例子6

下面的VB。NETcode does not check to make sure that it has read 50 bytes from myfile.txt. This can cause DoDangerousOperation() to operate on an unexpected value.

(坏的代码)
例如语言:c#
昏暗的MyFile MyFile新文件流”。txt”, FileMode。Open, FileAccess.Read, FileShare.Read)
暗MyArray(50)字节
MyFile。Read(MyArray, 0, 50)
DoDangerousOperation (MyArray (20))

在。net,它并不少见为程序员误解读()和相关方法,许多系统的一部分。IO类。流和读者类并不认为这是不寻常的或特殊如果只有少量的数据可用。这些类只需添加少量的数据返回的缓冲区,并将返回值设置为读取的字节数或字符。没有保证返回的数据量等于请求的数据量。

例7

这个例子将IP地址从一个用户,验证它是完整的,然后查找主机名和拷贝到缓冲区。

(坏的代码)
例如语言:C
空白host_lookup (char * user_supplied_addr) {
struct hostent *惠普;
in_addr_t * addr;
char主机名[64];
in_addr_t inet_addr (const char * cp);

/ *程序确保user_supplied_addr是正确的格式转换* /

validate_addr_form (user_supplied_addr);
addr = inet_addr (user_supplied_addr);
惠普= gethostbyaddr (addr, sizeof (struct in_addr) AF_INET);
strcpy(主机名、hp - > h_name);
}

如果攻击者提供了一个地址,似乎是格式良好的,但是地址不解决一个主机名,然后调用gethostbyaddr()将返回NULL。由于代码从gethostbyaddr不会检查返回值(cwe - 252),一个空指针(cwe - 476)将发生在调用strcpy ()。

注意,这段代码也容易受到缓冲区溢出(cwe - 119)。

示例8

在接下来的C / c++示例方法outputStringToFile打开本地文件系统中的一个文件和输出一个字符串到文件。输入参数输出和文件名包含字符串输出到文件和文件的名称。

(坏的代码)
例如语言:c++
int outputStringToFile (char *输出,char *文件名){

openFileToWrite(文件名);
writeToFile(输出);
closeFile(文件名);
}

然而,这段代码并不openFileToWrite检查返回值的方法,writeToFile closeFile验证文件正常开启和关闭,字符串被成功写入文件。这些方法的返回值应该被检查来确定检测的方法是成功的,并允许错误或意想不到的条件如以下示例。

(好的代码)
例如语言:c++
int outputStringToFile (char *输出,char *文件名){
int后=成功;

int isOpen = openFileToWrite(文件名);
如果(isOpen = =失败){
printf("无法打开文件% s”,文件名);
后=失败;
}
其他{
int isWrite = writeToFile(输出);
如果(isWrite = =失败){
printf("无法写入文件% s ",文件名);
后=失败;
}

int isClose = closeFile(文件名);
如果(isClose = =失败)
后=失败;
}
返回后;
}

例9

在以下Java示例方法readFromFile使用FileReader对象读取一个文件的内容。创建FileReader对象readFile使用File对象,使用setInputFile readFile对象初始化方法。setInputFile方法在调用readFromFile之前应该被称为方法。

(坏的代码)
例如语言:Java
私人文件readFile =零;

公共空间setInputFile(字符串inputFile) {

/ /创建readFile文件对象从字符串包含文件的名字
}

公共空间readFromFile () {
尝试{
读者= new FileReader (readFile);

/ /读取输入文件
}捕捉(FileNotFoundException ex) {…}
}

然而,readFromFile方法不会检查readFile对象为空,即没有被初始化,在创建FileReader对象和阅读之前从输入文件。readFromFile方法应该验证readFile对象是否为空,输出一个错误消息并引发一个异常如果readFile对象为空,如以下代码。

(好的代码)
例如语言:Java
私人文件readFile =零;

公共空间setInputFile(字符串inputFile) {

/ /创建readFile文件对象从字符串包含文件的名字
}

公共空间readFromFile () {
尝试{
如果(readFile = = null) {
System.err。println(“输入文件没有设置,叫setInputFile方法之前调用openInputFile”);
抛出NullPointerException;
}

读者= new FileReader (readFile);

/ /读取输入文件
}捕捉(FileNotFoundException ex) {…}
捕获(NullPointerException ex) {…}
}
+观察到的例子
参考 描述
检查返回值会导致合成整数溢出和代码执行。
程序不检查返回值在调用函数时放弃特权,特权可以留给用户高于预期迫使这些功能失败。
程序不检查返回值在调用函数时放弃特权,特权可以留给用户高于预期迫使这些功能失败。
+潜在的缓解措施

阶段:需求

策略:语言选择

使用一种语言,不允许这个弱点或发生提供了结构,使这个弱点更容易避免的。

选择语言的特性,比如异常处理强迫程序员预测不同寻常的条件,可能会产生异常。自定义异常处理不寻常的业务逻辑可能需要开发条件。小心不要通过敏感异常返回给用户(cwe - 209,cwe - 248)。

实施阶段:

检查结果的返回值的函数,并验证预期的值。

有效性:高

注意:检查函数的返回值通常是足够的,但是当心竞态条件(cwe - 362在并发环境中)。

实施阶段:

如果使用异常处理、捕获和抛出具体的异常而不是过大的异常(cwe - 396,cwe - 397)。尽可能在本地捕获和处理异常,异常不传播太远调用堆栈(cwe - 705)。避免未经检查或未捕获的异常可行(cwe - 248)。

有效性:高

注意:使用具体的异常,确保检查异常,帮助程序员预见并妥善处理可能发生许多不寻常的事件。

实施阶段:

确保错误消息只包含最小的细节,目标受众是有用的,没有其他人。消息需要罢工之间的平衡过于神秘的(可以迷惑用户)或过于详细的(可能揭示超过预期)。不应该透露的消息的方法被用来确定错误。攻击者可以使用详细信息完善或优化他们最初的攻击,从而增加成功的机会。

如果必须捕捉到一些细节错误,记录在日志消息,但想想会发生什么,如果日志消息可以被攻击者。高度敏感的信息,如密码永远不应该被保存到日志文件中。

避免不一致的消息可能会意外地提示攻击者对内部状态,如是否存在一个用户帐户。

暴露潜在攻击者的额外信息上下文的异常条件可以帮助攻击者确定向量是最可能成功的人除了DoS攻击。

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does.

当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。

不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。

注意:执行广泛的输入验证不帮忙处理一些异常情况,但它会减少他们的出现,将使攻击者更难触发。

阶段:体系结构和设计;实现

如果程序失败,必须确保它优雅地失败(失败关闭)。可能存在一种诱惑,让项目失败不佳的情况下(如低内存条件,但攻击者可以断言控制之前,软件已经完全退出。或者,一个不受控制的失败可能会导致级联问题与其他下游组件;例如,这个项目可以发送一个信号给下游工序流程立即知道问题发生,有更好的机会复苏。

阶段:体系结构和设计

使用系统的限制,这应该有助于防止资源枯竭。然而,该产品应该仍然处理低资源条件,因为他们仍然可能发生。
+检测方法

自动静态分析

自动静态分析可以用于检测不寻常的条件涉及系统资源或常见的编程习语,但不违反商业规则。

有效性:温和

手动动态分析

识别错误情况不太可能发生在正常使用和触发器。例如,在低内存条件下运行程序,运行特权或权限不足,中断一个事务之前完成,或禁用连接DNS等基本网络服务。监控软件为任何意想不到的行为。如果你触发一个未处理的异常或类似的错误被发现,由应用程序的环境中,它仍可能表明意想不到的条件并不是由应用程序本身。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 742年 CERT C安全编码标准(2008)第9章-内存管理(MEM)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 802年 2010年前25 -资源管理风险
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 867年 2011年处于25 -弱点
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 876年 CERT c++安全编码部分08 -内存管理(MEM)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 880年 12 - CERT c++安全编码部分异常和错误处理(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 962年 SFP二级集群:未经检查的状态情况
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1003年 弱点简化映射的漏洞发布
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1141年 SEI CERT甲骨文安全编码标准Java - 07年指导方针。异常行为(错)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1364年 ICS通讯:区域边界的失败
+笔记

的关系

有时,当返回值可以用来显示一个错误,一个未经检查的返回值是一个code-layer失踪的实例应用程序层检查异常情况。然而,返回值并不总是需要通知异常情况。例如,过期的资源,以引用的方式传递值,修改数据,异步套接字等可能表明没有使用返回值的异常情况。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
SEI CERT Perl编码标准 EXP31-PL CWE更抽象 不要压制或忽视异常
+引用
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第七章,341页“程序构建块”。1版。艾迪生卫斯理》2006。
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第一章,“异常情况”,22页。1版。艾迪生卫斯理》2006。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪孽11:未能正确处理错误。”Page 183. McGraw-Hill. 2010.
(ref - 622)弗兰克·金。“前25系列——排名15 -不当检查异常或异常情况”。无软件安全研究所。2010-03-15。<http://blogs.sans.org/appsecstreetfighter/2010/03/15/top-25-series-rank-15-improper-check-for-unusual-or-exceptional-conditions/>。
+内容的历史
+提交
提交日期 提交者 组织
2009-03-03 CWE内容团队 主教法冠
重组的新条目cwe - 703
+修改
修改日期 修饰符 组织
2009-07-27 CWE内容团队 主教法冠
更新的关系
2009-12-28 CWE内容团队 主教法冠
更新Applicable_Platforms、Likelihood_of_Exploit Time_of_Introduction
2010-02-16 CWE内容团队 主教法冠
更新Background_Details、Common_Consequences Demonstrative_Examples、描述Detection_Factors,名字,Observed_Examples, Potential_Mitigations,引用,Related_Attack_Patterns Relationship_Notes、人际关系
2010-04-05 CWE内容团队 主教法冠
更新Demonstrative_Examples Related_Attack_Patterns
2010-06-21 CWE内容团队 主教法冠
更新Common_Consequences Detection_Factors Potential_Mitigations,引用
2010-09-27 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-12-13 CWE内容团队 主教法冠
更新Relationship_Notes
2011-03-29 CWE内容团队 主教法冠
更新描述、人际关系
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences Related_Attack_Patterns,关系
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新的关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2013-02-21 CWE内容团队 主教法冠
更新的关系
2014-07-30 CWE内容团队 主教法冠
更新Demonstrative_Examples、人际关系
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-01-19 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Modes_of_Introduction、引用关系,Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新描述、人际关系
2020-02-24 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2020-06-25 CWE内容团队 主教法冠
更新Potential_Mitigations
2020-12-10 CWE内容团队 主教法冠
更新Potential_Mitigations
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples、人际关系
2021-07-20 CWE内容团队 主教法冠
更新的关系
2022-04-28 CWE内容团队 主教法冠
更新的关系
2023-01-31 CWE内容团队 主教法冠
更新描述,Potential_Mitigations
+以前的条目名称
改变日期 以前的条目名称
2010-02-16 不适当的检查异常情况

cwe - 460:清理不当抛出异常

弱点ID: 460
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品不清理它的状态或不正确清理其状态时将抛出一个异常,导致意想不到的状态或控制流。
+扩展描述
通常,当函数或循环变得复杂,需要清理在执行某种级别的资源。例外可以打扰的代码和防止发生必要的清理。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 755年 异常情况的处理不当
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 459年 不完整的清理
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 452年 初始化和清理错误
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1012年 交叉剪接
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现 实现:造成这一弱点在建筑安全策略的实施。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C患病率(待定)

c++患病率(待定)

Java患病率(待定)

c#患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
其他

技术的影响:不同的上下文

代码可以在一个糟糕的状态。
+利用的可能性
媒介
+示范例子

示例1

下面的例子显示出,需求不足。

(坏的代码)
例如语言:Java
公共类foo {
公共静态最终void main (String参数[]){

布尔returnValue;
returnValue = doStuff ();
}
公共静态最终布尔doStuff () {

布尔threadLock;
布尔真值= true;
尝试{

而(
/ /检查一些条件
){

threadLock = true;/ /做的一些东西真值
threadLock = false;
}
}
捕获(异常e) {

System.err。println(“你做坏事”);
如果()返回真值;
}
返回真值;
}
}

在这种情况下,您可能会让一个线程锁不小心。

+潜在的缓解措施

实施阶段:

如果一个休息一个循环或函数抛出异常,确保清理发生或者你应该退出程序。使用抛出异常稀少。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 851年 CERT甲骨文安全Java编码标准(2011)第八章-异常行为(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 880年 12 - CERT c++安全编码部分异常和错误处理(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 961年 SFP二级集群:错误的异常行为
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1141年 SEI CERT甲骨文安全编码标准Java - 07年指导方针。异常行为(错)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
+分类法映射
映射分类名称 节点ID 适合 映射节点名
清理不当抛出异常
CERT甲骨文安全Java编码标准(2011) ERR03-J 恢复之前的对象状态方法失败
CERT甲骨文安全Java编码标准(2011) ERR05-J 不要让受控异常逃离finally块吗
SEI CERT Perl编码标准 EXP31-PL 不精确的 不要压制或忽视异常
+引用
[REF-18]安全软件公司. .“扣应用程序安全性的过程”。2005年。<https://cwe.mitre.org/documents/sources/TheCLASPApplicationSecurityProcess.pdf>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新Applicable_Platforms Common_Consequences、关系、Other_Notes Taxonomy_Mappings
2009-03-10 CWE内容团队 主教法冠
更新的关系
2009-05-27 CWE内容团队 主教法冠
更新描述
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新的关系
2014-06-23 CWE内容团队 主教法冠
更新描述,Other_Notes
2014-07-30 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Demonstrative_Examples Modes_of_Introduction,关系,Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2020-02-24 CWE内容团队 主教法冠
更新引用类型
2021-03-15 CWE内容团队 主教法冠
更新的关系

cwe - 116:不适当的编码或逃避的输出

弱点ID: 116
抽象:
结构:简单的
视图定制的信息:
+描述
产品准备一个结构化的信息沟通与另一个组件,但编码或逃避的数据丢失或错误地完成。因此,是不会保留消息的预期结构。
+扩展描述

不当编码或逃避可以让攻击者修改命令发送到另一个组件,插入恶意命令。

大多数产品都遵循一个特定的组件之间的通信协议,它使用结构化的消息,比如查询或命令。这些结构化的消息可以包含原始数据穿插元数据和控制信息。例如,“GET /索引。html HTTP / 1.1”是一个结构化的消息包含一个命令(“获得”)和一个参数(“/ index . html”)和元数据使用的是哪一种协议版本(“HTTP / 1.1”)。

如果一个应用程序使用attacker-supplied输入构造结构化的消息不正确编码或逃避,那么攻击者可以插入特殊字符,将导致数据被视为控制信息或元数据。因此,组件接收输出执行错误的操作,或者错误地解读数据。

+替代条款
输出卫生处理
输出验证
输出编码
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 707年 不适当的中和
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 117年 不正确的输出中和日志
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 644年 不当的HTTP头中和脚本语法
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 838年 不恰当的编码输出环境
CanPrecede 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 74年 不当中和下游组件使用的特殊元素的输出(注射)
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 838年 不恰当的编码输出环境
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现
操作
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的(通常是普遍的)

技术

数据库服务器(通常是普遍的)

Web服务器(通常是普遍的)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性

技术的影响:修改应用程序数据

组件之间的通信可以被修改以意想不到的方式。意想不到的命令可以执行,绕过其他安全机制。传入的数据可以被误解。
完整性
保密
可用性
访问控制

技术的影响:执行未经授权的代码或命令

组件之间的通信可以被修改以意想不到的方式。意想不到的命令可以执行,绕过其他安全机制。传入的数据可以被误解。
保密

技术的影响:旁路保护机制

组件之间的通信可以被修改以意想不到的方式。意想不到的命令可以执行,绕过其他安全机制。传入的数据可以被误解。
+利用的可能性
+示范例子

示例1

这段代码显示提交的电子邮件地址作为一种形式的一部分。

(坏的代码)
例如语言:JSP
< %字符串邮件= request.getParameter(“电子邮件”);% >

电子邮件地址:< % = % >邮件

从形式读取参数值反射回客户端浏览器没有被编码输出之前,允许各种XSS攻击(cwe - 79)。

示例2

考虑一个聊天应用程序的前端web应用程序与后端服务器通信。后端遗留代码,不执行身份验证或授权,所以前端必须实现它。聊天协议支持两个命令,说,禁令,尽管只有管理员可以使用禁止命令。每个参数都必须由一个空格隔开。原始输入url编码。指定的消息传递协议允许将多个命令在同一行如果是由“|”分隔字符。

首先让我们看看后台命令处理程序代码

(坏的代码)
例如语言:Perl
(inputString = readLineFromFileHandle美元serverFH);

#生成一个字符串数组用“|”分隔字符。
@commands =分裂(/ \ | / inputString美元);

foreach cmd美元(@commands) {

#独立的运营商参数基于单个空格
(运营商,args美元)=分裂(/ / cmd美元2);

(args = UrlDecode美元args);
如果($符eq“禁令”){
ExecuteBan (args);
}
elsif(运营商eq”说“美元){
ExecuteSay (args);
}
}

前端web应用程序接收到命令,编码发送到服务器,执行授权检查,并将命令发送到服务器。

(坏的代码)
例如语言:Perl
$ inputString = GetUntrustedArgument(“命令”);
(cmd, argstr美元)=分裂(/ \ s + / inputString美元,2);

#删除多余的空格和CRLF变化的空间
$ argstr = ~ s / \ s + / / gs;

$ argstr = UrlEncode ($ argstr);
如果(($ cmd eq“禁令”)& & (!IsAdministrator(用户名)美元)){
死”的错误:你不是管理。\ n”;
}

#与文件服务器使用文件句柄
$ fh = GetServerFileHandle (myserver);

印刷美元跳频“cmd argstr美元\ n”;

很明显,而协议和后端允许多个命令发送一个请求,前端只打算发一个命令。然而,UrlEncode函数可能会离开“|”字符完好无损。如果攻击者提供了:

(攻击代码)
世界|禁止user12问好

然后前端将看到这是一个“说”的命令,和美元argstr看起来像“hello world user12 |禁令”。由于命令是“说”,检查“禁令”命令将失败,和前端后端将url编码的命令:

(结果)
% 20世界问好| % 20 user12的禁令

然而,后端将把这些当作两个独立的命令:

(结果)
世界问好
禁止user12

不过,请注意,如果前端正确编码的“|”“% 7 c”,后端将只处理一个命令。

示例3

这个例子需要用户输入,通过它通过一个编码方案,然后创建一个用户指定的目录。

(坏的代码)
例如语言:Perl
子GetUntrustedInput {
返回($ ARGV [0]);
}

子编码{
我的(str)美元= @ _;
$ str = ~ s / \ & / \, / gs;
$str =~ s/\"/\"/gs;
str = ~ s / \ '美元/事情就让它\,/ gs;
$str =~ s/\$str =~ s/\>/\>/gs;
返回(str);
}

子doit {
我的美元uname =编码(GetUntrustedInput(“用户名”));
打印”< b >欢迎,美元uname ! < / b > < p > \ n”;
系统(“cd /home/$ uname;/bin/ls - l”);
}

程序员编码的尝试危险的人物,然而denylist编码是不完整的(cwe - 184),攻击者仍然可以通过一个分号,导致与指挥系统注入(cwe - 77)。

此外,编码与命令执行例程用于不当。攻击者甚至不需要插入自己的分号。攻击者可以利用编码程序提供分号分隔的命令。如果攻击者提供一个字符串的形式:

(攻击代码)
“pwd

然后程序将编码撇号和插入分号,哪些功能作为命令分隔符时传递给系统功能。这允许攻击者完成命令注入。

+观察到的例子
参考 描述
链:身份验证例程在Go-based敏捷开发产品不逃避的用户名(cwe - 116),允许LDAP注入(cwe - 90)
OS命令注入在备份软件使用shell元字符的文件名;正确的行为需要这个文件名是不能改变的。
Web应用程序时不设置字符集将页面发送给浏览器,允许XSS攻击当浏览器选择一个意想不到的编码。
程序不设置字符集向浏览器发送一个页面时,允许XSS攻击当浏览器选择一个意想不到的编码。
SQL注入通过密码参数;一个强大的密码可能包含“&”
跨站点脚本在聊天应用程序通过消息主题,通常可能包含“&”和其他XSS-related字符。
跨站点脚本在聊天应用程序通过消息,通常会允许包含任意内容。
+潜在的缓解措施

阶段:体系结构和设计

策略:库或框架

使用审查库或框架不允许这个弱点发生或提供了结构,使这个弱点更容易避免的。

例如,考虑使用ESAPI编码控制(REF-45)或类似的工具、库或框架。这些将帮助程序员编码输出的方式不容易错误。

交替,使用内置函数,但考虑使用包装器,以防这些功能被发现有漏洞。

阶段:体系结构和设计

策略:参数化

如果可用,使用结构化机制自动执行数据和代码之间的分离。这些机制可以提供相关的引用,编码,自动验证,而不是依赖于开发人员提供此功能在每一个点生成输出。

例如,存储过程可以执行数据库查询结构和减少SQL注入的可能性。

阶段:体系结构和设计;实现

理解的上下文将使用您的数据编码,将预期。这是特别重要的不同组件之间传送数据的时候,或者当生成输出可以包含多个编码同时,如web页面或多部分邮件。研究所有预期的通信协议以及数据表现方式来决定所需要的编码策略。

阶段:体系结构和设计

在某些情况下,输入验证可能是一个重要的战略输出编码并不是一个完整的解决方案。例如,你可能会提供相同的输出,将加工由多个消费者使用不同的编码或陈述。在其他情况下,您可能需要允许用户提供的输入包含控制信息,如有限支持格式化的HTML标记在wiki或公告栏。当这种类型的需求必须满足,使用非常严格allowlist限制可以使用控制序列。确认由此产生的句法结构是你所希望的。使用普通的编码方法的其余部分输入。

阶段:体系结构和设计

使用输入验证作为深度防护措施来减少输出编码错误(见的可能性CWE-20)。

阶段:需求

完全指定哪些编码所需的组件,将彼此间的通信。

实施阶段:

当组件之间交换数据,确保组件都使用相同的字符编码。确保适当的编码应用于每个接口。时显式地设置您所使用的编码协议允许你这样做。
+检测方法

自动静态分析

这个弱点常常可以发现使用自动静态分析工具。许多现代工具使用数据流分析或基于技术来减少假阳性的数量。

有效性:温和

注意:这不是一个完美的解决方案,因为100%的准确率和覆盖率不可行。

自动动态分析

这个弱点能被探测到的使用动态交互的工具和技术的软件使用大型测试套件和许多不同的输入,如模糊测试(起毛)健壮性测试和故障注入。软件的操作可能慢下来,但它不应该成为不稳定,崩溃,或者产生不正确的结果。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 751年 2009年前25 -安全组件之间的交互
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 845年 CERT甲骨文安全Java编码标准(2011)第二章-输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 883年 CERT c++安全编码部分49 -杂项(MSC)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 992年 SFP二级集群:错误的输入转换
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1003年 弱点简化映射的漏洞发布
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1134年 SEI CERT甲骨文Java安全编码标准,指南00。输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1179年 01 SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1347年 OWASP十大2021类别A03:2021 -注射
+笔记

的关系

这个弱点是主要缺点与注入(cwe - 74)由于注入的固有性质涉及违反了结构化的消息。

的关系

cwe - 116CWE-20有着密切的关联,因为根据结构化信息的本质,正确输入验证可以间接地阻止特殊字符改变结构化信息的意义。例如,通过确认数字ID字段应该只包含0 - 9的字符,程序员有效地防止注入攻击。

然而,输入验证并不总是足够的,特别是当严格的数据类型必须支持较少,如自由格式的文本。考虑一个SQL注入场景,在该场景中,一个姓是插入一个查询。“O ' reilly”这个名字可能会通过验证步骤,因为它是一种常见的姓氏在英语语言。但是,它不能直接插入到数据库,因为它包含了““撇号的角色,这将需要转义或中和。在这种情况下,剥离撇号可能减少SQL注入的风险,但是它会产生不正确的行为,因为错误的名字将被记录下来。

术语

使用“编码”和“逃避”条件差别很大。例如,在一些编程语言中,术语交替使用,而其他语言为不同的任务提供api,使用这两个术语。这种重叠使用扩展到了网络,如“逃脱”JavaScript函数,其目的是说明编码。编码和逃避的概念早在Web几十年。鉴于这种情况下,很难CWE采取一致的词汇,不会被误解的一些选区。

理论

这是一个数据/指令边界误差数据的边界不够执行之前发送到不同的控制范围。

研究的差距

虽然许多漏洞发布相关输出编码不足,有这样一个强调输入验证作为一个保护机制,描述的根本原因很少。CVE内,重点主要是理解SQL注入和跨站点脚本编制等问题。很可能这个弱点经常发生在自定义协议支持多种编码,未必可检测与自动化技术。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
WASC 22 输出处理不当
CERT甲骨文安全Java编码标准(2011) IDS00-J 确切的 清洁不可信的数据通过在信任边界
CERT甲骨文安全Java编码标准(2011) IDS05-J 使用ASCII文件和路径名的一个子集
SEI CERT甲骨文Java编码标准 IDS00-J 不精确的 防止SQL注入
SEI CERT Perl编码标准 IDS33-PL 确切的 清洁不可信的数据通过在信任边界
+引用
REF-45 OWASP。“OWASP企业安全API (ESAPI)项目”。<http://www.owasp.org/index.php/ESAPI>。
REF-46 Joshbw。“卫生处理输出”。2008-09-18。<http://www.analyticalengine.net/archives/58>。
[REF-47] " PK。“清除用户数据:怎么去做”。2008-09-11。<http://www.diovo.com/2008/09/sanitizing-user-data-how-and-where-to-do-it/>。
[REF-48]耶利米格罗斯曼。“输入验证或输出过滤,哪个更好?”。2007-01-30。<http://jeremiahgrossman.blogspot.com/2007/01/input-validation-or-output-filtering.html>。
[REF-49]吉姆Manico。“输入验证,不是那么重要”。2008-08-10。<http://manicode.blogspot.com/2008/08/input-validation-not-that-important.html>。
(REF-50)迈克尔·爱丁顿。“防止XSS与正确的输出编码”。<http://phed.org/2008/05/19/preventing-xss-with-correct-output-encoding/>。
[REF-7]大卫迈克尔·霍华德和勒布朗。编写安全代码。11章,“问题”标准表示363页。第二版。微软出版社。2002-12-04。<https://www.microsoftpressstore.com/store/writing -安全-代码- 9780735617223>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 CWE社区
CWE社区的成员提交的延长早期CWE版本
+修改
修改日期 修饰符 组织
2008-07-01 肖恩Eidemiller Cigital
添加/更新示范例子
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新的名字,关系
2009-01-12 CWE内容团队 主教法冠
更新Alternate_Terms、Applicable_Platforms Common_Consequences Demonstrative_Examples,描述,Likelihood_of_Exploit,名字,Observed_Examples, Potential_Mitigations,引用,Relationship_Notes,关系,Research_Gaps, Terminology_Notes Theoretical_Notes
2009-03-10 CWE内容团队 主教法冠
更新描述,Potential_Mitigations
2009-05-27 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2009-07-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-10-29 CWE内容团队 主教法冠
更新的关系
2009-12-28 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations
2010-02-16 CWE内容团队 主教法冠
更新Detection_Factors Potential_Mitigations、引用Taxonomy_Mappings
2010-04-05 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-06-21 CWE内容团队 主教法冠
更新Potential_Mitigations
2011-03-29 CWE内容团队 主教法冠
更新Relationship_Notes、人际关系
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-06-23 CWE内容团队 主教法冠
更新的引用
2014-07-30 CWE内容团队 主教法冠
更新Demonstrative_Examples、人际关系
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-01-19 CWE内容团队 主教法冠
更新的关系
2017-05-03 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms、Common_Consequences Demonstrative_Examples Likelihood_of_Exploit,引用,Taxonomy_Mappings
2018-03-27 CWE内容团队 主教法冠
更新的引用
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新的关系
2020-06-25 CWE内容团队 主教法冠
更新Applicable_Platforms、Demonstrative_Examples Potential_Mitigations
2021-03-15 CWE内容团队 主教法冠
更新的关系,Terminology_Notes
2021-10-28 CWE内容团队 主教法冠
更新的关系
2022-10-13 CWE内容团队 主教法冠
更新Observed_Examples
2023-01-31 CWE内容团队 主教法冠
更新描述
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 输出验证
2008-09-09 不正确的输出卫生处理
2009-01-12 输出不足的卫生处理

CWE-22:不当限制限制目录的路径名(“路径遍历”)

弱点ID: 22
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品使用外部输入来构造一个路径名,目的是为了辨别一个文件或目录,坐落在父目录的限制,但是产品不正确路径名中的中和特殊元素可以导致路径名来解决限制目录以外的位置。
+扩展描述

许多文件操作的目的是发生在一个受限制的目录。通过使用特殊的元素,如“. .”和“/”分隔符,攻击者可以逃避限制以外的位置来访问系统上的其他文件或目录。最常见的一种特殊的元素是“. ./”序列,这在大多数现代操作系统都被解释为父目录的当前位置。这被称为相对路径遍历。路径遍历还包括使用绝对路径名,如“/ usr /地方/ bin”,这也可能是有用的在获得意想不到的文件。这被称为绝对路径遍历。

在许多编程语言,注入一个null字节(0或NUL)可能允许攻击者截断生成的文件名扩大攻击范围。例如,产品可能会增加”。txt”任何路径,从而限制了攻击者文本文件,但是零注入可能有效地去除这种限制。

+替代条款
目录遍历
路径遍历:
优先在“路径遍历目录遍历,”这两个术语是attack-focused。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 668年 曝光资源错误的球体
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 706年 使用Incorrectly-Resolved名称或引用
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 23 相对路径遍历
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 36 绝对路径遍历
光束 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 20. 不正确的输入验证
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 73年 外部控制文件名或路径
光束 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 172年 编码错误
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 706年 使用Incorrectly-Resolved名称或引用
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 23 相对路径遍历
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 36 绝对路径遍历
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及数据保护措施”(cwe - 1340)
自然 类型 ID 的名字
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 23 相对路径遍历
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 36 绝对路径遍历
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性
保密
可用性

技术的影响:执行未经授权的代码或命令

攻击者可以创建或覆盖关键文件用于执行代码,如项目或库。
完整性

技术的影响:修改文件或目录

攻击者可以覆盖或创建重要文件,如项目、图书馆、或重要数据。如果目标文件是用于安全机制,那么攻击者可能能够绕过机制。例如,添加一个新帐户的密码文件可能允许攻击者绕过身份验证。
保密

技术的影响:读文件或目录

攻击者可以读意想不到的内容文件和暴露敏感数据。如果目标文件是用于安全机制,那么攻击者可能能够绕过机制。例如,通过阅读密码文件,攻击者可以进行暴力破解密码猜测攻击为了打入系统上的一个帐户。
可用性

技术的影响:DoS:崩溃,退出或重新启动

攻击者可以覆盖、删除或腐败的意想不到的重要文件等项目,图书馆,或重要的数据。这可能防止产品在所有工作和保护机制,如身份验证的情况下,它有可能锁定产品的每个用户。
+利用的可能性
+示范例子

示例1

下面的代码可以为社交网络应用程序的每个用户的配置信息存储在一个单独的文件中。所有文件都存储在一个目录中。

(坏的代码)
例如语言:Perl
dataPath公司美元= " /用户/ cwe /配置文件”;
我的$ username =参数(“用户”);
我的profilePath = dataPath公司美元。“/”。美元的用户名;

开放(我跳频美元," < ",$ profilePath) | | ExitError(“配置文件读取错误:$ profilePath”);
打印“< ul > \ n”;
而(< $ fh >) {
打印”<李> $ _ < /李> \ n”;
}
打印”< / ul > \ n”;

而程序员打算访问文件,如“/用户/ cwe / profiles /爱丽丝”或“/用户/ cwe / profiles / bob”,没有验证传入的用户参数。攻击者可以提供一个字符串,例如:

(攻击代码)
. . / . . / . . / etc / passwd

程序将生成一个配置文件路径名是这样的:

(结果)
/用户/ cwe / profiles / . . / . . / . . / etc / passwd

文件打开时,操作系统解决了”。/”在路径规范化和访问这个文件:

(结果)
/ etc / passwd

因此,攻击者可以读取整个密码的文本文件。

注意,这段代码还包含一个错误消息信息泄漏cwe - 209)如果用户参数不会产生一个存在的文件:提供完整的路径名。由于缺乏检索输出编码的文件,也可能是一个跨站点脚本问题(cwe - 79)如果概要文件包含任何HTML,但是其他代码需要检查。

示例2

在下面的示例中,一个字典文件的路径从一个系统属性读取并用来初始化一个文件对象。

(坏的代码)
例如语言:Java
字符串文件名= System.getProperty (“com.domain.application.dictionaryFile”);
文件dictionaryFile =新文件(文件名);

然而,道路并不确认或修改,以防止它包含相对或绝对路径序列之前创建File对象。这允许任何人可以控制系统属性来确定使用什么文件。理想情况下,路径应相对于解决一些应用程序或用户的主目录。

示例3

下面的代码将不受信任的输入,并使用一个正则表达式来过滤”. .从输入/”。然后将这个结果/home/user/目录并试图读取文件最后生成的路径。

(坏的代码)
例如语言:Perl
我的用户名=美元GetUntrustedInput ();
用户名= ~ s / \美元。\ \ / / /;
我的$ filename =“/ home / user /”。美元的用户名;
ReadAndSendFile ($ filename);

自正则表达式没有/ g全球匹配修饰符,它只删除第一个实例“. ./“遇到。所以一个输入值,例如:

(攻击代码)
. . / . . / . . / etc / passwd

将第一个“. ./“剥夺,导致:

(结果)
. . / . . / etc / passwd

这个值然后连接/home/user/目录:

(结果)
/home/user/../../etc/passwd

导致检索/ etc / passwd文件一旦操作系统解决了. .在路径名/序列。这导致相对路径遍历(CWE-23)。

示例4

下面的代码尝试验证给定输入路径通过检查它对一个allowlist一旦删除给定的文件进行验证。在这个特定的例子中,被认为是有效的路径字符串开头“safe_dir /”。

(坏的代码)
例如语言:Java
字符串路径= getInputPath ();
如果(path.startsWith (" / safe_dir / "))
{
文件f =新文件(路径);
f.delete ()
}

攻击者可以提供这样的一个输入:

(攻击代码)
/ safe_dir / . . / important.dat

软件假设路径是有效的,因为它始于“safe_path /”序列,但“. ./”将导致程序删除重要的序列。dat文件的父目录

示例5

下面的代码演示了无限制上传文件的Java servlet和路径遍历的脆弱性。HTML表单的动作属性是上传文件将请求发送给Java servlet。

(好的代码)
例如语言:HTML
<形式action = " FileUploadServlet " method = " post " enctype = "多部分/格式" >

选择一个文件上传:
< input type = " file " name = "文件名" / >
< br / >
< input type = " submit " name =“提交”value = " submit " / >

> < /形式

当提交的Java servlet的doPost方法将接收请求,从Http请求中提取文件的名称标题,读取文件内容从请求和输出文件到本地上传目录。

(坏的代码)
例如语言:Java
公开课FileUploadServlet扩展HttpServlet {


保护无效doPost (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException IOException {
response.setContentType (" text / html ");
PrintWriter = response.getWriter ();
字符串contentType = request.getContentType ();

/ /边界头的起始位置
int印第安纳= contentType.indexOf(“边界= ");
字符串边界= contentType.substring(印第安纳州+ 9);

字符串多义线=新的字符串();
字符串uploadLocation =新的字符串(UPLOAD_DIRECTORY_STRING);/ /恒定值

/ /验证内容类型是多部分表单数据
如果(contentType ! = null & & contentType.indexOf(“多部分/格式”)! = 1){
/ /从Http报头中提取文件名
BufferedReader br = new BufferedReader(新InputStreamReader (request.getInputStream ()));

多段线= br.readLine ();
字符串文件名= pLine.substring (pLine.lastIndexOf (“\ \”), pLine.lastIndexOf (" \ "));


/ /输出文件到本地上传目录
尝试{
BufferedWriter bw = new BufferedWriter(新FileWriter (uploadLocation +文件名,真的));
(字符串行;(= br.readLine行())!)=零;{
如果(line.indexOf(边界)= = 1){
bw.write(线);
bw.newLine ();
bw.flush ();
}
}/ / for循环的结束
bw.close ();


}捕捉(IOException特异){…}
/ /输出成功上传响应的HTML页面
}
/ /输出成功上传响应的HTML页面
其他的
{…}
}
}

这段代码不执行检查上传文件的类型(cwe - 434)。这可能允许攻击者上传任何可执行文件或其他文件与恶意代码。

此外,BufferedWriter对象的创建主题相对路径遍历(CWE-23)。由于代码不提供检查文件名的头,攻击者可以使用“. ./“序列写文件之外的目的目录。根据执行环境中,攻击者可以指定任意文件编写,导致各种各样的后果,从代码执行,XSS (cwe - 79),或者系统崩溃。

+观察到的例子
参考 描述
Python包管理器指定的文件名不正确地限制在一个附加头,允许任意文件读取使用路径遍历序列,如“. . /”
使用不安全的os.path Python包构造文件名。加入呼吁不受信任的输入,允许因为os.path绝对路径遍历。加入重置路径名指定绝对路径,作为输入的一部分。
目录遍历Go-based Kubernetes运营商应用允许访问数据从文件系统控制器的豆荚通过. ./在yaml文件序列
链:云计算虚拟化平台不需要身份验证上传的tar格式文件(cwe - 306),然后使用. .路径遍历序列(CWE-23)在文件访问意想不到的文件,如利用每中钢协KEV在野外。
Kubernetes包经理写的去允许恶意插件路径遍历序列插入插件存档(“Zip”)来复制一个文件在目标目录
链:安全产品不当输入验证(CWE-20)导致目录遍历(CWE-22),利用每中钢协KEV在野外。
Go-based归档库允许提取的文件位置之外的目标文件夹与“. ./“路径遍历序列在一个zip文件的文件名,又名“邮政滑”
万博下载包通讯模块允许读取任意文件使用“. ./”序列。
FTP服务器允许删除任意文件使用“. .”删除命令。
FTP服务器允许创建任意目录使用[“. .”命令。
FTP服务的蓝牙设备允许清单目录,和创建或阅读的文件使用“. .”序列。
软件包维护程序允许覆盖任意文件使用“. ./”序列。
公告板允许攻击者使用《阿凡达》来确定文件的存在。
PHP程序允许任意代码执行使用美联储的文件名“. .”包括()函数。
覆盖的文件使用. .Torrent文件。
聊天程序使用一个定制的笑脸请求允许覆盖文件。
链:外部控制的值为用户所需的语言和主题使路径遍历。
链:库文件直接发送重定向如果要求但继续执行,允许远程文件包含和路径遍历。
+潜在的缓解措施

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does.

当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。

不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。

验证文件名时,用严格的allowlists限制使用的字符集。如果可行,只允许一个“。”字符的文件名,以避免弱点等CWE-23,排除目录分隔符“/”等,以避免CWE-36。使用许可文件扩展名的列表,这将有助于避免cwe - 434

不完全依赖一个过滤机制,消除潜在的危险人物。这相当于一个denylist,这可能是不完整的(cwe - 184)。例如,过滤保护“/”是不够的,如果文件系统还支持使用作为目录分隔符“\”。另一个可能的错误可能发生过滤时,仍然会产生危险的数据(cwe - 182)。例如,如果“. ./“序列是远离“……/ /字符串以顺序的方式,两个实例“. ./”将从原始字符串中删除,但其余字符仍将形成“. ./”字符串。

阶段:体系结构和设计

对于任何一个在客户端执行安全检查,确保这些检查复制在服务器端,为了避免cwe - 602。攻击者可以绕过客户端检查通过修改值后,检查执行,或通过改变客户端完全删除客户端检查。然后,这些修改的值将被提交到服务器。

实施阶段:

策略:输入验证

输入应该解码和规范化应用程序当前的内部表示之前验证(cwe - 180)。确保应用程序不会解码输入两次相同(cwe - 174)。这些错误可以用来绕过allowlist验证方案通过引入危险的输入后检查。

使用一个内置的路径规范化功能(如realpath (C))产生规范版本的路径名,有效地消除了“. .”序列和符号链接(CWE-23,CWE-59)。这包括:

  • 在C realpath ()
  • 在Java getCanonicalPath ()
  • GetFullPath()在ASP.NET
  • 在Perl realpath()或abs_path ()
  • 在PHP realpath ()

阶段:体系结构和设计

策略:库或框架

使用审查库或框架不允许这个弱点发生或提供了结构,使这个弱点更容易避免的。

阶段:操作

防火墙策略:

使用应用程序防火墙,可以检测到攻击这个弱点。它可以是有益的情况下,代码不能固定(因为它是由第三方控制),作为一项紧急预防措施,更全面的软件保证措施被应用,或者提供深度防御。

有效性:温和

注意:应用程序防火墙不可能覆盖所有可能的输入向量。此外,攻击技术可能可以绕过保护机制,比如使用畸形的输入,仍然可以由组件接收处理这些输入。根据功能的不同,应用程序防火墙可能会无意中拒绝或修改合法请求。最后,一些手动工作可能需要定制。

阶段:体系结构和设计;操作

策略:环境硬化

使用所需的最低特权运行您的代码来完成必要的任务(ref - 76]。如果可能的话,创建独立帐户权限有限,只用于一个任务。这样,一个成功的攻击不会立即给攻击者访问其他软件或其环境。例如,数据库应用程序很少需要作为数据库管理员运行,特别是在日常操作。

阶段:体系结构和设计

战略:执行的转换

组接受对象时,如文件名或url,是有限的或已知,从一组固定的输入值创建一个映射(比如数字id)实际的文件名或url,并拒绝所有其他输入。

例如,ID 1可以映射到“收件箱。txt”和ID 2可以映射到“profile.txt”。特性如ESAPI AccessReferenceMap [ref - 185提供此功能。

阶段:体系结构和设计;操作

策略:沙盒或监狱

运行代码的“监狱”或类似沙箱环境执行严格的流程和操作系统之间的边界。这可能有效地限制哪些文件可以在一个特定的目录或访问哪些命令可以执行的软件。

操作系统的例子包括Unix chroot监狱,AppArmor对,SELinux。在一般情况下,托管代码可能会提供一些保护。例如,java。FilePermission in the Java SecurityManager allows the software to specify restrictions on file operations.

这可能不是一个可行的解决方案,它只限制对操作系统的影响;应用程序的其余部分可能仍然接受妥协。

应该注意避免cwe - 243和其他相关弱点监狱。

有效性:有限

注意:这种缓解的有效性取决于特定的沙盒或监狱的预防功能使用,只可能有助于减少攻击的范围,比如限制攻击者对特定文件系统的系统调用或限制部分,可以访问。

阶段:体系结构和设计;操作

策略:减少攻击表面

存储库,包括和实用程序文件之外的web文档根,如果可能的话。否则,将它们存储在一个单独的目录,并使用web服务器的访问控制功能,防止攻击者直接请求。一个常见的做法是定义一个固定的常数在每个调用程序,然后检查存在的恒定在图书馆/包含文件;如果持续的不存在,那么直接请求的文件,它可以立即退出。

这会显著减少的机会攻击者能够绕过任何保护机制的基础程序但不包括文件。这也会减少攻击表面。

实施阶段:

确保错误消息只包含最小的细节,目标受众是有用的,没有其他人。消息需要罢工之间的平衡过于神秘的(可以迷惑用户)或过于详细的(可能揭示超过预期)。不应该透露的消息的方法被用来确定错误。攻击者可以使用详细信息完善或优化他们最初的攻击,从而增加成功的机会。

如果必须捕捉到一些细节错误,记录在日志消息,但想想会发生什么,如果日志消息可以被攻击者。高度敏感的信息,如密码永远不应该被保存到日志文件中。

避免不一致的消息可能会意外地提示攻击者对内部状态,如是否存在一个用户帐户。

的上下文路径遍历,错误消息披露路径信息可以帮助攻击者起草相应的攻击字符串通过文件系统层次结构。

阶段:操作;实现

策略:环境硬化

使用PHP时,配置应用程序,以便它不使用register_globals。在实现,开发应用程序,以便它不依赖于这个特性,但是小心实现register_globals的模拟等弱点cwe - 95,cwe - 621和类似的问题。
+弱点Ordinalities
Ordinality 描述
(其他弱点的弱点存在独立的)
合成
(缺点是通常与其他弱点的存在)
+检测方法

自动静态分析

自动化技术可以找到路径遍历的弱点存在的领域。然而,调整或定制可能需要删除或de-prioritize path-traversal问题由产品的管理员只是可利用的-或其他特权用户,因此潜在的有效的行为或,在最坏的情况下,一个错误,而不是弱点。

有效性:高

人工静态分析

手动白盒技术可以提供足够的代码覆盖率和减少误报,如果所有的文件访问操作可以在有限的时间约束。

有效性:高

自动静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 字节码的弱点分析,包括反汇编程序+源代码弱点分析
成本有效的部分报道:
  • 二进制弱点分析,包括反汇编程序+源代码弱点分析

有效性:高

人工静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 二进制/字节码反汇编程序,然后使用手动分析缺陷和异常

有效性:飙升部分

动态分析与自动化的结果解释

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • Web应用程序扫描
  • Web服务的扫描仪
  • 数据库扫描仪

有效性:高

动态分析与人工解释结果

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 模糊测试
  • 基于框架Fuzzer

有效性:高

人工静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 手工源代码审查(不检查)
成本有效的部分报道:
  • 关注人工抽查,手动分析来源

有效性:高

自动静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 源代码缺陷分析仪
  • Context-configured源代码分析器

有效性:高

体系结构或设计审查

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 正式的方法/ Correct-By-Construction
成本有效的部分报道:
  • 检验(IEEE 1028标准)(适用于需求、设计、源代码,等等)。

有效性:高

+功能区域
  • 文件处理
+影响资源
  • 文件或目录
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 635年 最初使用的弱点NVD从2008年到2016年
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 715年 OWASP十大2007类别A4 -不安全的直接对象引用
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 723年 OWASP十大2004类别A2 -破碎的访问控制
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 743年 CERT C安全编码标准(2008)第十章-输入输出(FIO)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 802年 2010年前25 -资源管理风险
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 813年 OWASP十大2010类别A4 -不安全的直接对象引用
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 865年 2011年前25 -资源管理风险
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 877年 CERT c++安全编码部分09 -输入输出(FIO)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 932年 OWASP十大2013类别A4 -不安全的直接对象引用
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 981年 SFP二级集群:路径遍历
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1031年 OWASP 2017年十大类别A5,破碎的访问控制
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1131年 方案》(2016)——安全质量措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1179年 01 SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1200年 弱点在2019 CWE最危险的软件错误
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1337年 2021 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1340年 方案及数据保护措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1345年 OWASP 2021年十大类别A01:2021——破碎的访问控制
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1350年 2020 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1387年 2022 CWE最危险软件的弱点的弱点
+笔记

的关系

路径名等价可以被看作是一种规范化的错误。

的关系

一些路径名等价问题并不直接相关目录遍历,而用于绕过安全相关的检查文件/目录是否可以被攻击者访问(例如一个落后于“/”文件名可以绕过末尾不要指望/访问规则,导致服务器提供文件时,通常不会)。

术语

像其他弱点,术语通常是基于使用的操作类型,而不是潜在的弱点。有些人使用“目录遍历”只指注入“. .”和相同的序列,它的具体含义是遍历目录。

其他变体,如“绝对路径”和“驱动器”的影响* *目录遍历,但有些人可能不叫它,因为它不涉及“. .”或等价的。

研究的差距

许多变体的路径遍历超对袭击可能是根本原因。cwe - 790cwe - 182开始覆盖这部分差距。

研究的差距

不完整的诊断或报告的漏洞可以让它很难知道哪些变量影响。例如,研究人员可能会说,“. .\“是脆弱的,但不是测试”。/”,也可能是脆弱的。

目录分隔符的任意组合(“/”、“\”,等等)和数字的“。”(e.g. "....") can produce unique variants; for example, the "//../" variant is not listed (CVE-2004-0325). See this entry's children and lower-level descendants.

+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 路径遍历
OWASP十大2007 A4 CWE更具体 不安全的直接对象引用
OWASP十大2004 A2 CWE更具体 破碎的访问控制
CERT C安全编码 FIO02-C 规范化路径名来自不受信任的来源
SEI CERT Perl编码标准 IDS00-PL 确切的 规范化路径名之前验证它们
WASC 33 路径遍历
软件故障模式 SFP16 路径遍历
OMG ASCSM ASCSM -CWE-22
+引用
[REF-7]大卫迈克尔·霍华德和勒布朗。编写安全代码。11章,“目录遍历和使用父路径(. .)”Page 370. 2nd Edition. Microsoft Press. 2002-12-04. <https://www.microsoftpressstore.com/store/writing -安全-代码- 9780735617223>。
REF-45 OWASP。“OWASP企业安全API (ESAPI)项目”。<http://www.owasp.org/index.php/ESAPI>。
OWASP (ref - 185)。“测试路径遍历(owasp -阿兹- 001)”。<http://www.owasp.org/index.php/Testing_for_Path_Traversal_ (owasp -阿兹- 001)>。
[ref - 186]约翰内斯·乌尔里希。“前25系列——等级7 -路径遍历”。无软件安全研究所。2010-03-09。<http://blogs.sans.org/appsecstreetfighter/2010/03/09/top-25-series-rank-7-path-traversal/>。
(ref - 76)肖恩·巴纳姆和迈克尔Gegick。“最小特权”。2005-09-14。<https://www.cisa.gov/uscert/bsi/articles/knowledge/principles/least-privilege>。
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第9章,“文件名和路径”,503页。1版。艾迪生卫斯理》2006。
(ref - 962)对象管理组织(OMG)。“自动源代码安全措施(ASCSM)”。ASCSM-CWE-22。2016 - 01。<http://www.omg.org/spec/ASCSM/1.0/>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+贡献
贡献的日期 贡献者 组织
2022-07-11 尼克·约翰斯顿
识别的弱点在Perl中演示的例子
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Potential_Mitigations Time_of_Introduction
2008-08-15 Veracode
建议OWASP 2004年排名前十的映射
2008-09-08 CWE内容团队 主教法冠
更新Alternate_Terms、关系、Other_Notes、Relationship_Notes Relevant_Properties, Taxonomy_Mappings Weakness_Ordinalities
2008-10-14 CWE内容团队 主教法冠
更新描述
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-07-27 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-02-16 CWE内容团队 主教法冠
更新Alternate_Terms、Applicable_Platforms Common_Consequences Demonstrative_Examples,描述,Detection_Factors, Likelihood_of_Exploit,名字,Observed_Examples, Other_Notes, Potential_Mitigations,引用,Related_Attack_Patterns, Relationship_Notes,关系,Research_Gaps, Taxonomy_Mappings, Terminology_Notes, Time_of_Introduction Weakness_Ordinalities
2010-06-21 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples,描述、Detection_Factors Potential_Mitigations引用关系
2010-09-27 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-12-13 CWE内容团队 主教法冠
更新Potential_Mitigations
2011-03-29 CWE内容团队 主教法冠
更新Potential_Mitigations
2011-06-27 CWE内容团队 主教法冠
更新的关系
2011-09-13 CWE内容团队 主教法冠
更新Potential_Mitigations、引用关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Demonstrative_Examples、引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2013-02-21 CWE内容团队 主教法冠
更新Observed_Examples
2013-07-17 CWE内容团队 主教法冠
更新Related_Attack_Patterns、人际关系
2014-06-23 CWE内容团队 主教法冠
更新Other_Notes Research_Gaps
2014-07-30 CWE内容团队 主教法冠
更新Detection_Factors、关系、Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-01-19 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2017-05-03 CWE内容团队 主教法冠
更新Demonstrative_Examples
2017-11-08 CWE内容团队 主教法冠
更新Affected_Resources、Causal_Nature Likelihood_of_Exploit、引用关系,Relevant_Properties Taxonomy_Mappings
2018-03-27 CWE内容团队 主教法冠
更新引用关系
2019-01-03 CWE内容团队 主教法冠
更新引用,Related_Attack_Patterns、关系、Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新Related_Attack_Patterns、关系类型
2019-09-19 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2020-06-25 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples、人际关系
2021-07-20 CWE内容团队 主教法冠
更新的关系
2021-10-28 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2022-06-28 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2022-10-13 CWE内容团队 主教法冠
更新Observed_Examples,引用
2023-01-31 CWE内容团队 主教法冠
更新Common_Consequences、描述Detection_Factors
+以前的条目名称
改变日期 以前的条目名称
2010-02-16 路径遍历

CWE-59:不当链接之前决议文件访问(“链接后”)

弱点ID: 59
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品基于文件名试图访问一个文件,但它不适当阻止,文件名标识一个链接或快捷方式,解决了一个意想不到的资源。
+替代条款
不安全的临时文件:
有些人使用这个词“不安全的临时文件”指一个链接后的弱点,但其他弱点可以产生不安全的临时文件没有任何符号链接参与。
邮政单:
“Zip”攻击,使用文件档案(如邮政、焦油、rar,等等),包含文件名和路径遍历序列,导致文件写的目录以外的存档将提取(ref - 1282]。是最常用的相对路径遍历(CWE-23)和链接后(CWE-59)。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 706年 使用Incorrectly-Resolved名称或引用
ParentOf 复合组合——一个复合元素包含两个或两个以上不同的弱点,所有弱点必须出现在同一时间为了一个潜在的漏洞出现。删除任何缺点消除或大大降低了风险。一个弱点,X,可以“分解”组件弱点Y和z可以有弱点在哪些情况下可能不是必要的复合,但复合的性质变化时变成了弱点。 61年 UNIX符号链接(符号链接)
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 62年 UNIX硬链接
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 64年 Windows快捷方式后(.LNK)
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 65年 Windows硬链接
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 1386年 不安全的操作在Windows上结/挂载点
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 73年 外部控制文件名或路径
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 363年 竞态条件使链接后
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1219年 文件处理问题
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 706年 使用Incorrectly-Resolved名称或引用
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1019年 验证输入
+背景细节
软链接是一个UNIX术语是简单快捷键在windows平台上的同义词。
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现 实现:造成这一弱点在建筑安全策略的实施。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

操作系统

类:窗户(有时流行)

Unix类:(通常是普遍的)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
保密
完整性
访问控制

技术的影响:阅读文件或目录;修改文件或目录;旁路保护机制

攻击者可以遍历文件系统,以意想不到的地点和读或覆盖意想不到的文件的内容。如果文件被用于安全机制,那么攻击者可以绕过机制。
其他

技术的影响:执行未经授权的代码或命令

Windows快捷方式简单,有时被称为软链接,可以利用远程自”。LNK“上传文件可以像一个正常的文件。这可以使远程执行。
+利用的可能性
媒介
+观察到的例子
参考 描述
一些版本的Perl遵循符号链接时使用- e选项,它允许本地用户覆盖任意文件通过一个符号链接攻击。
文本编辑器创建救援时遵循符号链接复制在异常退出,它允许本地用户覆盖其他用户的文件。
防病毒更新允许本地用户创建或添加到任意文件通过一个符号链接攻击一个日志文件。
符号链接攻击允许本地用户覆盖文件。
窗口管理器不妥善处理当某些符号链接指向“过时”的位置,这可能允许本地用户创建或截断任意文件。
二阶符号链接漏洞
二阶符号链接漏洞
符号链接在Python程序
Setuid产品允许文件阅读通过替换一个文件正在编辑符号链接到目标文件,解析失败时泄露导致的错误消息。
信号引起抛售,符号链接。
硬链接攻击,文件覆盖;有趣,因为程序检查软链接
硬链接和符号链接在嵌入式操作系统漏洞允许本地用户覆盖任意文件。
作为根用户服务器创建硬链接和分开的文件,它允许本地用户获得特权被删除和覆盖任意文件。
操作系统允许本地用户进行拒绝服务通过创建硬链接从一个设备特殊文件到一个文件在一个NFS文件系统。
虚拟主机管理器之前硬链接,允许本地用户读取或修改任意文件。
包装清单系统允许本地用户覆盖任意文件通过一个硬链接lockfiles攻击。
硬链接竞态条件
邮件客户端允许远程攻击者绕过用户警告等可执行附件. exe, com,并通过.lnk。bat文件指的是附件,又名“隐形依恋。”
FTP服务器允许远程攻击者读取任意文件和目录的上传.lnk(链接)文件指向目标文件。
FTP服务器允许远程攻击者读取任意文件和目录的上传.lnk(链接)文件指向目标文件。
浏览器允许远程恶意网站覆盖任意文件通过诱骗用户下载.LNK两次(链接)文件,它覆盖第一个.LNK文件中引用的文件。
“.LNK。”- .LNK with trailing dot
rootkit能绕过文件访问限制到Windows内核目录使用NtCreateSymbolicLinkObject函数创建符号链接
文件系统允许本地攻击者隐藏文件使用活动通过一个硬链接到目标文件,导致链接被记录在审计跟踪的目标文件。
Web服务器插件允许本地用户覆盖任意文件通过一个符号链接攻击可预测的临时文件名。
Libcontainer用于码头工人引擎允许本地用户逃避集装箱化和写作上的任意文件通过一个符号链接攻击主机系统在一个图像与一个容器。
“Zip”漏洞Go-based开放容器倡议(OCI)注册产品允许写作目的以外的任意文件目录通过符号链接或gzip压缩文件的硬链接。
“Zip”漏洞在容器管理产品允许写作目的以外的任意文件目录(通过一个容器形象。焦油和文件名格式),符号链接指向其他文件在相同的tar文件;然而,文件也可以是符号链接指向目的地以外的目的目录,绕过最初的检查。
+潜在的缓解措施

阶段:体系结构和设计

策略:分离的特权

遵循最小特权原则分配访问权限实体在一个软件系统。

拒绝访问一个文件可以防止攻击者替换该文件链接到一个敏感文件。确保良好的系统提供保护区的划分,可以信任。

+弱点Ordinalities
Ordinality 描述
合成
(缺点是通常与其他弱点的存在)
+检测方法

自动静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 字节码的弱点分析,包括反汇编程序+源代码弱点分析

有效性:飙升部分

人工静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 二进制/字节码反汇编程序,然后使用手动分析缺陷和异常

有效性:飙升部分

动态分析与自动化的结果解释

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • Web应用程序扫描
  • Web服务的扫描仪
  • 数据库扫描仪

有效性:飙升部分

动态分析与人工解释结果

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 模糊测试
  • 基于框架Fuzzer

有效性:飙升部分

人工静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 关注人工抽查,手动分析来源
  • 手工源代码审查(不检查)

有效性:高

自动静态分析源代码

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 源代码缺陷分析仪
  • Context-configured源代码分析器

有效性:飙升部分

体系结构或设计审查

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 正式的方法/ Correct-By-Construction
成本有效的部分报道:
  • 检验(IEEE 1028标准)(适用于需求、设计、源代码,等等)。

有效性:高

+功能区域
  • 文件处理
+影响资源
  • 文件或目录
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 635年 最初使用的弱点NVD从2008年到2016年
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 743年 CERT C安全编码标准(2008)第十章-输入输出(FIO)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 748年 CERT C安全编码标准(2008)附录- POSIX (POS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 808年 2010年处于25 -弱点
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 877年 CERT c++安全编码部分09 -输入输出(FIO)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 980年 SFP二级集群:链接资源名称解析
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1185年 07年SEI CERT Perl编码标准,指导方针。文件输入和输出(FIO)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1345年 OWASP 2021年十大类别A01:2021——破碎的访问控制
+笔记

理论

链接以下漏洞多因素漏洞(MFV)。他们是多个元素的组合:文件或目录的权限,文件名可预测性,竞态条件,在某些情况下,一个设计限制,没有执行原子文件创建操作的机制。

一些潜在的因素是竞争条件、权限和可预测性。

+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 链接后
CERT C安全编码 FIO02-C 规范化路径名来自不受信任的来源
CERT C安全编码 POS01-C 检查链接在处理文件的存在
SEI CERT Perl编码标准 FIO01-PL CWE更具体 不操作文件,不受信任的用户可以修改吗
软件故障模式 SFP18 链接资源名称解析
+引用
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第9章,“符号链接攻击”,518页。1版。艾迪生卫斯理》2006。
(ref - 1282) Snyk。“邮政滑脆弱性”。2018-06-05。<https://security.snyk.io/research/zip-slip-vulnerability>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
Alternate_Terms更新,Applicable_Platforms、人际关系、Other_Notes Relationship_Notes, Taxonomy_Mappings Weakness_Ordinalities
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-01-12 CWE内容团队 主教法冠
更新的关系
2009-05-27 CWE内容团队 主教法冠
更新描述、名称
2009-10-29 CWE内容团队 主教法冠
更新Background_Details Other_Notes
2010-02-16 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2010-04-05 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences Observed_Examples、引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-06-23 CWE内容团队 主教法冠
更新Common_Consequences Other_Notes
2014-07-30 CWE内容团队 主教法冠
更新Detection_Factors、关系、Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Affected_Resources、Applicable_Platforms Causal_Nature、Common_Consequences Functional_Areas, Likelihood_of_Exploit, Modes_of_Introduction,关系,Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
2021-10-28 CWE内容团队 主教法冠
更新的关系
2022-04-28 CWE内容团队 主教法冠
更新Research_Gaps
2022-06-28 CWE内容团队 主教法冠
更新的关系
2022-10-13 CWE内容团队 主教法冠
更新Alternate_Terms、Background_Details Observed_Examples、引用Relationship_Notes Theoretical_Notes
2023-01-31 CWE内容团队 主教法冠
更新描述
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 链接后
2009-05-27 之前未能解决链接文件访问(又名“链接后”)

cwe - 95:不当中和指令的动态评估代码(Eval注入)

弱点ID: 95
抽象:变体
结构:简单的
视图定制的信息:
+描述
产品从一个上游组件接收输入,但它不会消除或中和代码语法错误使用前输入在一个动态的评价(如打电话。“eval”)。
+扩展描述
这可能允许攻击者执行任意代码,或者至少修改什么代码可以执行。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 94年 不当控制生成的代码(代码注入)
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1019年 验证输入
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计 这在处理程序的缺点是普遍/调度程序可能需要调用大量的功能,或设置大量的变量。
实现 实现:造成这一弱点在建筑安全策略的实施。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

Java患病率(待定)

JavaScript患病率(待定)

Python患病率(待定)

Perl患病率(待定)

PHP患病率(待定)

Ruby患病率(待定)

类:解释患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
保密

技术的影响:阅读文件或目录;读取应用程序数据

注入的代码可以访问受限制的数据/文件。
访问控制

技术的影响:旁路保护机制

在某些情况下,注射代码控制认证;这可能会导致远程漏洞。
访问控制

技术的影响:获得特权或假设的身份

注入的代码可以访问资源,攻击者直接禁止访问。
完整性
保密
可用性
其他

技术的影响:执行未经授权的代码或命令

代码注入攻击可能导致的损失数据完整性在几乎所有情况下的控制平面数据注入总是附带数据召回或写作。此外,代码注入往往导致执行任意代码。
不可抵赖性

技术的影响:隐藏活动

经常unlogged注入控制代码执行的操作。
+利用的可能性
媒介
+示范例子

示例1

edit-config。pl:这CGI脚本用于修改配置文件中的设置。

(坏的代码)
例如语言:Perl
使用CGI qw(:标准);

子config_file_add_key {
我的(关键帧,美元,美元arg) = @ _;
#代码添加一个字段/文件的关键就在这里
}

子config_file_set_key {
我的(关键帧,美元,美元arg) = @ _;
#代码设置特定文件的关键就在这里
}

子config_file_delete_key {
我的(关键帧,美元,美元arg) = @ _;
#代码从一个特定的文件删除键就在这里
}

子handleConfigAction {
我的(帧,行动美元)= @ _;
我美元关键=参数(关键);
我$ val =参数(“val”);
#这是高效的代码,特别是如果你必须调用
#任何几十种不同的功能之一!

我的代码=美元”config_file_ action_key美元(美元\帧美元\键,美元\ val);”;
美元eval(代码);
}

$ configfile =“/ home / cwe / config.txt”;
打印头;
如果(定义(参数('行动'))){
handleConfigAction (configfile美元,参数('行动'));
}
其他{
打印”指定的任何行动! \ n”;
}

脚本打算采取行动的参数和调用多种功能的基于该参数的值——config_file_add_key (), config_file_set_key(),或config_file_delete_key ()。它可以单独设置一个条件来调用每个函数,但eval()是一个强大的方法使用更少的代码做同样的事情,尤其是当涉及大量的函数或变量。不幸的是,在这种情况下,攻击者可以提供其他值在操作参数,如:

(攻击代码)
中(“,”、“);系统(“/ bin / ls”);

这将产生以下字符串handleConfigAction ():

(结果)
config_file_add_key (”、“,”);系统(“/ bin / ls”);

可以添加任意Perl代码后,攻击者已经“关闭”建设的原始的函数调用,为了防止解析错误造成恶意eval()失败之前攻击者的有效载荷被激活。这个特定的操作系统()调用会失败后,因为“_key(\ $帧\键,美元\ $ val)”部分的字符串会导致一个错误,但这是无关紧要的攻击,因为负载已经激活。

示例2

这个简单的脚本要求用户提供一个数字列表作为输入,并将它们添加在一起。

(坏的代码)
例如语言:Python
def main ():
和= 0
数量= eval(输入("输入一个空格分隔的数字列表:"))
num的数字:
=和+ num求和
打印(f”之和{数字}={和}")
main ()

eval()函数可以将用户提供的列表,并将它转换成一个Python列表对象,因此允许程序员使用列表理解方法来处理数据。但是,如果代码提供给eval()函数,它将执行代码。例如,恶意用户可以提供以下字符串:

(攻击代码)
__import__(“子流程”)。getoutput (rm - r *)

这将删除当前目录中的所有文件。由于这个原因,不建议使用eval()不可信的输入。

来完成这个不使用eval()是应用整数转换输入在一个try /除了块。如果用户提供的输入不是数字,这将提高ValueError。通过避免eval(),没有机会执行输入字符串的代码。

(好的代码)
例如语言:Python
def main ():
和= 0
数量=输入(输入一个空格分隔的数字列表:)。分割(" ")
试一试:
num的数字:
=和+ num求和
打印(f”之和{数字}={和}")
除了ValueError:
print(“错误:无效输入”)
main ()

另一种选择是使用ast.literal_eval()函数从Python的ast模块。这个函数只考虑Python文字作为有效数据类型和不会执行任何代码中包含用户输入。

+观察到的例子
参考 描述
Python编译器使用eval()来执行恶意字符串作为Python代码。
链:正则表达式在EXIF处理器代码不正确确定字符串结束(cwe - 625),使eval注入(cwe - 95),利用每中钢协KEV在野外。
链:反斜杠,后跟一个换行符可以绕过验证步骤(CWE-20),导致eval注入(cwe - 95),利用每中钢协KEV在野外。
Eval注入在PHP程序。
Eval注入在Perl程序。
Eval注入在Perl程序使用一个ID应该只包含连字符和数字。
直接代码注入Perl eval函数。
Eval注入在Perl程序。
直接代码注入Perl eval函数。
直接代码注入Perl eval函数。
MFV。使用嵌套代码注入到PHP eval语句结构不能嵌套。
MFV。使用嵌套代码注入到PHP eval语句结构不能嵌套。
Python代码注入eval语句从一个字段格式的文件。
Eval注入在Python程序。
链:合成eval注入。无效的值可以防止初始化的变量,它可以被攻击者修改后来注入PHP eval语句。
链:执行重定向后触发eval注入。
+潜在的缓解措施

阶段:体系结构和设计;实现

如果可能的话,重构你的代码,所以它不需要使用eval ()。

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does.

当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。

不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。

实施阶段:

输入应该解码和规范化应用程序当前的内部表示之前验证(cwe - 180,cwe - 181)。确保您的应用程序不会无意中解码输入两次相同(cwe - 174)。这些错误可以用来绕过allowlist方案通过引入危险的输入后检查。使用库如OWASP ESAPI规范化控制。

考虑执行重复的规范化,直到输入不会改变。这将避免double-decoding和类似的场景,但它可能无意中修改输入,允许包含正确编码危险的内容。

+弱点Ordinalities
Ordinality 描述
(其他弱点的弱点存在独立的)
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 714年 OWASP 2007年十大类别A3 -恶意文件执行
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 727年 OWASP十大2004类别A6 -注塑缺陷
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 990年 SFP二级集群:污染输入命令
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1179年 01 SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1347年 OWASP十大2021类别A03:2021 -注射
+笔记

其他

因素:特殊字符错误可以扮演一个角色在增加各种各样的代码,可以注射,虽然有些漏洞不需要特殊字符,例如,当一个函数没有参数可以引用一个终结者的角色并不是必要的。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 直接动态代码评估(Eval注入)
OWASP十大2007 A3 CWE更具体 恶意文件执行
OWASP十大2004 A6 CWE更具体 注塑缺陷
软件故障模式 SFP24 污染输入命令
SEI CERT Perl编码标准 IDS35-PL 确切的 不调用eval形式字符串参数
+引用
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第18章,“在线评估”,1095页。1版。艾迪生卫斯理》2006。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-08-15 Veracode
建议OWASP 2004年排名前十的映射
2008-09-08 CWE内容团队 主教法冠
更新Applicable_Platforms、描述Modes_of_Introduction、关系、Other_Notes, Taxonomy_Mappings Weakness_Ordinalities
2009-01-12 CWE内容团队 主教法冠
更新描述、Observed_Examples Other_Notes Research_Gaps
2009-05-27 CWE内容团队 主教法冠
更新Alternate_Terms、Applicable_Platforms Demonstrative_Examples、描述、名称、引用
2010-02-16 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-06-21 CWE内容团队 主教法冠
更新描述、名称
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples、引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2013-02-21 CWE内容团队 主教法冠
更新Observed_Examples
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Causal_Nature Modes_of_Introduction、引用关系,Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新的类型
2020-02-24 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2020-06-25 CWE内容团队 主教法冠
更新Potential_Mitigations
2021-03-15 CWE内容团队 主教法冠
更新的关系
2021-10-28 CWE内容团队 主教法冠
更新的关系
2022-04-28 CWE内容团队 主教法冠
更新Research_Gaps
2022-06-28 CWE内容团队 主教法冠
更新Observed_Examples
2022-10-13 CWE内容团队 主教法冠
更新Observed_Examples
2023-01-31 CWE内容团队 主教法冠
更新Demonstrative_Examples、描述
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 直接动态代码评估(Eval注入)
2009-05-27 在代码动态地评估不足的控制指令(又名“Eval注入”)
2010-06-21 不适当的卫生处理指令的动态评估代码(Eval注入)

cwe - 77:不当中和一个命令中使用的特殊元素(“命令注入”)

弱点ID: 77
抽象:
结构:简单的
视图定制的信息:
+描述
产品结构的全部或部分命令使用externally-influenced输入从一个上游组件,但这并不中和或错误地中和特殊元素时可以修改预定的命令发送到下游组件。
+扩展描述

命令注入漏洞通常发生在:

1。数据进入应用程序从一个不可信的来源。
2。数据是一个字符串的一部分,作为应用程序命令的执行。
3所示。通过执行命令,应用程序为攻击者提供了特权或能力,否则攻击者不会有。

许多协议和产品有自己的自定义命令语言。虽然OS或shell命令字符串经常发现和有针对性,开发人员可能没有意识到,这些其他命令语言也可能容易受到攻击。

包装程序命令注入是一种常见的问题。

+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 74年 不当中和下游组件使用的特殊元素的输出(注射)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 78年 不当使用中和特殊元素在一个操作系统命令(OS命令注入)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 88年 不当中和一个命令的参数分隔符(“参数注入”)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 624年 可执行正则表达式错误
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 917年 不当中和一个表达式语言语句中使用的特殊元素(表达式语言注入)
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 74年 不当中和下游组件使用的特殊元素的输出(注射)
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1019年 验证输入
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 78年 不当使用中和特殊元素在一个操作系统命令(OS命令注入)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 88年 不当中和一个命令的参数分隔符(“参数注入”)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 624年 可执行正则表达式错误
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 917年 不当中和一个表达式语言语句中使用的特殊元素(表达式语言注入)
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及数据保护措施”(cwe - 1340)
自然 类型 ID 的名字
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 78年 不当使用中和特殊元素在一个操作系统命令(OS命令注入)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 88年 不当中和一个命令的参数分隔符(“参数注入”)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 624年 可执行正则表达式错误
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 917年 不当中和一个表达式语言语句中使用的特殊元素(表达式语言注入)
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现 实现:造成这一弱点在建筑安全策略的实施。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性
保密
可用性

技术的影响:执行未经授权的代码或命令

如果恶意用户注入一个字符(比如分号)划入一个命令的结束和另一个的开始,它可能会插入一个全新的和无关的命令并不是为了被执行。
+利用的可能性
+示范例子

示例1

以下简单的程序接受文件名作为命令行参数并显示文件的内容给用户。程序安装setuid root,因为它的目的是作为一个学习工具,允许系统管理员培训检查特权系统文件没有给他们修改他们的能力或破坏系统。

(坏的代码)
例如语言:C
int主要(int命令行参数个数,char * * argv) {
char cmd [CMD_MAX] = " / usr / bin /猫”;
strcat (cmd, argv [1]);
系统(cmd);
}

因为根特权的程序运行,调用系统()也使用root特权执行。如果用户指定了一个标准的文件名,调用是否按预期运行。然而,如果攻击者通过一个字符串的形式”;rm射频/”,然后调用系统()失败执行猫由于缺乏论据,然后犁递归删除根分区的内容。

注意,如果argv[1]是一个很长的参数,那么这个问题可能还受到缓冲区溢出(cwe - 120)。

示例2

下面的代码是一个管理web应用程序允许用户启动一个Oracle数据库的备份使用批处理文件包装rman实用程序,然后运行清理。蝙蝠脚本删除一些临时文件。脚本rmanDB。蝙蝠接受一个命令行参数,它指定什么类型的备份执行。因为限制访问数据库,应用程序运行备份作为特权用户。

(坏的代码)
例如语言:Java

字符串btype = request.getParameter (“backuptype”);
字符串cmd =新的字符串(“cmd。exe / K \”
c: \ \ util \ \ rmanDB。蝙蝠”
+ btype +
“c: \ \你\ \ cleanup.bat \“”)

System.Runtime.getRuntime () .exec (cmd);

这里的问题是,这个项目不做任何验证backuptype参数读取用户。通常Runtime.exec()函数不会执行多个命令,但在这种情况下,程序第一次运行cmd。exe壳为了运行多个命令用一个叫Runtime.exec ()。一旦调用shell,它将愉快地执行多个指令通过两个&号分开。如果攻击者通过一个字符串的形式”& del c: \ \ dbms \ \ *。*", then the application will execute this command along with the others specified by the program. Because of the nature of the application, it runs with the privileges necessary to interact with the database, which means whatever command the attacker injects will run with those privileges as well.

示例3

下面的代码从系统实用程序使用系统属性APPHOME确定安装的目录,然后执行一个初始化脚本基于指定的目录的相对路径。

(坏的代码)
例如语言:Java

字符串回家= System.getProperty (“APPHOME”);
字符串cmd = + INITCMD回家;
java.lang.Runtime.getRuntime () .exec (cmd);

上面的代码允许攻击者执行任意命令的高架特权应用程序通过修改系统属性APPHOME指向一个包含恶意INITCMD版本不同的道路。因为程序不验证值读取环境,如果攻击者可以控制APPHOME系统属性的值,然后他们可以愚弄应用程序运行恶意代码和系统的控制。

示例4

下面的代码是一个包装的UNIX命令猫将文件的内容打印到标准输出。这也是注射:

(坏的代码)
例如语言:C
# include < stdio . h >
# include < unistd.h >

int主要(int命令行参数个数,char * * argv) {

猫char[] = "猫";
char *命令;
size_t commandLength;

commandLength = strlen (cat) + strlen (argv [1]) + 1;
命令= (char *) malloc (commandLength);
strncpy(指挥、猫、commandLength);
strncat(命令、argv [1] (commandLength - strlen (cat)));

系统(命令);
返回(0);
}

正常使用,输出就是文件的内容要求:

(信息)
美元。/ catWrapper Story.txt
当我们离开我们的英雄……

然而,如果我们添加一个分号,这条线的结束另一个命令,该命令执行catWrapper没有抱怨:

(攻击代码)
美元。/ catWrapper Story.txt;ls
当我们离开我们的英雄……
Story.txt
SensitiveFile.txt
PrivateData.db
a.o ut *

如果catWrapper设置高特权级别比标准的用户,可以执行任意命令与更高的特权。

+观察到的例子
参考 描述
面向依赖管理工具可以避免OS命令注入在生成Git命令但是允许注入可选参数和输入从少量开始,可能允许代码执行。
规范的操作系统命令的例子注入。CGI程序并不中和“|”元字符当调用一个电话本程序。
链:不当输入验证(CWE-20)在用户参数,导致操作系统命令注入(cwe - 78),利用每中钢协KEV在野外。
注入sed脚本语法(sed注入)
注入sed脚本语法(sed注入)
注入sed脚本语法(sed注入)
图像程序允许注入的命令在“魔法矢量图形(MVG)”的语言。
反垃圾邮件产品允许注入SNMP命令到confiuration文件中
+潜在的缓解措施

阶段:体系结构和设计

如果可能的话,使用库调用而不是外部流程重建所需的功能。

实施阶段:

如果可能的话,确保所有外部命令从程序静态创建。

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does.

当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。

不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。

阶段:操作

运行时间:运行时可以使用策略实施allowlist方式以防止任何non-sanctioned命令的使用。

阶段:系统配置

分配权限,阻止用户访问/开放特权文件。
+弱点Ordinalities
Ordinality 描述
(其他弱点的弱点存在独立的)
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 713年 OWASP十大2007类别A2 -注塑缺陷
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 722年 OWASP十大2004类别A1 -用户输入
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 727年 OWASP十大2004类别A6 -注塑缺陷
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 929年 OWASP十大2013类别A1 -注射
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 990年 SFP二级集群:污染输入命令
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1005年 7 pk -输入验证和代表性
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1027年 OWASP十大2017类别A1 -注射
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1179年 01 SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1337年 2021 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1340年 方案及数据保护措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1347年 OWASP十大2021类别A03:2021 -注射
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1387年 2022 CWE最危险软件的弱点的弱点
+笔记

映射

使用映射:Allowed-with-Review (CWE ID可以用来映射到实际的漏洞在有限的情况下需要仔细审查)。

理由是:cwe - 77时通常使用操作系统命令注入(cwe - 78)的目的是(ref - 1287]。

评论:如果弱点涉及到命令语言除了操作系统shell调用,然后cwe - 77可以使用。

术语

“命令注入”词对不同的人有着不同的意义。对一些人来说,它指的是任何类型的攻击,可以允许攻击者执行命令自己的选择,无论如何插入这些命令。因此命令注入可以合成从另一个弱点。这种用法还包括病例的功能允许用户指定一个完整的命令,然后执行;CWE之内,这种情况可能是更好的被视为授权问题(因为攻击者不能指定任意命令。)

另一个常见的用法,包括cwe - 77及其后裔,包括分隔符注入情况下,攻击者的命令被构造。

+分类法映射
映射分类名称 节点ID 适合 映射节点名
7有害的王国 命令注入
命令注入
OWASP十大2007 A2 CWE更具体 注塑缺陷
OWASP十大2004 A1 CWE更具体 用户输入
OWASP十大2004 A6 CWE更具体 注塑缺陷
软件故障模式 SFP24 污染输入命令
SEI CERT Perl编码标准 IDS34-PL CWE更具体 不通过不可信,unsanitized数据命令解释器
+引用
卡特里娜REF-6 Tsipenyuk,布莱恩象棋和加里·麦克格劳博士。“七有害的王国:分类软件安全错误”。NIST研讨会软件安全保障技术和度量工具。NIST的。2005-11-07。<https://samate.nist.gov/SSATTM_Content/papers/Seven%20Pernicious%20Kingdoms%20-%20Taxonomy%20of%20Sw%20Security%20Errors%20-%20Tsipenyuk%20-%20Chess%20-%20McGraw.pdf>。
(ref - 140)霍格伦德和加里·麦克格劳博士。“利用软件:如何打破代码”。addison - wesley。2004-02-27。<https://www.amazon.com/Exploiting-Software-How-Break-Code/dp/0201786958>。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪恶之十:命令注入。”Page 171. McGraw-Hill. 2010.
(ref - 1287)主教法冠。“补充细节- 2022 CWE前25”。的细节问题映射。2022-06-28。<https://cwe.mitre.org/top25/archive/2022/2022_cwe_top25_supplemental.html problematicMappingDetails>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 7有害的王国
+贡献
贡献的日期 贡献者 组织
2022-05-20 匿名的外部因素
在术语报告中报告错误
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-08-15 Veracode
建议OWASP 2004年排名前十的映射
2008-09-08 CWE内容团队 主教法冠
更新Common_Consequences、人际关系、Other_Notes Taxonomy_Mappings Weakness_Ordinalities
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples、名称
2009-07-27 CWE内容团队 主教法冠
更新Demonstrative_Examples、描述的名字
2009-10-29 CWE内容团队 主教法冠
Common_Consequences更新,描述、Other_Notes Potential_Mitigations
2010-02-16 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2010-06-21 CWE内容团队 主教法冠
更新描述、名称
2011-03-29 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples、引用Related_Attack_Patterns、人际关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2013-02-21 CWE内容团队 主教法冠
更新的关系
2013-07-17 CWE内容团队 主教法冠
更新的关系
2014-02-18 CWE内容团队 主教法冠
更新Applicable_Platforms Demonstrative_Examples,描述、Other_Notes Terminology_Notes
2014-06-23 CWE内容团队 主教法冠
更新的关系
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新Demonstrative_Examples、人际关系
2017-05-03 CWE内容团队 主教法冠
更新Potential_Mitigations Related_Attack_Patterns,关系
2017-11-08 CWE内容团队 主教法冠
更新Causal_Nature、Likelihood_of_Exploit Modes_of_Introduction、引用关系,Taxonomy_Mappings
2018-03-27 CWE内容团队 主教法冠
更新的关系
2019-01-03 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新Related_Attack_Patterns、人际关系
2020-02-24 CWE内容团队 主教法冠
更新Potential_Mitigations、引用关系
2020-06-25 CWE内容团队 主教法冠
更新Potential_Mitigations
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
2021-07-20 CWE内容团队 主教法冠
更新描述、Observed_Examples关系
2021-10-28 CWE内容团队 主教法冠
更新的关系
2022-06-28 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2022-10-13 CWE内容团队 主教法冠
更新Observed_Examples、引用Terminology_Notes
2023-01-31 CWE内容团队 主教法冠
更新描述,Potential_Mitigations
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 命令注入
2009-05-27 未能清理数据到控制面(又名“命令注入”)
2009-07-27 未能清洁数据到控制面(命令注入)
2010-06-21 卫生处理不当的特殊元素中使用一个命令(“命令注入”)

cwe - 129:不当的验证数组索引

弱点ID: 129
抽象:变体
结构:简单的
视图定制的信息:
+描述
产品使用不受信任的输入在计算或使用数组索引,但是产品不验证或不正确验证索引,确保索引引用数组中的一个有效位置。
+替代条款
禁止入内的数组索引
index-out-of-range
数组索引下溢
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 1285年 验证指定的索引位置不当,或抵消输入
CanPrecede 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 119年 不当的操作限制的范围内一个内存缓冲区
CanPrecede 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 789年 内存分配过多的大小值
CanPrecede 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 823年 超出范围的使用指针偏移量
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1215年 数据验证问题
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 20. 不正确的输入验证
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C(通常是普遍的)

c++(通常是普遍的)

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性
可用性

技术的影响:DoS:崩溃,退出或重新启动

使用索引的数组的边界之外很可能导致腐败相关的记忆,或许说明,导致崩溃,如果之外的值是有效的内存区域。
完整性

技术的影响:修改内存

如果内存损坏数据,而不是指令,系统将继续与不当函数值。
保密
完整性

技术的影响:修改内存;读记忆

使用索引的数组的边界之外还可以触发界外读或写操作,或操作错误的对象;即。,"buffer overflows" are not always the result. This may result in the exposure or modification of sensitive data.
完整性
保密
可用性

技术的影响:执行未经授权的代码或命令

如果攻击者可访问的内存可以有效地控制,它可能会运行任意代码的情况,与标准的缓冲区溢出和可能不使用大型输入如果一个精确的索引可以控制。
完整性
可用性
保密

技术的影响:DoS:崩溃,退出或重新启动;执行未经授权的代码或命令;读记忆;修改内存

一个故障可能允许一个溢出(cwe - 788()或下溢cwe - 786)数组的索引。接下来会发生什么,将取决于执行的操作类型的范围,但可以暴露敏感信息,导致系统崩溃,或者可能导致执行任意代码。
+利用的可能性
+示范例子

示例1

在下面的代码片段中,一个不可信的整数值是用来引用一个对象数组。

(坏的代码)
例如语言:Java
公共字符串getValue (int指数){
返回数组(指数);
}

如果索引数组的范围之外,这可能会导致一个ArrayIndexOutOfBounds异常了。

示例2

下面的例子将用户提供的价值分配一个对象数组,然后作用于数组中。

(坏的代码)
例如语言:Java
私人空间buildList (int untrustedListSize) {
如果(0 > untrustedListSize) {
死亡(“负价值提供列表的大小,死邪恶的黑客!”);
}
小部件[]=新的小部件列表(untrustedListSize);
[0]=新的小部件列表();
}

这个例子中试图建立一个从用户指定的值列表,甚至检查以确保提供一个非负价值。然而,如果提供的是一个0值,代码将建立一个数组大小为0,然后尝试一个新的小部件存储在第一个位置,导致抛出一个异常。

示例3

在以下代码,方法检索一个值在一个特定的数组索引数组位置作为输入参数的方法

(坏的代码)
例如语言:C
int getValueFromArray (int *数组,int len, int指数){

int值;

/ /检查数组下标小于最大

/ /数组的长度
如果(指数< len) {
/ /获取值的指定索引数组
值=数组(指数);
}
/ /如果数组索引无效则输出错误消息

/ /并返回值指示错误
其他{
printf(“价值:% d \ n”,阵列(指数));
值= 1;
}

返回值;
}

然而,这种方法只验证给定的数组下标小于数组的最大长度但不检查的最小值(cwe - 839)。这将允许一个负值被接受作为输入数组索引,这将导致一个界外读(cwe - 125),并可能允许访问敏感的记忆。输入数组索引应该检查来验证在最大和最小范围内所需的阵列(cwe - 129)。在这个例子中if语句应该修改为包括一个最小范围检查,如下所示。

(好的代码)
例如语言:C



/ /检查数组索引内是正确的

/ /数组的值的范围
如果(指数> = 0 & &指数< len) {

示例4

下面的示例检索消息的大小对于一个pop3邮件服务器。消息大小从套接字检索返回的缓冲区数量和消息大小的消息,消息数量(num)和大小(尺寸)提取缓冲和消息大小被放置到一个数组中使用数组索引的消息数量。

(坏的代码)
例如语言:C

/ *获取所有消息的大小* /
int getsize (int袜子,int, int *大小){

字符缓冲区(BUFFER_SIZE);
int好;
int num、大小;

/ /读取从套接字和值添加到数组大小
((好= gen_recv(袜子,但,sizeof (buf))) = = 0)
{
/ /继续从套接字读取到缓冲区只包含“。”
如果(DOTLINE (buf))
打破;
else if (sscanf (buf,“% d % d”, num,大小)= = 2)
大小(num - 1) =大小;
}
}

在这个例子中,消息数量从缓冲区可以检索的值超出了允许范围的数组索引,可能是一个负数。没有适当的验证值用于数组索引数组溢出可能发生和可能导致未经授权的访问内存地址和系统崩溃。数组索引的值应进行验证,以确保它是在容许范围内数组的索引如以下代码。

(好的代码)
例如语言:C

/ *获取所有消息的大小* /
int getsize (int袜子,int, int *大小){

字符缓冲区(BUFFER_SIZE);
int好;
int num、大小;

/ /读取从套接字和值添加到数组大小
((好= gen_recv(袜子,但,sizeof (buf))) = = 0)
{

/ /继续从套接字读取到缓冲区只包含“。”
如果(DOTLINE (buf))
打破;

else if (sscanf (buf,“% d % d”, num,大小)= = 2){
如果(num > 0 & & num < = (unsigned)计数)
大小(num - 1) =大小;

其他的

/ *警告可能试图引发缓冲区溢出* /
报告(stderr,“警告:忽略虚假数据服务器返回的消息大小。\ n”);
}
}
}

示例5

在下面的示例中,该方法displayProductSummary叫做从Web服务servlet来检索产品摘要信息显示给用户。servlet得到产品的整数值从用户数量并将其传递到displayProductSummary方法。displayProductSummary方法将产品编号的整数值传递给getProductSummary方法获得的产品目录包含项目总结使用整数的数组对象价值的产品编号的数组索引。

(坏的代码)
例如语言:Java

/ /方法从servlet调用来获取产品信息
公共字符串displayProductSummary (int指数){
字符串productSummary =新的字符串(" ");

尝试{
字符串productSummary = getProductSummary(指数);


}捕捉(例外的前女友){…}

返回productSummary;
}

公共字符串getProductSummary (int指数){
返回产品(指数);
}

在本例中使用的整数值作为提供的数组索引,用户可以在容许范围的指标为数组提供意想不到的结果或可能导致应用程序失败。使用的整数值数组索引应该进行验证,以确保它是在容许范围内数组的索引如以下代码。

(好的代码)
例如语言:Java

/ /方法从servlet调用来获取产品信息
公共字符串displayProductSummary (int指数){
字符串productSummary =新的字符串(" ");

尝试{
字符串productSummary = getProductSummary(指数);


}捕捉(例外的前女友){…}

返回productSummary;
}

公共字符串getProductSummary (int指数){
字符串productSummary = " ";

如果((指数> = 0)& &(指数< MAX_PRODUCTS)) {
productSummary =产品(指数);
}
其他{
System.err。println(“索引越界”);
把新IndexOutOfBoundsException ();
}

返回productSummary;
}

另一个在Java中是使用的一个ArrayList等集合对象,将自动生成一个异常如果试图访问数组索引越界。

(好的代码)
例如语言:Java
ArrayList productArray = new ArrayList (MAX_PRODUCTS);

尝试{
productSummary =(字符串)productArray.get(指数);
}捕捉(IndexOutOfBoundsException ex) {…}

例子6

下面的示例用户要求一个偏移量到一个数组中选择一个项目。

(坏的代码)
例如语言:C

int主要(int命令行参数个数,char * * argv) {
char *项目[]={“船”、“车”、“卡车”,“训练”};
int指数= GetUntrustedOffset ();
printf(“你选择% s \ n”,项目[索引1]);
}

程序员允许用户指定的元素列表中选择,但是攻击者可以提供一个界外偏移,导致缓冲区上(cwe - 126)。

+观察到的例子
参考 描述
数据包的大型ID作为数组索引
消极的数组索引作为参数流行命令列表
整数signedness错误会导致消极的数组索引
产品不正确跟踪计数和最大数量,从而导致结果数组下标溢出。
链:设备驱动程序包捕获软件允许访问一个意想不到的IOCTL合成数组索引错误。
链:数组索引错误(cwe - 129)会导致死锁(cwe - 833)
+潜在的缓解措施

阶段:体系结构和设计

策略:输入验证

使用一个输入验证框架如Struts或OWASP ESAPI验证API。注意,使用一个框架不会自动处理所有输入验证问题;注意可能出现的弱点从滥用框架本身(cwe - 1173)。

阶段:体系结构和设计

对于任何一个在客户端执行安全检查,确保这些检查复制在服务器端,为了避免cwe - 602。攻击者可以绕过客户端检查通过修改值后,检查执行,或通过改变客户端完全删除客户端检查。然后,这些修改的值将被提交到服务器。

即使客户端对服务器端安全检查提供最小的好处,他们仍然有用。首先,他们可以支持入侵检测。如果服务器接收输入,应该已经被客户拒绝,那么它可能是一个攻击的迹象。第二,客户端错误检查可以提供有用的反馈给用户预期的有效输入。第三,可能会有意外的服务器端处理时间的减少输入错误,虽然这通常是一个小的储蓄。

阶段:需求

策略:语言选择

使用一种语言,不允许这个弱点或发生提供了结构,使这个弱点更容易避免的。

例如,Ada允许程序员约束变量的值和语言比如Java和Ruby允许程序员处理异常时禁止入内的索引访问。

阶段:操作

策略:环境硬化

使用功能或运行或编译软件扩展随机安排程序的可执行文件的位置和库在内存中。因为这使得地址不可预测的,它可以防止攻击者可利用的代码可靠地跳。

例子包括地址空间布局随机化(本)REF-58][REF-60和位置独立的可执行(派)ref - 64]。

有效性:深度防御

注意:这不是一个完整的解决方案。然而,它迫使攻击者猜测一个未知值,改变每一个程序执行。此外,仍有可能导致拒绝服务的攻击,因为典型的反应是退出应用程序。

阶段:操作

策略:环境硬化

使用一个CPU和操作系统提供数据执行保护(NX)或其等价的REF-60][ref - 61]。

有效性:深度防御

注意:这不是一个完整的解决方案,因为缓冲区溢位可以用来覆盖附近的变量以危险的方式修改软件的状态。此外,它不能用于变为无效来情况下,代码是必需的。最后,仍可能导致拒绝服务的攻击,因为典型的反应是退出应用程序。

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does.

当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。

不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。

当访问一个用户控制数组索引,使用严格的目标数组内的值的范围。确保你不允许使用负值。即验证最小和最大可接受的值的范围内。

实施阶段:

特别注意验证所有输入调用代码,跨越语言边界时,如从本机代码的解释型语言。这将创建一个意想不到的语言边界之间的交互。确保你没有违反任何期望的语言接口。例如,尽管Java可能不是容易缓冲区溢出,提供一个大型参数调用本地代码可能会触发一个溢出。

阶段:体系结构和设计;操作

策略:环境硬化

使用所需的最低特权运行您的代码来完成必要的任务(ref - 76]。如果可能的话,创建独立帐户权限有限,只用于一个任务。这样,一个成功的攻击不会立即给攻击者访问其他软件或其环境。例如,数据库应用程序很少需要作为数据库管理员运行,特别是在日常操作。

阶段:体系结构和设计;操作

策略:沙盒或监狱

运行代码的“监狱”或类似沙箱环境执行严格的流程和操作系统之间的边界。这可能有效地限制哪些文件可以在一个特定的目录或访问哪些命令可以执行的软件。

操作系统的例子包括Unix chroot监狱,AppArmor对,SELinux。在一般情况下,托管代码可能会提供一些保护。例如,java。FilePermission in the Java SecurityManager allows the software to specify restrictions on file operations.

这可能不是一个可行的解决方案,它只限制对操作系统的影响;应用程序的其余部分可能仍然接受妥协。

应该注意避免cwe - 243和其他相关弱点监狱。

有效性:有限

注意:这种缓解的有效性取决于特定的沙盒或监狱的预防功能使用,只可能有助于减少攻击的范围,比如限制攻击者对特定文件系统的系统调用或限制部分,可以访问。
+弱点Ordinalities
Ordinality 描述
合成
(缺点是一个质量问题,可能会间接更容易引入的安全相关的弱点或使他们更难检测)
最常见的条件情况导致界外数组索引是使用循环索引变量缓冲索引。如果循环结束条件的缺陷,该指数可以无限增长或减少,因此导致缓冲区溢出或下溢的。另一个常见的情况导致这种情况是使用一个函数的返回值或计算得到的值直接作为一个缓冲区的指数。
+检测方法

自动静态分析

这个弱点常常可以发现使用自动静态分析工具。许多现代工具使用数据流分析或基于技术来减少假阳性的数量。

自动静态分析一般不占报告时的环境考虑禁止入内的内存操作。这可能很难让用户决定哪些应该首先调查警告。例如,一个分析工具可能会报告来自命令行参数的数组索引错误的程序不会运行setuid或其他特权。

有效性:高

注意:这不是一个完美的解决方案,因为100%的准确率和覆盖率不可行。

自动动态分析

这个弱点能被探测到的使用动态交互的工具和技术的软件使用大型测试套件和许多不同的输入,如模糊测试(起毛)健壮性测试和故障注入。软件的操作可能慢下来,但它不应该成为不稳定,崩溃,或者产生不正确的结果。

黑盒

黑盒方法可能得不到所需的代码覆盖在有限时间内限制,和一个动态测试可能不会产生任何明显的副作用,即使它是成功的。
+影响资源
  • 内存
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 738年 CERT C安全编码标准(2008)第五章-整数(INT)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 740年 CERT C安全编码标准(2008)第七章-数组(ARR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 802年 2010年前25 -资源管理风险
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 867年 2011年处于25 -弱点
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 872年 CERT c++安全编码部分04 -整数(INT)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 874年 CERT c++安全编码部分06 -数组和STL (ARR)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 970年 SFP二级集群:错误的缓冲区的访问
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1131年 方案》(2016)——安全质量措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1160年 SEI CERT C编码标准- 06指导方针。数组(ARR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1179年 01 SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1340年 方案及数据保护措施
+笔记

的关系

这个弱点可以先于控制内存分配(cwe - 789在语言使用时自动扩展数组索引大于数组的大小,如JavaScript。

理论

不当验证数组索引可能会直接导致的always-incorrect行为“使用界外访问数组的索引。”
+分类法映射
映射分类名称 节点ID 适合 映射节点名
无节制的数组索引
千鸟 索引数组下标溢出
CERT C安全编码 ARR00-C 理解数组是如何工作的
CERT C安全编码 ARR30-C CWE更具体 不形式或使用界外指针或数组下标吗
CERT C安全编码 ARR38-C 不添加或减去一个整数的指针如果结果值不指一个有效的数组元素呢
CERT C安全编码 INT32-C 确保签署了整数操作不会导致溢出
SEI CERT Perl编码标准 IDS32-PL 不精确的 验证任何整数作为数组索引
OMG ASCSM ASCSM -cwe - 129
软件故障模式 SFP8 错误的缓冲区的访问
+引用
[REF-7]大卫迈克尔·霍华德和勒布朗。编写安全代码。第五章,144页“数组索引错误”。第二版。微软出版社。2002-12-04。<https://www.microsoftpressstore.com/store/writing -安全-代码- 9780735617223>。
(ref - 96)杰森。“前25系列——排名14,不当的验证数组索引”。无软件安全研究所。2010-03-12。<http://blogs.sans.org/appsecstreetfighter/2010/03/12/top-25-series-rank-14-improper-validation-of-array-index/>。
(REF-58)迈克尔·霍华德。在Windows Vista“地址空间布局随机化”。<http://blogs.msdn.com/michael_howard/archive/2006/05/26/address-space-layout-randomization-in-windows-vista.aspx>。
[REF-60]“罗马帝国”。<http://en.wikipedia.org/wiki/PaX>。
微软(ref - 61)。第1部分“理解DEP作为缓解技术”。<http://blogs.technet.com/b/srd/archive/2009/06/12/understanding dep - - -缓解-技术- 1. aspx一部分>。
(ref - 76)肖恩·巴纳姆和迈克尔Gegick。“最小特权”。2005-09-14。<https://www.cisa.gov/uscert/bsi/articles/knowledge/principles/least-privilege>。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪5:缓冲区溢出”。Page 89. McGraw-Hill. 2010.
墨菲(ref - 64)资助。“位置独立的可执行文件(派)”。Red Hat。2012-11-28。<https://securityblog.redhat.com/2012/11/28/position-independent-executables-pie/>。
(ref - 962)对象管理组织(OMG)。“自动源代码安全措施(ASCSM)”。ascsm - cwe - 129。2016 - 01。<http://www.omg.org/spec/ASCSM/1.0/>。
[REF-18]安全软件公司. .“扣应用程序安全性的过程”。2005年。<https://cwe.mitre.org/documents/sources/TheCLASPApplicationSecurityProcess.pdf>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19
+修改
修改日期 修饰符 组织
2008-07-01 肖恩Eidemiller Cigital
添加/更新示范例子
2008-09-08 CWE内容团队 主教法冠
更新Alternate_Terms、Applicable_Platforms Common_Consequences、关系、Other_Notes, Taxonomy_Mappings Weakness_Ordinalities
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-01-12 CWE内容团队 主教法冠
更新Common_Consequences
2009-10-29 CWE内容团队 主教法冠
更新描述、名称、关系
2009-12-28 CWE内容团队 主教法冠
更新Applicable_Platforms、Common_Consequences Observed_Examples、Other_Notes Potential_Mitigations, Theoretical_Notes Weakness_Ordinalities
2010-02-16 CWE内容团队 主教法冠
更新Applicable_Platforms、Demonstrative_Examples Detection_Factors、Likelihood_of_Exploit Potential_Mitigations,引用,Related_Attack_Patterns、人际关系
2010-04-05 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2010-06-21 CWE内容团队 主教法冠
更新Common_Consequences Potential_Mitigations,引用
2010-09-27 CWE内容团队 主教法冠
更新Potential_Mitigations Relationship_Notes,关系
2010-12-13 CWE内容团队 主教法冠
更新Demonstrative_Examples、Observed_Examples Potential_Mitigations
2011-03-29 CWE内容团队 主教法冠
更新Common_Consequences、Demonstrative_Examples Weakness_Ordinalities
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新的关系
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations、引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-02-18 CWE内容团队 主教法冠
更新Potential_Mitigations,引用
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Causal_Nature、引用关系,Taxonomy_Mappings
2018-03-27 CWE内容团队 主教法冠
更新的引用
2019-01-03 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings
2019-09-19 CWE内容团队 主教法冠
更新Potential_Mitigations
2020-02-24 CWE内容团队 主教法冠
更新Potential_Mitigations、关系、Taxonomy_Mappings
2020-06-25 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations、关系类型
2020-08-20 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2020-12-10 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新引用关系
2022-10-13 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings
+以前的条目名称
改变日期 以前的条目名称
2009-10-29 无节制的数组索引

cwe - 705:不正确的控制流范围

弱点ID: 705
抽象:
结构:简单的
视图定制的信息:
+描述
产品不正常控制流返回到正确的位置后,完成了一个任务或发现一个不寻常的条件。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 691年 控制流管理不足
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 248年 未捕获异常
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 382年 J2EE坏实践:使用system . exit ()
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 395年 使用的NullPointerException捕获检测空指针
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 396年 捕捉通用异常宣言
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 397年 声明抛出的一般例外
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 455年 出口在初始化失败
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 584年 返回在Finally块
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 698年 后执行重定向(EAR)
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
其他

技术的影响:改变执行逻辑;其他

+观察到的例子
参考 描述
链:不正确的“goto”苹果产品绕过SSL证书验证,允许Adversary-in-the-Middle (AITM)攻击(苹果“goto失败”错误)。cwe - 705(不正确的控制流范围)- >cwe - 561(死代码)- >cwe - 295(不正确的证书验证)- >cwe - 393(返回错误状态码)- >cwe - 300(由Non-Endpoint通道访问)。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 744年 CERT C安全编码标准(2008)第11章-环境(ENV)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 746年 CERT C安全编码标准(2008)第十三章-错误处理(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 851年 CERT甲骨文安全Java编码标准(2011)第八章-异常行为(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 854年 CERT甲骨文安全Java编码标准(2011)第11章-线程api (THI)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 878年 CERT c++安全编码部分10 -环境(ENV)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 880年 12 - CERT c++安全编码部分异常和错误处理(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 977年 SFP二级集群:设计
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1141年 SEI CERT甲骨文安全编码标准Java - 07年指导方针。异常行为(错)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1147年 SEI CERT甲骨文Java安全编码标准,指南13。输入输出(FIO)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1165年 SEI CERT 10 C编码标准指导方针。环境(ENV)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
+分类法映射
映射分类名称 节点ID 适合 映射节点名
CERT C安全编码 ENV32-C CWE更抽象 所有退出处理程序必须返回正常
CERT C安全编码 ERR04-C 选择一个适当的终止策略
CERT甲骨文安全Java编码标准(2011) THI05-J 不要使用Thread.stop()来终止线程
CERT甲骨文安全Java编码标准(2011) ERR04-J 没有完成从finally块突然
CERT甲骨文安全Java编码标准(2011) ERR05-J 不要让受控异常逃离finally块吗
SEI CERT Perl编码标准 EXP31-PL 不精确的 不要压制或忽视异常
+内容的历史
+提交
提交日期 提交者 组织
2008-09-09 CWE内容团队 主教法冠
注意:这个日期条目首次出版时反映。草案版本的这个条目被提供给CWE社区的成员和修改草案9和1.0之间。
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2011-03-29 CWE内容团队 主教法冠
更新的关系
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2014-06-23 CWE内容团队 主教法冠
更新Observed_Examples
2014-07-30 CWE内容团队 主教法冠
更新的关系
2017-01-19 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms、关系、Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2020-02-24 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
2021-07-20 CWE内容团队 主教法冠
更新Observed_Examples
2023-01-31 CWE内容团队 主教法冠
更新描述

cwe - 789:内存分配过多的大小值

弱点ID: 789
抽象:变体
结构:简单的
视图定制的信息:
+描述
基于一个不可信的产品分配内存,大尺寸值,但这并不能保证尺寸在预期范围内,允许任意数量的内存分配。
+替代条款
堆栈疲惫:
当分配过多的内存栈上的弱点,它通常被描述为“堆栈疲惫,”这是一个技术疲软的影响。这是经常遇到的技术影响的结果cwe - 789和/或cwe - 1325
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 1284年 不当验证指定数量的输入
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 770年 资源配置没有限制或节流
PeerOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 1325年 顺序控制内存分配不当
光束 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 129年 不当的验证数组索引
CanPrecede 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 476年 空指针废弃
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C患病率(待定)

c++患病率(待定)

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
可用性

技术的影响:DoS:资源消耗(内存)

不控制内存分配可能导致请求系统内存太多,可能导致应用程序崩溃由于内存不足的情况,或消耗大量内存的系统。
+示范例子

示例1

考虑下面的代码,它接受一个不可信的价值大小和分配一个缓冲区包含给定大小的一个字符串。

(坏的代码)
例如语言:C
无符号整数大小= GetUntrustedInt ();
/ *忽略整数溢出(cwe - 190)对于本例* /

unsigned int totBytes =大小* sizeof (char);
char *字符串= (char *) malloc (totBytes);
InitializeString(字符串);

假设攻击者提供了一个大小的价值:

12345678

这将导致分配305419896字节(超过291字节)的字符串。

示例2

考虑下面的代码,它接受一个不可信的大小值,并使用作为一个HashMap的初始容量大小。

(坏的代码)
例如语言:Java
无符号整数大小= GetUntrustedInt ();
HashMap列表= new HashMap(大小);

HashMap构造函数将验证初始容量并不是消极的,然而没有检查来验证是否提供了足够的内存。如果攻击者提供了一个足够大的值,这个应用程序将遇到一个OutOfMemoryError。

示例3

这段代码执行堆栈分配基于长度的计算。

(坏的代码)
例如语言:C
int = 5, b = 6;
size_t len = a - b;
字符缓冲区(len);/ /只是炸毁堆栈
}

a和b是声明为int签署以来,“a - b”减法给消极的结果(1)。然而,由于len宣布为无符号,len投到一个非常大的正数(在32位系统上- 4294967295)。因此,缓冲缓冲区(len)声明使用一个非常大的大小分配在堆栈上,很有可能超过整个计算机的内存空间。

失误通常不会那么明显。计算将很复杂或由于攻击者的输入达到负值。

示例4

这个例子显示了一个典型的试图解析一个字符串和一个错误的假设造成的区别函数调用者和函数的行动。

(坏的代码)
例如语言:C
int proc_msg (char * s, int msg_len)
{
/ /注意空间的字符串-假设所有字符串有序言与空间
int pre_len =运算符(“序言:”);
char buf [pre_len - msg_len];
…如果我们得到这个做处理
}
char * s =“序言:消息\ n”;
char * sl = strchr(年代,“:”);/ /字符数到‘:’(不包括空间)
int jnklen = sl = =零?0:sl - s;/ /如果未定义的指针,用零长度
int ret_val = proc_msg (“s”, jnklen);/ /违反序言长度的假设,最终得到负值,吹出栈

缓冲区的长度是1,导致吹出栈。冒号后面的空格字符中包含的函数计算,但不是在调用者的计算。不幸的是,这通常不那么明显但存在于一个钝角一系列的计算。

示例5

使用下面的代码获取一个不可信的数字作为数组的索引信息。

(坏的代码)
例如语言:Perl
我的$ num = GetUntrustedNumber ();
我@messages = ();

美元的消息(num美元)=“Hello World”;

该指数是无效的(cwe - 129),所以有可能对攻击者修改一个元素在@messages不是目的。如果使用索引大于当前数组的大小,Perl解释器自动扩展数组,这样大索引工作。

如果$ num是一个较大的值,如2147483648(1 < < 31),然后分配美元消息(num美元)将试图创建一个非常大的数组,最终产生一个错误消息,例如:

在阵列扩展的内存

这将导致内存耗尽问题Perl程序退出,可能拒绝服务。此外,缺乏记忆也可以防止许多其他程序成功地在系统中运行。

例子6

这个例子显示了一个典型的试图解析一个字符串和一个错误的假设造成的区别函数调用者和函数的行动。缓冲区的长度是1导致吹出栈。冒号后面的空格字符中包含的函数计算,但不是在调用者的计算。不幸的是,这通常不那么明显但存在于一个钝角一系列的计算。

(坏的代码)
例如语言:C
int proc_msg (char * s, int msg_len)
{
int pre_len =运算符(“序言:”);/ /注意空间的字符串-假设所有字符串有序言与空间
char buf [pre_len - msg_len];
…并设置状态做处理吗
返回状态;
}
char * s =“序言:消息\ n”;
char * sl = strchr(年代,“:”);/ /字符数到‘:’(不包括空间)
int jnklen = sl = =零?0:sl - s;/ /如果未定义的指针,用零长度
int ret_val = proc_msg (“s”, jnklen);/ /违反序言长度的假设,最终得到负值,吹出栈
(好的代码)
例如语言:C
int proc_msg (char * s, int msg_len)
{
int pre_len =运算符(“序言:”);/ /注意空间的字符串-假设所有字符串有序言与空间
如果(pre_len < = msg_len){/ /日志错误;返回error_code;}
char buf [pre_len - msg_len];
…并设置状态做处理吗
返回状态;
}
char * s =“序言:消息\ n”;
char * sl = strchr(年代,“:”);/ /字符数到‘:’(不包括空间)
int jnklen = sl = =零?0:sl - s;/ /如果未定义的指针,用零长度
int ret_val = proc_msg (“s”, jnklen);/ /违反序言长度的假设,最终得到负值,吹出栈
+观察到的例子
参考 描述
链:Python库不限制指定的资源用于处理图像大量的乐队(cwe - 1284),导致过度的内存消耗(cwe - 789)或一个整数溢出(cwe - 190)。
程序使用::alloca()编码信息,但大消息导致段错误
内存消耗和守护进程退出通过指定一个较大的值字段长度
较大的值在一个长字段导致内存消耗和崩溃当没有更多的内存可用
大关键尺寸在游戏程序中引发崩溃当调整函数无法分配足够的内存
大的内容长度HTTP报头值触发应用程序崩溃的即时消息应用程序由于内存分配失败
+潜在的缓解措施

阶段:实施;架构和设计

执行足够的输入验证反对任何价值影响分配的内存量。定义一个合适的策略来处理请求,超过极限,并考虑支持配置选项,以便管理员可以延长在必要时使用的内存量。

阶段:操作

运行您的程序内存使用系统提供的资源限制。这仍然可能导致程序崩溃或退出,但影响系统的其他部分将会最小化。
+弱点Ordinalities
Ordinality 描述
(其他弱点的弱点存在独立的)
合成
(缺点是通常与其他弱点的存在)
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1131年 方案》(2016)——安全质量措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1162年 SEI CERT 08 C编码标准指导方针。内存管理(MEM)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1179年 01 SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
+笔记

的关系

这个弱点可以与整数溢出(密切相关cwe - 190)。整数溢出攻击会专注于提供一个非常大的数字触发一个溢出导致比预期的更少的内存分配。通过提供一个较大的值,不触发一个整数溢出,攻击者仍然可以导致过多的内存分配。

适用的平台

不受控制的内存分配是可能的在许多语言中,如动态数组分配在perl或初始大小参数在Java集合。然而,语言,像C和c++程序员有更直接的权力控制内存管理会更敏感。

+分类法映射
映射分类名称 节点ID 适合 映射节点名
WASC 35 SOAP数组滥用
CERT C安全编码 MEM35-C 不精确的 为一个对象分配足够的内存
SEI CERT Perl编码标准 IDS32-PL 不精确的 验证任何整数作为数组索引
OMG ASCSM ASCSM -cwe - 789
+引用
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第十章,“资源限制”,574页。1版。艾迪生卫斯理》2006。
(ref - 962)对象管理组织(OMG)。“自动源代码安全措施(ASCSM)”。ascsm - cwe - 789。2016 - 01。<http://www.omg.org/spec/ASCSM/1.0/>。
+内容的历史
+提交
提交日期 提交者 组织
2009-10-21 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2010-02-16 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2011-03-29 CWE内容团队 主教法冠
更新Common_Consequences Observed_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新的引用
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新的关系
2020-06-25 CWE内容团队 主教法冠
更新的关系
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新Alternate_Terms Demonstrative_Examples,描述、Likelihood_of_Exploit名字,Observed_Examples,关系,Time_of_Introduction
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples、人际关系
2022-10-13 CWE内容团队 主教法冠
更新Observed_Examples
+以前的条目名称
改变日期 以前的条目名称
2020-12-10 不受控制的内存分配

cwe - 456:失踪的初始化一个变量

弱点ID: 456
抽象:变体
结构:简单的
视图定制的信息:
+描述
产品不关键变量进行初始化,导致执行环境使用意想不到的价值。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 909年 失踪的初始化资源
CanPrecede 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 89年 不当使用中和特殊元素在一个SQL命令(SQL注入)
CanPrecede 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 98年 不当控制包括/需要声明在PHP程序的文件名(PHP远程文件包含)
CanPrecede 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 120年 缓冲区复制没有检查输入的大小(经典的缓冲区溢出)
CanPrecede 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 457年 使用未初始化的变量
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 665年 不适当的初始化
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及数据保护措施”(cwe - 1340)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 665年 不适当的初始化
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性
其他

技术的影响:意想不到的状态;质量退化;不同的上下文

未初始化的数据可能无效,导致程序中的逻辑错误。在某些情况下,这可能导致安全问题。
+示范例子

示例1

这个函数尝试从一个用户提供的字符串中提取两个数字。

(坏的代码)
例如语言:C
空白parse_data (char * untrusted_input) {
int m, n,错误;
错误= sscanf (untrusted_input,“% d: % d”, a&m, n);
如果(EOF = =错误){
死亡(“没有指定整数值。死邪恶的黑客! \ n”);
}
/ *进行假设n和m正确初始化* /
}

这段代码试图提取两个整数值格式,用户提供的输入。然而,如果攻击者提供一个输入的形式:

(攻击代码)
123:

那么只有m变量将被初始化。随后使用n可能导致使用未初始化的变量(cwe - 457)。

示例2

在这里,未初始化字段在Java类中使用seldom-called方法,这将导致抛出NullPointerException。

(坏的代码)
例如语言:Java
私人用户用户;
公共空间someMethod () {

/ /做一些有趣的事情。


/ /抛出肺水肿如果用户没有正确初始化。
字符串的用户名= user.getName ();
}

示例3

这段代码首先对用户进行身份验证,然后允许删除命令如果用户是管理员。

(坏的代码)
例如语言:PHP
如果(验证(用户名、密码)美元& & setAdmin(用户名)美元){
美元isAdmin = true;
}
/……

如果(isAdmin美元){
deleteUser ($ userToDelete);
}

$ isAdmin变量设置为true如果用户是管理员,但未初始化。如果启用了PHP的register_globals特性,攻击者可以设置未初始化的变量$ isAdmin任意值,在这种情况下isAdmin美元获得管理员权限设置为true。

示例4

在以下Java代码BankManager类使用用户变量类的用户,允许授权用户执行银行经理的任务。内的用户变量初始化方法setUser检索用户从用户数据库。然后,验证用户身份,授权的用户通过authenticateUser方法。

(坏的代码)
例如语言:Java
公开课BankManager {

/ /用户允许执行银行经理的任务
私人用户用户=零;
私人布尔isUserAuthentic = false;

/ /为BankManager类构造函数
公共BankManager () {
}

/ /从数据库中检索用户的用户
公共用户getUserFromUserDatabase(字符串的用户名){
}

/ /使用用户名设置用户变量
公共空间setUser(字符串的用户名){
这一点。用户= getUserFromUserDatabase(用户名);
}

/ /验证用户
公共布尔authenticateUser(用户名的字符串,字符串密码){
如果(username.equals (user.getUsername ()) & & password.equals (user.getPassword ())) {
isUserAuthentic = true;
}
返回isUserAuthentic;
}

/ /执行银行经理任务的方法
}

但是,如果方法setUser之前不叫authenticateUser用户变量不会被初始化,将导致一个NullPointerException。代码应该验证用户变量被初始化之前使用,如以下代码。

(好的代码)
例如语言:Java
公开课BankManager {

/ /用户允许执行银行经理的任务
私人用户用户=零;
私人布尔isUserAuthentic = false;

/ /为BankManager类构造函数
公共BankManager(字符串的用户名){
用户= getUserFromUserDatabase(用户名);
}

/ /从数据库中检索用户的用户
公共用户getUserFromUserDatabase(字符串的用户名){…}

/ /验证用户
公共布尔authenticateUser(用户名的字符串,字符串密码){
如果(用户= = null) {
system . out。println(“无法找到用户”+用户名);
}
其他{
如果(password.equals (user.getPassword ())) {
isUserAuthentic = true;
}
}
返回isUserAuthentic;
}

/ /执行银行经理任务的方法

}

示例5

这个例子将在一个未知的条件下,当我离开test_string err_val是相同的值,因为test_string不是初始化(cwe - 456)。根据这个代码段出现(如在一个函数体),test_string可能是随机的,如果是存储在堆或堆栈。如果中声明的变量是静态内存,它可能是零个或NULL。编译器优化这个地址的不可预知性。

(坏的代码)
例如语言:C
char * test_string;
如果(我! = err_val)
{
test_string =“Hello World !”;
}
printf (" % s ", test_string);

当printf (), test_string可能是一个意想不到的地址,所以printf可能打印垃圾字符串(cwe - 457)。

修复这段代码中,有一些方法来确保已正确设置test_string一旦它到达printf ()。

一个解决方案是集test_string前可以接受默认的条件:

(好的代码)
例如语言:C
char * test_string =初“完成”;
如果(我! = err_val)
{
test_string =“Hello World !”;
}
printf (" % s ", test_string);

另一个解决方案是确保每个分支的条件,包括默认的/ else分支,可以确保test_string设置:

(好的代码)
例如语言:C
char * test_string;
如果(我! = err_val)
{
test_string =“Hello World !”;
}
其他{
test_string = "做另一边!”;
}
printf (" % s ", test_string);
+观察到的例子
参考 描述
链:一个函数的返回值返回一个指针不是成功的检查(cwe - 252)导致以后使用未初始化的变量(cwe - 456)和一个空指针(cwe - 476)
链:使用一个未实现的网络套接字操作指向未初始化的处理函数(cwe - 456)导致崩溃,因为一个空指针(cwe - 476)。
一个变量,它的值中设置一个条件语句时有时使用条件失败,有时造成数据泄漏
产品使用未初始化变量的大小和指数,导致合成缓冲区溢出。
在PHP应用程序内部变量没有初始化,允许外部修改。
数组变量没有初始化在PHP应用程序中,导致合成SQL注入。
+潜在的缓解措施

实施阶段:

检查关键变量初始化。

测试阶段:

使用一个静态分析工具发现non-initialized变量。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 808年 2010年处于25 -弱点
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 867年 2011年处于25 -弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 998年 SFP二级集群:故障计算
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1129年 方案》(2016)——可靠性质量措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1131年 方案》(2016)——安全质量措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1167年 SEI CERT 12 C编码标准指导方针。错误处理(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1180年 02 SEI CERT Perl编码标准,指导方针。声明和初始化(DCL)
+笔记

的关系

这个弱点的一个主要因素是一个数字合成的弱点,尤其是在web应用程序允许全局变量的初始化(比如PHP)和库,可以直接要求。

研究的差距

很有可能大量合成的弱点已经失踪的初始化主要因素,但研究人员报告通常不提供这种级别的细节。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 失踪的初始化
软件故障模式 SFP1只能 在计算故障
CERT C安全编码 ERR30-C CWE更抽象 errno设置为0之前调用库函数设置errno,并检查errno只有在函数返回一个值指示失败
SEI CERT Perl编码标准 DCL04-PL 确切的 总是初始化局部变量
SEI CERT Perl编码标准 DCL33-PL 不精确的 在使用它们之前声明的标识符
OMG ASCSM ASCSM -cwe - 456
OMG ASCRM ASCRM -cwe - 456
+引用
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第七章“变量初始化”,312页。1版。艾迪生卫斯理》2006。
(ref - 961)对象管理组织(OMG)。“自动源代码可靠性措施(ASCRM)”。ascrm - cwe - 456。2016 - 01。<http://www.omg.org/spec/ASCRM/1.0/>。
(ref - 962)对象管理组织(OMG)。“自动源代码安全措施(ASCSM)”。ascsm - cwe - 456。2016 - 01。<http://www.omg.org/spec/ASCSM/1.0/>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-07-01 肖恩Eidemiller Cigital
添加/更新示范例子
2008-07-01 Eric Dalci Cigital
更新Potential_Mitigations Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新的关系,Other_Notes Taxonomy_Mappings
2010-02-16 CWE内容团队 主教法冠
更新的关系
2010-04-05 CWE内容团队 主教法冠
更新Applicable_Platforms Demonstrative_Examples
2010-06-21 CWE内容团队 主教法冠
更新Other_Notes Relationship_Notes
2011-03-29 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences、人际关系
2012-05-11 CWE内容团队 主教法冠
更新引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2013-02-21 CWE内容团队 主教法冠
更新的名字,关系
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新关系类型
2020-02-24 CWE内容团队 主教法冠
更新的关系
2020-06-25 CWE内容团队 主教法冠
更新Demonstrative_Examples
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples Observed_Examples,关系
2023-01-31 CWE内容团队 主教法冠
更新描述
+以前的条目名称
改变日期 以前的条目名称
2013-02-21 失踪的初始化

CWE类别:数字错误

类别ID: 189
+总结
这一类的弱点有关不当或转换的数字计算。
+会员
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 635年 最初使用的弱点NVD从2008年到2016年
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 699年 软件开发
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1182年 04 SEI CERT Perl编码标准,指导方针。整数(INT)
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 128年 环绕式处理错误
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 190年 整数溢出或概括的
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 191年 整数下溢(包装或概括)
HasMember 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 192年 整数强制错误
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 193年 错误
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 197年 数字截断误差
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 198年 使用不正确的字节顺序
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 369年 除以零
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 681年 不正确的数值类型之间的转换
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 839年 没有最低检查数字范围比较
HasMember 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 1077年 浮点数与不正确的操作符
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 1339年 精度不足或精度实数
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 1389年 不正确的解析数字不同的词根
+笔记

映射

使用映射:禁止(CWE ID不能用来映射到现实世界的漏洞)。

理由是:该条目是一个类别。使用类别映射一直是积极鼓励实践至少自2019年以来。类别是非正式组织分组CWE的弱点,帮助导航和浏览用户,但他们不是自己的弱点(ref - 1287]。这个CWE ID可能已经广泛使用,因为NIST的用法在NVD从2008年到2016年cwe - 635看来,更新的cwe - 10032016年视图)。

评论:大多数number-handling问题可能是后人根据错误的计算(cwe - 682)或不正确的数值类型之间的转换(cwe - 681)。

+引用
(ref - 1287)主教法冠。“补充细节- 2022 CWE前25”。的细节问题映射。2022-06-28。<https://cwe.mitre.org/top25/archive/2022/2022_cwe_top25_supplemental.html problematicMappingDetails>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-09-08 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-10-29 CWE内容团队 主教法冠
更新的关系
2011-03-29 CWE内容团队 主教法冠
更新的关系
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-01-19 CWE内容团队 主教法冠
更新Applicable_Platforms、人际关系
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms、关系、Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
2021-07-20 CWE内容团队 主教法冠
更新的关系
2022-10-13 CWE内容团队 主教法冠
更新引用关系

cwe - 783:运算符优先级逻辑错误

弱点ID: 783
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品使用一个表达式的运算符优先级导致使用错误的逻辑。
+扩展描述
而往往只是一个错误,运算符优先级逻辑错误会有严重的后果,如果他们使用重要的安全代码,如作出认证决定。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 670年 Always-Incorrect控制流的实现
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 438年 行为问题
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 569年 表达式问题
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现 逻辑错误相关的运算符优先级甚至可能造成问题在正常操作,所以他们可能很快就发现在测试阶段。如果测试是不完整或者有一种强烈的依赖人工审查的代码,然后这些错误可能不被发现之前,软件部署。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C(很少普遍)

c++(很少普遍)

类:不是特定于语言的(很少普遍)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
保密
完整性
可用性

技术的影响:不同的上下文;意想不到的状态

后果会根据周围的环境不正确的优先级。在一个安全的决定,完整性或机密性是最可能的结果。否则,崩溃可能发生由于软件达到一个意想不到的状态。
+利用的可能性
+示范例子

示例1

在接下来的例子中,方法validateUser调用另一个方法来验证用户的用户名和密码并返回一个成功或失败的代码。

(坏的代码)
例如语言:C
#定义失败0
#定义成功1



int validateUser (char *用户名,char *密码){

int isUser =失败;

/ /调用方法进行身份验证的用户名和密码

/ /如果认证失败,返回失败否则返回成功
如果(isUser = AuthenticateUser(用户名、密码)= =失败){
返回isUser;
}
其他{
isUser =成功;
}

返回isUser;
}

然而,用户名和密码进行身份验证的方法就是在一个if语句和不正确的运算符优先级逻辑。因为比较运算符“= =”的优先级高于赋值运算符“=”,比较运算符将被评估,如果方法返回失败的比较就会是真的,返回变量设置为true,成功将返回。这个操作符优先级逻辑错误可以很容易地解决的正确使用括号内的表达式if语句,如下所示。

(好的代码)
例如语言:C


如果((isUser = AuthenticateUser(用户名、密码))= =失败){

示例2

在本例中,该方法计算投资回报率的会计/财务应用程序。计算投资回报率减去初始投资成本的当前值,然后除以初始投资成本。

(坏的代码)
例如语言:Java
公共双calculateReturnOnInvestment(双currentValue,双initialInvestment) {

双returnROI = 0.0;

/ /计算投资回报
returnROI = currentValue - initialInvestment / initialInvestment;

返回returnROI;
}

然而,投资回报率的计算不会产生正确的结果,因为不正确的运算符优先级逻辑方程。把操作符的优先级高于-操作符,因此方程将初始投资成本除以初始投资成本只会从当前值减去1。这算符优先解决逻辑错误的正确使用括号内的方程,如下所示。

(好的代码)
例如语言:Java


returnROI = (currentValue - initialInvestment) / initialInvestment;

注意,initialInvestment变量在这个例子应该验证,以确保它是大于零,以避免潜在的除以零错误(cwe - 369)。

+观察到的例子
参考 描述
身份验证模块允许认证绕过因为它使用”(x =叫(args) = =成功)”,而不是“((x =调用(args)) = =成功)”。
链:语言解释器计算错误的缓冲区大小(cwe - 131)通过使用“大小= ptr ?X: Y”而不是“大小= (ptr吗?X, Y)”的表情。
链:产品不正确检查反向DNS查询的结果,因为操作符优先级(cwe - 783),允许绕过以域名系统的访问限制。
+潜在的缓解措施

实施阶段:

定期包装子表达式的括号,特别是重要的安全代码。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 737年 CERT C安全编码标准(2008)第4章-表达式(EXP)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1307年 方案及质量度量,可维护性
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
+分类法映射
映射分类名称 节点ID 适合 映射节点名
CERT C安全编码 EXP00-C 确切的 使用括号操作的优先级
SEI CERT Perl编码标准 EXP04-PL CWE更抽象 不要把early-precedence逻辑运算符和逻辑运算符late-precedence吗
+引用
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第六章,“优先”,287页。1版。艾迪生卫斯理》2006。
+内容的历史
+提交
提交日期 提交者 组织
2009-07-16 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2009-12-28 CWE内容团队 主教法冠
更新Observed_Examples
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新Demonstrative_Examples、引用关系
2017-11-08 CWE内容团队 主教法冠
更新Taxonomy_Mappings Time_of_Introduction
2019-01-03 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新的类型
2020-02-24 CWE内容团队 主教法冠
更新的关系
2020-08-20 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
2023-01-31 CWE内容团队 主教法冠
更新描述

cwe - 375:返回一个可变对象,一个不受信任的调用者

弱点ID: 375
抽象:基地
结构:简单的
视图定制的信息:
+描述
发送似乎与可变数据的返回值可能会导致调用函数被修改或删除的数据。
+扩展描述
在函数返回引用可变数据的情况下,有可能是外部的代码称为函数可能会更改数据发送。如果先前没有被克隆,这个数据的类将使用修改后的数据对其内部状态可能违反假设。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 668年 曝光资源错误的球体
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 371年 状态问题
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C患病率(待定)

c++患病率(待定)

Java患病率(待定)

c#患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
访问控制
完整性

技术的影响:修改内存

可能另一个函数可能被篡改的数据不应该被篡改。
+利用的可能性
媒介
+示范例子

示例1

这类都有一个私人的患者,但是提供了一种方法去看名单:

(坏的代码)
例如语言:Java
公共类临床试验{
私人PatientClass [] patientList = new PatientClass [50];
公共getPatients (…) {
返回patientList;
}
}

虽然这段代码只意味着让病人的阅读列表,该getPatients()方法返回一个引用类的原始患者列表,而不是引用列表的一个副本。任何该方法的调用者可以任意修改病人的内容列表,尽管它是一个类的私有成员。

+潜在的缓解措施

实施阶段:

声明返回的数据不应改变为常数或不可变的。

实施阶段:

在返回之前克隆所有可变数据引用。这是首选的缓解。这样,不管什么更改数据,保留有效的副本供上课使用。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 849年 CERT甲骨文安全Java编码标准(2011)第六章-面向对象(OBJ)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 963年 SFP二级集群:公开数据
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1139年 SEI CERT甲骨文安全编码标准Java - 05指导方针。面向对象(OBJ)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
+分类法映射
映射分类名称 节点ID 适合 映射节点名
可变对象返回
CERT甲骨文安全Java编码标准(2011) OBJ04-J 为可变类提供安全功能允许通过实例复制到不可信代码
CERT甲骨文安全Java编码标准(2011) OBJ05-J 防御性复制私人可变类成员返回之前他们的引用
SEI CERT Perl编码标准 EXP34-PL 不精确的 不要修改$ _在列表或排序功能
软件故障模式 SFP23 公开的数据
+引用
[REF-18]安全软件公司. .“扣应用程序安全性的过程”。2005年。<https://cwe.mitre.org/documents/sources/TheCLASPApplicationSecurityProcess.pdf>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新Applicable_Platforms Common_Consequences、关系、Other_Notes Taxonomy_Mappings
2010-09-27 CWE内容团队 主教法冠
更新的名字,Taxonomy_Mappings
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-10-30 CWE内容团队 主教法冠
更新Demonstrative_Examples
2014-06-23 CWE内容团队 主教法冠
更新描述、Other_Notes Potential_Mitigations
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2020-02-24 CWE内容团队 主教法冠
更新的引用
2021-03-15 CWE内容团队 主教法冠
更新的关系
+以前的条目名称
改变日期 以前的条目名称
2010-09-27 将可变对象传递给一个不可信的方法

CWE类别:SEI CERT Perl编码标准- 01指导方针。输入验证和数据卫生处理(IDS)

类别ID: 1179
+总结
弱点这类相关的规则和建议输入验证和数据的卫生处理(IDS)部分SEI CERT Perl编码标准。
+会员
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1178年 解决的弱点SEI CERT Perl编码标准
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 22 不当限制限制目录的路径名(“路径遍历”)
HasMember 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 77年 不当中和一个命令中使用的特殊元素(“命令注入”)
HasMember 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 95年 不当中和指令的动态评估代码(Eval注入)
HasMember 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 116年 不当的编码或逃避的输出
HasMember 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 129年 不当的验证数组索引
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 134年 使用外部控制的格式字符串
HasMember 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 789年 内存分配过多的大小值
+引用
软件工程研究所(ref - 1012)。“SEI CERT Perl编码标准:01。输入验证和数据卫生处理(IDS)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890533>。
软件工程研究所(ref - 1020)。“SEI CERT Perl编码标准:Rec。01。输入验证和数据卫生处理(IDS)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890568>。
+内容的历史
+提交
提交日期 提交者 组织
2019-01-08 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2021-03-15 CWE内容团队 主教法冠
更新的关系

CWE类别:02 SEI CERT Perl编码标准,指导方针。声明和初始化(DCL)

类别ID: 1180
+总结
弱点这类相关的规则和建议的声明和初始化(DCL)部分SEI CERT Perl编码标准。
+会员
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1178年 解决的弱点SEI CERT Perl编码标准
HasMember 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 456年 失踪的初始化一个变量
HasMember 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 457年 使用未初始化的变量
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 477年 使用过时的功能
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 628年 函数调用与指定参数不正确
+引用
软件工程研究所(ref - 1013)。“SEI CERT Perl编码标准:规则02。声明和初始化(DCL)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890509>。
软件工程研究所(ref - 1021)。“SEI CERT Perl编码标准:Rec。02。声明和初始化(DCL)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890569>。
+内容的历史
+提交
提交日期 提交者 组织
2019-01-08 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2021-03-15 CWE内容团队 主教法冠
更新的关系

CWE类别:03 SEI CERT Perl编码标准,指导方针。表达式(EXP)

类别ID: 1181
+总结
弱点这类相关的规则和建议的表达式(EXP)部分SEI CERT Perl编码标准。
+会员
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1178年 解决的弱点SEI CERT Perl编码标准
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 248年 未捕获异常
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 252年 不返回值
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 375年 返回一个可变对象,一个不受信任的调用者
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 391年 未经检查的错误条件
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 394年 意想不到的状态代码或返回值
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 460年 清理不当抛出异常
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 477年 使用过时的功能
HasMember 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 597年 使用错误的操作符的字符串比较
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 628年 函数调用与指定参数不正确
HasMember 链链——一个复合元素是一个序列的两个或两个以上的独立的缺点,可以在软件中紧密联系在一起。一个弱点,X,可以直接创建所必需的条件导致另一个弱点,Y,进入一个脆弱的状态。,当这一切发生的时候,CWE指X作为“主”Y, Y是“合成”X连锁可能涉及两个以上缺点,在某些情况下,他们可能有一个树状结构。 690年 检查返回值为NULL指针
HasMember 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 705年 不正确的控制流范围
HasMember 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 754年 不适当的检查异常或异常情况
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 783年 运算符优先级逻辑错误
+引用
软件工程研究所(ref - 1014)。“SEI CERT Perl编码标准:规则03。表达式(EXP)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890504>。
软件工程研究所(ref - 1022)。“SEI CERT Perl编码标准:Rec。03。表达式(EXP)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890559>。
+内容的历史
+提交
提交日期 提交者 组织
2019-01-08 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2021-03-15 CWE内容团队 主教法冠
更新的关系

CWE类别:SEI CERT Perl编码标准- 04指导方针。整数(INT)

类别ID: 1182
+总结
弱点这类相关的规则和建议的整数(INT)部分SEI CERT Perl编码标准。
+会员
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1178年 解决的弱点SEI CERT Perl编码标准
HasMember 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 189年 数字错误
+引用
软件工程研究所(ref - 1015)。“SEI CERT Perl编码标准:规则04。整数(INT)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890508>。
软件工程研究所(ref - 1023)。“SEI CERT Perl编码标准:Rec。04。整数(INT)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890560>。
+内容的历史
+提交
提交日期 提交者 组织
2019-01-08 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2021-03-15 CWE内容团队 主教法冠
更新的关系

CWE类别:05 SEI CERT Perl编码标准,指导方针。字符串(STR)

类别ID: 1183
+总结
弱点这类相关的规则和建议的字符串(STR)部分SEI CERT Perl编码标准。
+会员
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1178年 解决的弱点SEI CERT Perl编码标准
+引用
软件工程研究所(ref - 1016)。“SEI CERT Perl编码标准:规则05。字符串(STR)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890507>。
软件工程研究所(ref - 1024)。“SEI CERT Perl编码标准:Rec。05。字符串(STR)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890563>。
+内容的历史
+提交
提交日期 提交者 组织
2019-01-08 CWE内容团队 主教法冠

CWE类别:06 SEI CERT Perl编码标准,指导方针。面向对象编程(OOP)

类别ID: 1184
+总结
弱点这类相关的规则和建议的面向对象编程(OOP)部分SEI CERT Perl编码标准。
+会员
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1178年 解决的弱点SEI CERT Perl编码标准
HasMember 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 767年 访问私有变量通过公共方法至关重要
+引用
软件工程研究所(ref - 1017)。“SEI CERT Perl编码标准:规则06。面向对象编程(OOP)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890501>。
软件工程研究所(ref - 1025)。“SEI CERT Perl编码标准:Rec。06。面向对象编程(OOP)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890561>。
+内容的历史
+提交
提交日期 提交者 组织
2019-01-08 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2021-03-15 CWE内容团队 主教法冠
更新的关系

CWE类别:SEI CERT Perl编码标准——07年指导方针。文件输入和输出(FIO)

类别ID: 1185
+总结
弱点这类相关的规则和建议在文件的输入和输出(FIO)部分SEI CERT Perl编码标准。
+会员
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1178年 解决的弱点SEI CERT Perl编码标准
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 59 不当链接之前决议文件访问(“链接后”)
+引用
软件工程研究所(ref - 1018)。“SEI CERT Perl编码标准:07年统治。文件输入和输出(FIO)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890499>。
软件工程研究所(ref - 1026)。“SEI CERT Perl编码标准:Rec。07。文件输入和输出(FIO)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890496>。
+内容的历史
+提交
提交日期 提交者 组织
2019-01-08 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2021-03-15 CWE内容团队 主教法冠
更新的关系

CWE类别:SEI CERT Perl编码标准——50的指导方针。杂项(MSC)

类别ID: 1186
+总结
弱点这类相关的规则和建议的杂项(MSC)部分SEI CERT Perl编码标准。
+会员
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1178年 解决的弱点SEI CERT Perl编码标准
HasMember 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 561年 死代码
HasMember 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 563年 赋值变量而不使用
+引用
软件工程研究所(ref - 1019)。“SEI CERT Perl编码标准:规则50。杂项(MSC)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890497>。
软件工程研究所(ref - 1027)。“SEI CERT Perl编码标准:规则50。杂项(MSC)”。<https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88890502>。
+内容的历史
+提交
提交日期 提交者 组织
2019-01-08 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2021-03-15 CWE内容团队 主教法冠
更新的关系

cwe - 248:未捕获异常

弱点ID: 248
抽象:基地
结构:简单的
视图定制的信息:
+描述
从一个函数抛出异常,但这并不是她的老公知道。
+扩展描述
当一个异常不抓,它可能导致程序崩溃或暴露敏感信息。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 703年 检查或不当处理异常情况
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 705年 不正确的控制流范围
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 600年 在Servlet异常
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 389年 错误条件,返回值,状态代码
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 703年 检查或不当处理异常情况
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及数据保护措施”(cwe - 1340)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 703年 检查或不当处理异常情况
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

c++患病率(待定)

Java患病率(待定)

c#患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
可用性
保密

技术的影响:DoS:崩溃,退出或重新启动;读取应用程序数据

未捕获的异常可能导致系统放置在一个国家,可能会导致崩溃,暴露敏感信息或其他意想不到的行为。
+示范例子

示例1

下面的例子试图解决一个主机名。

(坏的代码)
例如语言:Java
保护无效doPost (HttpServletRequest点播,HttpServletResponse res)抛出IOException {
字符串ip = req.getRemoteAddr ();
InetAddress addr = InetAddress.getByName (ip);

出去了。println (“hello”+ addr.getHostName ());
}

一个DNS查找失败将导致Servlet抛出一个异常。

示例2

_alloca()函数在堆栈上分配内存。如果一个分配请求可用堆空间太大,_alloca()抛出一个异常。如果异常没有被抓住了,程序会崩溃,可能使拒绝服务攻击。_alloca()已被弃用的微软Visual Studio 2005 (R)。但取而代之的是更安全的_alloca_s ()。

示例3

EnterCriticalSection()可以引发一个异常,可能导致程序崩溃。根据之前的操作系统Windows 2000, EnterCriticalSection()函数在低内存的情况下可以引发一个异常。如果异常没有被抓住了,程序会崩溃,可能使拒绝服务攻击。

+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 227年 7 pk - API滥用
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 730年 OWASP十大2004类别A9 -拒绝服务
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 851年 CERT甲骨文安全Java编码标准(2011)第八章-异常行为(ERR)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 962年 SFP二级集群:未经检查的状态情况
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1141年 SEI CERT甲骨文安全编码标准Java - 07年指导方针。异常行为(错)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
+分类法映射
映射分类名称 节点ID 适合 映射节点名
7有害的王国 经常滥用:异常处理
CERT甲骨文安全Java编码标准(2011) ERR05-J 不要让受控异常逃离finally块吗
CERT甲骨文安全Java编码标准(2011) ERR06-J 不要把未申报已检查的异常
SEI CERT Perl编码标准 EXP31-PL 确切的 不要压制或忽视异常
软件故障模式 SFP4 不受控制的状态条件
+引用
卡特里娜REF-6 Tsipenyuk,布莱恩象棋和加里·麦克格劳博士。“七有害的王国:分类软件安全错误”。NIST研讨会软件安全保障技术和度量工具。NIST的。2005-11-07。<https://samate.nist.gov/SSATTM_Content/papers/Seven%20Pernicious%20Kingdoms%20-%20Taxonomy%20of%20Sw%20Security%20Errors%20-%20Tsipenyuk%20-%20Chess%20-%20McGraw.pdf>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 7有害的王国
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-08-15 Veracode
建议OWASP 2004年排名前十的映射
2008-09-08 CWE内容团队 主教法冠
更新Applicable_Platforms、关系、Taxonomy_Mappings
2008-09-24 CWE内容团队 主教法冠
将C从Applicable_Platforms
2008-10-14 CWE内容团队 主教法冠
更新Applicable_Platforms
2009-03-10 CWE内容团队 主教法冠
更新的关系
2011-03-29 CWE内容团队 主教法冠
更新描述、人际关系
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples,关系,Taxonomy_Mappings
2014-07-30 CWE内容团队 主教法冠
更新Demonstrative_Examples、关系、Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2020-02-24 CWE内容团队 主教法冠
更新的引用
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
+以前的条目名称
改变日期 以前的条目名称
2008-01-30 经常滥用:异常处理

cwe - 391:未经检查的错误条件

弱点ID: 391
抽象:基地
结构:简单的
视图定制的信息:
+描述
(计划在弃用。看到维修笔记和考虑cwe - 252,cwe - 248,或cwe - 1069)忽略异常和其他错误条件可能允许攻击者产生异常行为引起注意。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 754年 不适当的检查异常或异常情况
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 389年 错误条件,返回值,状态代码
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1020年 验证消息的完整性
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 703年 检查或不当处理异常情况
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及数据保护措施”(cwe - 1340)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 703年 检查或不当处理异常情况
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现 实现:造成这一弱点在建筑安全策略的实施。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性
其他

技术的影响:不同的上下文;意想不到的状态;改变执行逻辑

+利用的可能性
媒介
+示范例子

示例1

下面的代码摘录从doExchange忽略rarely-thrown异常()。

(坏的代码)
例如语言:Java
尝试{
doExchange ();
}
抓住(RareException e) {

/ /这可能永远不会发生
}

如果RareException被抛出,程序将继续执行,好像没有什么不寻常的发生。程序记录没有证据表明特殊情况,可能令人沮丧的任何后试图解释程序的行为。

+潜在的缓解措施

阶段:需求

之间的选择一门语言命名或不知名的异常需要做。而不愿透露姓名的异常加剧的可能性不妥善处理异常,名叫例外遭受了调用基类版本的弱的问题。

阶段:需求

可以使用一种语言需要,在编译时,所有严重异常。然而,一种必须确保使用最新版本的API可以添加新的异常。

实施阶段:

捕获所有相关异常。这是推荐的解决方案。确保所有异常处理以这样一种方式,你可以确定您的系统在任何时候的状态。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 388年 7 pk -错误
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 728年 OWASP十大2004类别A7 -错误处理不当
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 743年 CERT C安全编码标准(2008)第十章-输入输出(FIO)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 746年 CERT C安全编码标准(2008)第十三章-错误处理(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 876年 CERT c++安全编码部分08 -内存管理(MEM)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 877年 CERT c++安全编码部分09 -输入输出(FIO)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 880年 12 - CERT c++安全编码部分异常和错误处理(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 962年 SFP二级集群:未经检查的状态情况
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1159年 SEI CERT C编码标准- 05指导方针。浮点(FLP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1167年 SEI CERT 12 C编码标准指导方针。错误处理(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1171年 SEI CERT 50 C编码标准指导方针。POSIX (POS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
+笔记

其他

当一个程序员忽略了一个异常,他们隐式状态下操作的两个假设:

  • 这个方法调用永远不会失败。
  • 不管这个调用失败。

维护

该条目将弃用;它有多个CWE分析师广泛的解释。目前结合信息从三种不同的分类,但每个分类是谈论一个稍微不同的问题。CWE分析师可能映射到该条目基于这些问题中的任何一个。7 pk“空Catch块”,有一个协会除了空块(cwe - 1069);在这种情况下,异常进行了检查,但不处理。在千鸟有“无节制的返回值”cwe - 252,但与“空Catch块”甚至没有检查的问题,“未经检查的错误条件”意味着缺少检查。对于扣子,“异常”(cwe - 248)与不正确的错误传播- CWE 3.2和更早的发现,至少。还有其他的错误处理和检查有关的问题。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 不返回值
7有害的王国 空的Catch块
未捕获异常
OWASP十大2004 A7 CWE更具体 错误处理不当
CERT C安全编码 ERR00-C 采用和实现一个一致的和全面的错误处理策略
CERT C安全编码 ERR33-C CWE更抽象 检测和处理标准库错误
CERT C安全编码 ERR34-C CWE更抽象 检测错误时将一个字符串转换为一个数字
CERT C安全编码 FLP32-C 不精确的 防止或检测领域和范围错误在数学函数
CERT C安全编码 POS54-C CWE更抽象 检测和处理POSIX库错误
SEI CERT Perl编码标准 EXP31-PL 不精确的 不要压制或忽视异常
软件故障模式 SFP4 不受控制的状态条件
+引用
[REF-18]安全软件公司. .“扣应用程序安全性的过程”。2005年。<https://cwe.mitre.org/documents/sources/TheCLASPApplicationSecurityProcess.pdf>。
+内容的历史
+提交
提交日期 提交者 组织
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内容团队 主教法冠
更新Maintenance_Notes、关系、Other_Notes Taxonomy_Mappings
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-07-17 股的分析
改善了White_Box_Definition
2009-07-27 CWE内容团队 主教法冠
更新White_Box_Definitions
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新的关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-06-23 CWE内容团队 主教法冠
更新Other_Notes
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms Modes_of_Introduction、关系、Taxonomy_Mappings White_Box_Definitions
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新描述,Maintenance_Notes
2020-02-24 CWE内容团队 主教法冠
更新的引用
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新描述、人际关系
2021-07-20 CWE内容团队 主教法冠
更新的关系

cwe - 252:不返回值

弱点ID: 252
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品不会检查方法或函数返回值,可以防止检测意想不到的状态和条件。
+扩展描述
两个常见的程序员的假设是“这个函数调用不能失败”和“没关系”如果这个函数调用失败。如果攻击者可以强制函数失败或预计不会返回一个值,那么后续的程序逻辑可能导致脆弱,因为产品不是程序员假定。例如,如果程序调用一个函数放弃特权,但不检查返回代码以确保特权被成功了,那么程序将继续运行更高的特权。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 754年 不适当的检查异常或异常情况
PeerOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 273年 检查了不当的特权
CanPrecede 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 476年 空指针废弃
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 389年 错误条件,返回值,状态代码
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 754年 不适当的检查异常或异常情况
+背景细节
许多函数会返回一些关于他们的行动的成功的价值。这将提醒程序是否处理函数的任何错误造成的。
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
可用性
完整性

技术的影响:意想不到的状态;DoS:崩溃,退出或重新启动

一个意想不到的返回值可以将系统的状态可能导致崩溃或其他意想不到的行为。
+利用的可能性
+示范例子

示例1

考虑下面的代码段:

(坏的代码)
例如语言:C
char buf [10], cp_buf [10];
fgets (buf 10 stdin);
strcpy (cp_buf buf);

程序员预计,当fgets()返回,但将包含一个以null结尾的字符串长度为9的或更少。但如果发生I / O错误,fgets()不会null-terminate缓冲区。此外,如果到达文件的末尾读取任何字符之前,fgets()返回而无需编写任何缓冲区。在这两种情况下,fgets()信号,发生了一些不寻常的东西通过返回NULL,但是在这段代码中,警告不会被注意到。缺乏一个空终结者buf会导致缓冲区溢出在随后调用strcpy ()。

示例2

在下面的示例中,可以要求memcpy比假定移动更大的内存段:

(坏的代码)
例如语言:C
int returnChunkSize (void *) {

/ *如果块信息有效,返回可用内存的大小,

*,返回1表示一个错误

* /
}
int main () {

memcpy (destBuf srcBuf (returnChunkSize (destBuf) 1));
}

如果returnChunkSize()碰巧遇到一个错误将返回1。注意,返回值不是之前检查memcpy操作(cwe - 2521),所以可以作为尺寸参数传递给memcpy () (cwe - 805)。因为memcpy()假设值是无符号,它将被视为MAXINT-1 (cwe - 195),因此将远比可能可用内存复制到目标缓冲区(cwe - 787,cwe - 788)。

示例3

下面的代码不检查内存分配成功之前使用malloc()返回的指针。

(坏的代码)
例如语言:C
buf = (char *) malloc (req_size);
strncpy (buf转送,req_size);

这个编码错误的传统防御是:“如果我的程序运行的内存,它就会失败。不管我是否处理错误的或允许程序模段错误当试图废弃空指针”。This argument ignores three important considerations:

  • 取决于应用程序的类型和大小,它可能会释放内存,在其他地方使用,以便能继续执行。
  • 程序执行不可能如果需要体面地退出。如果程序执行一个原子操作,它可以让系统处于不一致的状态。
  • 程序员已经失去了机会来记录诊断信息。并调用malloc()失败,因为req_size太大或因为有太多的请求被处理在同一时间吗?还是内存泄漏造成的,随着时间的推移建立?没有处理错误,就没有办法知道。

示例4

下面的示例文件读入一个字节数组。

(坏的代码)
例如语言:c#
char[]中byteArray = new char [1024];
(IEnumerator i = users.GetEnumerator ();i.MoveNext (); i.Current ()) {
字符串的用户名=(字符串)i.Current ();
字符串pFileName = PFILE_ROOT + " +用户名;
StreamReader sr = new StreamReader (pFileName);
sr.Read(中byteArray, 0, 1024); / /总是1 k字节的文件
sr.Close ();
processPFile(用户名、中byteArray);
}
(坏的代码)
例如语言:Java
FileInputStream fis;
byte[]中byteArray =新字节[1024];
迭代器(i = users.iterator ();i.hasNext ();) {
字符串的用户名=(字符串)i.next ();
字符串pFileName = PFILE_ROOT + " +用户名;
FileInputStream fis = new FileInputStream (pFileName);
fis.read(中byteArray);/ /文件总是1 k字节
fis.close ();
processPFile(用户名、中byteArray);

代码遍历一组用户,阅读一个私人数据文件为每个用户。程序员总是假设文件1 kb大小,因此忽略了阅读()的返回值。如果攻击者可以创建一个小文件,程序将回收的其余部分之前的数据用户和治疗它,好像它属于攻击者。

示例5

下面的代码并没有检查getParameter()返回的字符串为空在调用成员函数之前compareTo(),可能导致零废弃。

(坏的代码)
例如语言:Java
字符串itemName = request.getParameter (ITEM_NAME);
如果(itemName.compareTo (IMPORTANT_ITEM) = = 0) {
}

下面的代码不检查返回的字符串是否在调用成员函数之前项目属性为空=(),可能导致零废弃。

(坏的代码)
例如语言:Java
字符串itemName = request.Item (ITEM_NAME);
如果(itemName.Equals (IMPORTANT_ITEM)) {
}

传统的防御这个编码错误的方法是:“我知道请求的值将总是存在,因为....如果它不存在,程序不能执行所需的行为,所以不管我处理错误的或允许程序死非关联化一个null值。”But attackers are skilled at finding unexpected paths through programs, particularly when exceptions are involved.

例子6

下面的代码显示了一个系统属性设置为null,后来引用时的程序员错误地假定它将总是被定义。

(坏的代码)
例如语言:Java
System.clearProperty (“os.name”);

字符串操作系统= System.getProperty (“os.name”);
如果(os)。equalsIgnoreCase (Windows 95)) system . out。println(“不支持”);

传统的防御这个编码错误的方法是:“我知道请求的值将总是存在,因为....如果它不存在,程序不能执行所需的行为,所以不管我处理错误的或允许程序死非关联化一个null值。”But attackers are skilled at finding unexpected paths through programs, particularly when exceptions are involved.

例7

下面的VB。NETcode does not check to make sure that it has read 50 bytes from myfile.txt. This can cause DoDangerousOperation() to operate on an unexpected value.

(坏的代码)
例如语言:c#
昏暗的MyFile MyFile新文件流”。txt”, FileMode。Open, FileAccess.Read, FileShare.Read)
暗MyArray(50)字节
MyFile。Read(MyArray, 0, 50)
DoDangerousOperation (MyArray (20))

在。net,它并不少见为程序员误解读()和相关方法,许多系统的一部分。IO类。流和读者类并不认为这是不寻常的或特殊如果只有少量的数据可用。这些类只需添加少量的数据返回的缓冲区,并将返回值设置为读取的字节数或字符。没有保证返回的数据量等于请求的数据量。

示例8

对Java程序员来说并不少见误解读()和相关的许多Java方法的一部分。io类。大多数错误和不寻常的事件在Java中导致一个异常被抛出。但流和读者类不考虑不寻常或特殊如果只有少量的数据可用。这些类只需添加少量的数据返回的缓冲区,并将返回值设置为读取的字节数或字符。没有保证返回的数据量等于请求的数据量。这种行为使它重要的程序员检查返回值从读()和其他IO方法来确保他们得到他们期望的数据量。

例9

这个例子将IP地址从一个用户,验证它是完整的,然后查找主机名和拷贝到缓冲区。

(坏的代码)
例如语言:C
空白host_lookup (char * user_supplied_addr) {
struct hostent *惠普;
in_addr_t * addr;
char主机名[64];
in_addr_t inet_addr (const char * cp);

/ *程序确保user_supplied_addr是正确的格式转换* /

validate_addr_form (user_supplied_addr);
addr = inet_addr (user_supplied_addr);
惠普= gethostbyaddr (addr, sizeof (struct in_addr) AF_INET);
strcpy(主机名、hp - > h_name);
}

如果攻击者提供了一个地址,似乎是格式良好的,但是地址不解决一个主机名,然后调用gethostbyaddr()将返回NULL。由于代码从gethostbyaddr不会检查返回值(cwe - 252),一个空指针(cwe - 476)将发生在调用strcpy ()。

注意,这段代码也容易受到缓冲区溢出(cwe - 119)。

示例10

以下函数试图获得一个锁,以执行操作在一个共享资源。

(坏的代码)
例如语言:C
空白f (pthread_mutex_t *互斥){
pthread_mutex_lock(互斥);

/ * * /访问共享资源


pthread_mutex_unlock(互斥);
}

然而,代码不检查pthread_mutex_lock()返回的值的错误。如果pthread_mutex_lock()由于任何原因无法获得互斥锁,功能可能引入竞争条件和导致未定义行为的程序。

为了避免数据竞争,正确的写程序必须检查的结果线程同步功能和妥善处理所有错误,通过试图恢复他们或报告他们更高的水平。

(好的代码)
例如语言:C
int f (pthread_mutex_t *互斥){
int结果;

结果= pthread_mutex_lock(互斥);
如果(0 ! =结果)
返回结果;


/ * * /访问共享资源


返回pthread_mutex_unlock(互斥);
}
+观察到的例子
参考 描述
链:未经检查返回值(cwe - 252)策略实施的一些函数会导致授权旁路(cwe - 862)
链:一个函数的返回值返回一个指针不是成功的检查(cwe - 252)导致以后使用未初始化的变量(cwe - 456)和一个空指针(cwe - 476)
链:sscanf()调用用于检查用户名和组存在,但sscanf()调用的返回值不是检查(cwe - 252),导致未初始化的变量检查(cwe - 457),返回成功执行特权允许授权旁路(cwe - 863)。
检查返回值会导致合成整数溢出和代码执行。
程序不检查返回值在调用函数时放弃特权,特权可以留给用户高于预期迫使这些功能失败。
程序不检查返回值在调用函数时放弃特权,特权可以留给用户高于预期迫使这些功能失败。
链:未经检查返回值会导致零废弃
链:未经检查返回值(cwe - 252)导致的无效,未初始化的指针(cwe - 824)。
基于linux的设备映射器加密程序不检查setuid和setgid允许攻击者的返回值来执行代码与意想不到的特权。
+潜在的缓解措施

实施阶段:

检查结果的返回值的函数,并验证预期的值。

有效性:高

注意:检查函数的返回值通常是足够的,但是当心竞态条件(cwe - 362在并发环境中)。

实施阶段:

确保你占所有可能的返回值的函数。

实施阶段:

当设计一个函数,确保你返回一个值或在出错的情况下抛出异常。
+弱点Ordinalities
Ordinality 描述
(其他弱点的弱点存在独立的)
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 227年 7 pk - API滥用
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 728年 OWASP十大2004类别A7 -错误处理不当
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 742年 CERT C安全编码标准(2008)第9章-内存管理(MEM)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 847年 CERT甲骨文安全Java编码标准(2011)第4章-表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 876年 CERT c++安全编码部分08 -内存管理(MEM)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 962年 SFP二级集群:未经检查的状态情况
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1129年 方案》(2016)——可靠性质量措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1131年 方案》(2016)——安全质量措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1136年 SEI CERT甲骨文安全编码标准Java - 02指导方针。表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1167年 SEI CERT 12 C编码标准指导方针。错误处理(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1171年 SEI CERT 50 C编码标准指导方针。POSIX (POS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1306年 方案及质量措施——可靠性
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
+分类法映射
映射分类名称 节点ID 适合 映射节点名
7有害的王国 不返回值
忽略函数返回值
OWASP十大2004 A7 CWE更具体 错误处理不当
CERT C安全编码 ERR33-C 不精确的 检测和处理标准库错误
CERT C安全编码 POS54-C 不精确的 检测和处理POSIX库错误
CERT甲骨文安全Java编码标准(2011) EXP00-J 不要忽略返回值的方法吗
SEI CERT Perl编码标准 EXP32-PL 确切的 不要忽略函数返回值
软件故障模式 SFP4 不受控制的状态条件
OMG ASCSM ASCSM -cwe - 252资源
OMG ASCRM ASCRM -cwe - 252
OMG ASCRM ASCRM -cwe - 252资源
+引用
卡特里娜REF-6 Tsipenyuk,布莱恩象棋和加里·麦克格劳博士。“七有害的王国:分类软件安全错误”。NIST研讨会软件安全保障技术和度量工具。NIST的。2005-11-07。<https://samate.nist.gov/SSATTM_Content/papers/Seven%20Pernicious%20Kingdoms%20-%20Taxonomy%20of%20Sw%20Security%20Errors%20-%20Tsipenyuk%20-%20Chess%20-%20McGraw.pdf>。
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第七章,341页“程序构建块”。1版。艾迪生卫斯理》2006。
[REF-7]大卫迈克尔·霍华德和勒布朗。编写安全代码。第20章”,检查返回“624页。第二版。微软出版社。2002-12-04。<https://www.microsoftpressstore.com/store/writing -安全-代码- 9780735617223>。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪孽11:未能正确处理错误。”Page 183. McGraw-Hill. 2010.
(ref - 961)对象管理组织(OMG)。“自动源代码可靠性措施(ASCRM)”。ascrm cwe - 252数据。2016 - 01。<http://www.omg.org/spec/ASCRM/1.0/>。
(ref - 961)对象管理组织(OMG)。“自动源代码可靠性措施(ASCRM)”。ascrm cwe - 252资源。2016 - 01。<http://www.omg.org/spec/ASCRM/1.0/>。
(ref - 962)对象管理组织(OMG)。“自动源代码安全措施(ASCSM)”。ascsm cwe - 252资源。2016 - 01。<http://www.omg.org/spec/ASCSM/1.0/>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 7有害的王国
+贡献
贡献的日期 贡献者 组织
2010-04-30 马丁Sebor 思科系统公司
提供了示范例子和建议CERT参考
+修改
修改日期 修饰符 组织
2008-09-08 CWE内容团队 主教法冠
更新Common_Consequences、关系、Other_Notes Taxonomy_Mappings
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-01-12 CWE内容团队 主教法冠
更新Background_Details Demonstrative_Examples,描述、Observed_Examples Other_Notes Potential_Mitigations
2009-03-10 CWE内容团队 主教法冠
更新的关系
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-07-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-12-28 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples,引用
2010-02-16 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations,引用
2010-04-05 CWE内容团队 主教法冠
更新Demonstrative_Examples
2010-06-21 CWE内容团队 主教法冠
更新Demonstrative_Examples,引用
2010-09-27 CWE内容团队 主教法冠
更新Observed_Examples
2010-12-13 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples,关系,Taxonomy_Mappings
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences、引用关系
2014-06-23 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations
2014-07-30 CWE内容团队 主教法冠
更新Demonstrative_Examples、关系、Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms、引用关系,Taxonomy_Mappings
2018-03-27 CWE内容团队 主教法冠
更新的引用
2019-01-03 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新的引用
2020-06-25 CWE内容团队 主教法冠
更新Observed_Examples
2020-08-20 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples Observed_Examples,关系,Weakness_Ordinalities
2021-07-20 CWE内容团队 主教法冠
更新Observed_Examples
2023-01-31 CWE内容团队 主教法冠
更新描述

cwe - 690:不返回值为NULL指针

弱点ID: 690
抽象:复合
结构:
视图定制的信息:
+描述
产品后不检查错误调用函数可以返回一个空指针如果函数失败,导致合成NULL指针。
+链组件
自然 类型 ID 的名字
StartsWith 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 252年 不返回值
和小 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 476年 空指针废弃
+扩展描述
而不返回值的弱点并不仅限于返回空指针(见例子的cwe - 252),函数会返回NULL指示一个错误状态。当这个错误条件不是检查,一个空指针引用可能发生。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 476年 空指针废弃
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现 这个弱点的典型事件发生在一个应用程序包含用户控制输入malloc()调用。相关的代码可能是正确的关于防止缓冲区溢出,但是如果提供一个较大的值,malloc()将失败由于内存不足。这个问题也经常发生在解析例程预计,某些元素永远是现在。如果畸形提供输入,解析器会返回NULL。例如,strtok()会返回NULL。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C患病率(待定)

c++患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
可用性

技术的影响:DoS:崩溃,退出或重新启动

完整性
保密
可用性

技术的影响:执行未经授权的代码或命令;读记忆;修改内存

在极少数情况下,当零等于0 x0内存地址和特权的代码可以访问它,然后写作或阅读记忆是可能的,这可能会导致代码执行。
+示范例子

示例1

下面的代码调用getUserName()函数之前但不检查返回值非关联化(这可能会导致一个NullPointerException)。

(坏的代码)
例如语言:Java
字符串的用户名= getUserName ();
如果(username.equals (ADMIN_USER)) {
}

示例2

这个例子将IP地址从一个用户,验证它是完整的,然后查找主机名和拷贝到缓冲区。

(坏的代码)
例如语言:C
空白host_lookup (char * user_supplied_addr) {
struct hostent *惠普;
in_addr_t * addr;
char主机名[64];
in_addr_t inet_addr (const char * cp);

/ *程序确保user_supplied_addr是正确的格式转换* /

validate_addr_form (user_supplied_addr);
addr = inet_addr (user_supplied_addr);
惠普= gethostbyaddr (addr, sizeof (struct in_addr) AF_INET);
strcpy(主机名、hp - > h_name);
}

如果攻击者提供了一个地址,似乎是格式良好的,但是地址不解决一个主机名,然后调用gethostbyaddr()将返回NULL。由于代码从gethostbyaddr不会检查返回值(cwe - 252),一个空指针(cwe - 476)将发生在调用strcpy ()。

注意,这段代码也容易受到缓冲区溢出(cwe - 119)。

+观察到的例子
参考 描述
内容长度较大的值会导致NULL指针分配内存失败时。
大消息长度字段malloc失败时导致NULL指针。
解析程序遇到零废弃时输入缺少冒号分隔符。
URI解析API将参数设置为NULL解析故障发生时,例如当推荐人头丢失了一个主机名,导致零废弃。
链:未经检查返回值会导致零废弃
+检测方法

黑盒

这种情况通常发生在rarely-triggered错误条件,减少黑盒测试期间发现的机会。

白盒子

代码分析需要的知识API的库函数的行为可能会返回NULL,减少检测未知库时使用的机会。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 851年 CERT甲骨文安全Java编码标准(2011)第八章-异常行为(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 876年 CERT c++安全编码部分08 -内存管理(MEM)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1157年 SEI CERT C编码标准- 03指导方针。表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
+分类法映射
映射分类名称 节点ID 适合 映射节点名
CERT C安全编码 EXP34-C CWE更具体 不废弃空指针
CERT甲骨文安全Java编码标准(2011) ERR08-J 不要抓住NullPointerException或其祖先吗
SEI CERT Perl编码标准 EXP32-PL CWE更具体 不要忽略函数返回值
+内容的历史
+提交
提交日期 提交者 组织
2008-04-11 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2008-07-01 肖恩Eidemiller Cigital
添加/更新示范例子
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
Applicable_Platforms更新,描述、Detection_Factors关系,Other_Notes
2009-12-28 CWE内容团队 主教法冠
更新Demonstrative_Examples
2010-09-27 CWE内容团队 主教法冠
更新Observed_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2014-06-23 CWE内容团队 主教法冠
更新Modes_of_Introduction Other_Notes
2017-01-19 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新的关系,Relevant_Properties, Taxonomy_Mappings Time_of_Introduction
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2020-06-25 CWE内容团队 主教法冠
更新Common_Consequences
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples、人际关系

cwe - 394:意想不到的状态代码或返回值

弱点ID: 394
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品不正确检查当函数或操作函数返回一个值,是合法的,但不是所期望的产品。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 754年 不适当的检查异常或异常情况
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 389年 错误条件,返回值,状态代码
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性
其他

技术的影响:意想不到的状态;改变执行逻辑

+观察到的例子
参考 描述
特定的数据包(零字节和其他长度)导致recvfrom调用产生意外导致服务器的返回码听退出循环。
不返回代码从recv()会导致无限循环。
核函数不妥善处理由一个函数调用返回一个null时,导致调用另一个函数,它不应该。
内存清理不当当阅读()函数调用返回的字节数少于预期。
绕过访问限制从IP的DNS反向查找连接时不返回一个主机名。
绕过访问限制从IP的DNS反向查找连接时不返回一个主机名。
游戏服务器不检查返回值的函数,处理文本字符串和相关的大小值。
当函数调用返回1值合成无限循环。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 728年 OWASP十大2004类别A7 -错误处理不当
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 962年 SFP二级集群:未经检查的状态情况
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1306年 方案及质量措施——可靠性
+笔记

的关系

通常主要,但可以合成等问题行为改变或API滥用。这可以产生合成漏洞。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 意想不到的状态代码或返回值
软件故障模式 SFP4 不受控制的状态条件
SEI CERT Perl编码标准 EXP00-PL 不精确的 不返回undef
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新的关系,Other_Notes Taxonomy_Mappings
2009-03-10 CWE内容团队 主教法冠
更新的关系
2009-12-28 CWE内容团队 主教法冠
更新Other_Notes Relationship_Notes
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新的关系
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2020-08-20 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
2023-01-31 CWE内容团队 主教法冠
更新描述

cwe - 134:使用外部控制的格式字符串

弱点ID: 134
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品使用一个函数,它接受一个格式字符串作为参数,但格式字符串来自外部源。
+扩展描述

当攻击者可以修改一个外部控制格式字符串,这可能导致缓冲区溢出、拒绝服务或数据表示问题。

应该注意的是,在某些情况下,如国际化,格式字符串的集合是外部控制的设计。如果这些格式的源字符串是可信的(如只包含在库文件由系统管理员可以修改),然后外部控制本身可能不构成弱点。

+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 668年 曝光资源错误的球体
CanPrecede 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 123年 Write-what-where条件
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 133年 字符串错误
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 668年 曝光资源错误的球体
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“七有害的王国”(cwe - 700)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 20. 不正确的输入验证
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现 程序员很少计划格式字符串的外部控制。这个弱点经常介绍了构造日志消息的代码,省略了一个常数格式字符串。
实现 在本地化和国际化等情况下,特定于语言的消息存储库可以剥削的大道,但格式字符串的问题将被合成,因为攻击者控制的存储库也将允许修改消息长度,格式和内容。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C(通常是普遍的)

c++(通常是普遍的)

Perl(很少普遍)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
保密

技术的影响:读记忆

格式字符串问题允许信息披露会严重简化程序的开发。
完整性
保密
可用性

技术的影响:修改内存;执行未经授权的代码或命令

格式字符串的问题会导致执行任意代码。
+利用的可能性
+示范例子

示例1

下面的程序输出一个字符串作为参数提供。

(坏的代码)
例如语言:C
# include < stdio . h >

空白printWrapper (char *字符串){

printf(字符串);
}

int主要(int命令行参数个数,char * * argv) {

char buf [5012];
memcpy (buf, argv [1], 5012);
printWrapper (argv [1]);
返回(0);
}

例子是可利用的,因为printWrapper调用printf()的()函数。注意:堆栈缓冲区添加使开发更简单。

示例2

下面的代码将命令行参数复制到缓冲区使用snprintf ()。

(坏的代码)
例如语言:C
int主要(int命令行参数个数,char * * argv) {
char buf [128];

snprintf (buf, 128, argv [1]);
}

这段代码,攻击者可以查看堆栈的内容和写堆栈使用命令行参数包含一个格式化的指令序列。攻击者可以通过提供更多的阅读从堆栈格式化指令,如x %,比格式化函数作为参数。(在这个例子中,函数没有参数被格式化)。通过使用% n格式指令,攻击者可以写堆栈,导致snprintf()写的字节数输出到目前为止指定的参数(而不是阅读价值的论点,这是预期的行为)。这种攻击的复杂版本将使用四个交错写入完全控制一个指针在堆栈上的价值。

示例3

某些实现更先进的攻击更容易通过提供格式指令控制的位置在内存中读取或者写入。这些指令的一个例子如以下代码所示,glibc写:

(坏的代码)
例如语言:C
printf (" % d % d % 1 $ d % 1 $ d \ n”, 5、9);

这段代码将生成以下输出:5 9 5 5也可以使用half-writes (% hn)精确控制任意dword在内存中,这大大降低了复杂性需要执行攻击,否则需要四个交错写道,如第一个例子中提到的一个。

+观察到的例子
参考 描述
在Perl程序格式字符串
格式字符串在恶劣syslog调用函数
格式字符串在恶劣syslog调用函数
在NNTP服务器响应格式字符串
格式字符串漏洞利用触发错误或警告,作为演示了通过格式说明符字符串. bmp文件名。
链:不受信任的搜索路径使合成通过加载恶意国际化消息格式字符串
+潜在的缓解措施

阶段:需求

选择一种语言,不受这一缺陷。

实施阶段:

确保所有格式字符串函数通过一个静态的字符串不能由用户控制,并且适当数量的参数总是发送到这个函数。如果可能的话,使用功能不支持格式化字符串% n运营商。(ref - 116][ref - 117]

阶段:构建和编译

运行编译器和链接器警告级别高的,因为他们可能会检测到错误的用法。
+弱点Ordinalities
Ordinality 描述
(其他弱点的弱点存在独立的)
+检测方法

自动静态分析

这个弱点常常可以发现使用自动静态分析工具。许多现代工具使用数据流分析或基于技术来减少假阳性的数量。

黑盒

因为格式字符串通常发生在rarely-occurring错误条件(例如错误消息日志记录),它们可以使用黑盒方法难以检测。很有可能,许多潜在的问题存在于可执行文件,没有相关的源代码(或等效源。

有效性:有限

自动静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 字节码的弱点分析,包括反汇编程序+源代码弱点分析
  • 二进制弱点分析,包括反汇编程序+源代码弱点分析
成本有效的部分报道:
  • 二进制/字节码简单器-字符串,精灵读者等。

有效性:高

人工静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 二进制/字节码反汇编程序,然后使用手动分析缺陷和异常

有效性:飙升部分

动态分析与自动化的结果解释

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • Web应用程序扫描
  • Web服务的扫描仪
  • 数据库扫描仪

有效性:飙升部分

动态分析与人工解释结果

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 模糊测试
  • 基于框架Fuzzer

有效性:飙升部分

人工静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 手工源代码审查(不检查)
成本有效的部分报道:
  • 关注人工抽查,手动分析来源

有效性:高

自动静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 源代码缺陷分析仪
  • Context-configured源代码分析器
成本有效的部分报道:
  • 警告标志

有效性:高

体系结构或设计审查

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 正式的方法/ Correct-By-Construction
成本有效的部分报道:
  • 检验(IEEE 1028标准)(适用于需求、设计、源代码,等等)。

有效性:高

+功能区域
  • 日志记录
  • 错误处理
  • 字符串处理
+影响资源
  • 内存
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 635年 最初使用的弱点NVD从2008年到2016年
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 726年 OWASP十大2004类别A5 -缓冲区溢出
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 743年 CERT C安全编码标准(2008)第十章-输入输出(FIO)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 808年 2010年处于25 -弱点
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 845年 CERT甲骨文安全Java编码标准(2011)第二章-输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 865年 2011年前25 -资源管理风险
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 877年 CERT c++安全编码部分09 -输入输出(FIO)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 990年 SFP二级集群:污染输入命令
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1131年 方案》(2016)——安全质量措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1134年 SEI CERT甲骨文Java安全编码标准,指南00。输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1163年 SEI CERT 09 C编码标准指导方针。输入输出(FIO)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1179年 01 SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1340年 方案及数据保护措施
+笔记

适用的平台

这个弱点是可能的任何编程语言,支持格式的字符串。

研究的差距

超语言格式字符串问题除了c内存或磁盘消耗,控制流或变量改变,格式字符串和数据损坏可能造成开发在其他语言如Perl编写的应用程序,PHP, Python等。

其他

虽然格式字符串漏洞通常属于缓冲区溢出的类别,在技术上他们不溢出缓冲区。格式字符串漏洞是相当新的(1999年前后),源于这一事实没有现实的方式有数量可变的参数的函数来确定究竟有多少参数传入。最常见的函数变量数量的参数,包括c运行时功能,printf()的调用。格式字符串的问题出现在很多方面。* printf()调用没有格式说明符是危险的,可以利用。例如,printf(输入);是可利用的,printf (y,输入);在这种情况下不是可利用的。第一次调用的结果,使用不当,允许攻击者能够窥视栈内存自输入字符串将被用作格式说明符。攻击者可以把输入字符串格式说明符,并开始阅读堆栈的价值观,因为其余的参数将从堆栈。 Worst case, this improper use may give away enough control to allow an arbitrary value (or values in the case of an exploit program) to be written into the memory of the running program.

经常有针对性的实体文件的名称、流程名称、标识符。

格式字符串的问题是一个典型的C / c++的问题,现在罕见由于易于发现。格式字符串漏洞可以利用的一个主要原因是由于% n运营商。n %操作符将写的字符数,已打印的格式字符串因此,指向的内存参数。通过技术创建一个格式字符串,恶意用户可能使用栈上的值来创建一个write-what-where条件。一旦实现,它们可以执行任意代码。可以使用其他运营商;例如,9999年代%操作符也可能引发缓冲区溢出,或当用于file-formatting功能如流,它可以产生比预期更大的输出。

+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 格式字符串漏洞
7有害的王国 格式字符串
格式字符串的问题
CERT C安全编码 FIO30-C 确切的 排除用户输入的格式字符串
CERT C安全编码 FIO47-C CWE更具体 使用有效的格式字符串
OWASP十大2004 A1 CWE更具体 用户输入
WASC 6 格式字符串
CERT甲骨文安全Java编码标准(2011) IDS06-J 排除用户输入的格式字符串
SEI CERT Perl编码标准 IDS30-PL 确切的 排除用户输入的格式字符串
软件故障模式 SFP24 污染输入命令
OMG ASCSM ASCSM -cwe - 134
+引用
(ref - 116)史蒂夫Christey。“Perl程序格式字符串漏洞”。<http://www.securityfocus.com/archive/1/418460/30/0/threaded>。
(ref - 117)哈尔伯奇和罗伯特·c·Seacord。“编程语言格式字符串漏洞”。<http://www.ddj.com/dept/security/197002914>。
(ref - 118)蒂姆N万博下载包ewsham。“格式化字符串攻击”。Guardent。2000-09-09。<http://www.the万博下载包newsh.com/ ~ newsham / format-string-attacks.pdf>。
[REF-7]大卫迈克尔·霍华德和勒布朗。编写安全代码。第五章,147页“格式字符串错误”。第二版。微软出版社。2002-12-04。<https://www.microsoftpressstore.com/store/writing -安全-代码- 9780735617223>。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪6:格式字符串的问题。”Page 109. McGraw-Hill. 2010.
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第八章,“C格式字符串”,422页。1版。艾迪生卫斯理》2006。
(ref - 962)对象管理组织(OMG)。“自动源代码安全措施(ASCSM)”。ascsm - cwe - 134。2016 - 01。<http://www.omg.org/spec/ASCSM/1.0/>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-08-01 股的分析
添加/更新白盒定义
2008-09-08 CWE内容团队 主教法冠
更新Applicable_Platforms、Common_Consequences Detection_Factors Modes_of_Introduction,关系,Other_Notes, Research_Gaps, Taxonomy_Mappings Weakness_Ordinalities
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-03-10 CWE内容团队 主教法冠
更新的关系
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-07-17 股的分析
改善了White_Box_Definition
2009-07-27 CWE内容团队 主教法冠
更新White_Box_Definitions
2010-02-16 CWE内容团队 主教法冠
更新Detection_Factors、引用关系,Taxonomy_Mappings
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2011-06-27 CWE内容团队 主教法冠
更新Modes_of_Introduction、人际关系
2011-09-13 CWE内容团队 主教法冠
更新Potential_Mitigations、引用关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Observed_Examples、引用关系,Taxonomy_Mappings Related_Attack_Patterns
2014-07-30 CWE内容团队 主教法冠
更新Demonstrative_Examples Detection_Factors,关系,Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新描述、Modes_of_Introduction名称、关系
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms、Causal_Nature Functional_Areas、Likelihood_of_Exploit Other_Notes,引用关系,Taxonomy_Mappings White_Box_Definitions
2018-03-27 CWE内容团队 主教法冠
更新的引用
2019-01-03 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新的关系
2019-09-19 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新Detection_Factors、人际关系
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新Common_Consequences、人际关系
2021-03-15 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2023-01-31 CWE内容团队 主教法冠
更新描述
+以前的条目名称
改变日期 以前的条目名称
2015-12-07 不受控制的格式字符串

cwe - 477:使用过时的功能

弱点ID: 477
抽象:基地
结构:简单的
视图定制的信息:
+描述
代码使用过时或陈旧的函数,这意味着没有得到积极检查或维护的代码。
+扩展描述

随着编程语言的发展,功能偶尔会过时由于:

  • 语言的进步
  • 改进的理解应该如何进行有效、安全地操作
  • 约定的变化控制特定的操作

删除的函数通常是被更新的同行,在一些不同的执行相同的任务,希望改进。

+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 710年 不当坚持编码标准
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1228年 API /功能错误
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
其他

技术的影响:质量退化

+示范例子

示例1

下面的代码使用废弃getpw()函数来验证一个明文密码匹配用户的加密密码。如果密码是有效的,函数结果设置为1;否则设置为0。

(坏的代码)
例如语言:C

getpw (uid, pwdline);
(我= 0;我< 3;我+ +){
cryptpw = strtok (pwdline,“:”);
pwdline = 0;
}
结果= strcmp (crypt (plainpw cryptpw), cryptpw) = = 0;

虽然代码经常正确的行为,使用getpw()函数可以从安全的角度来看,问题因为它可以溢出缓冲区传递给它的第二个参数。因为这个漏洞,getpw()取代了getpwuid(),它执行相同的查询getpw()返回一个指针指向一个静态分配的结构来减轻风险。并不是所有的功能都弃用或替换,因为它们构成了安全风险。然而,存在一个过时的函数通常表明周围的代码一直被忽视,可能处于失修状态。软件安全并不是一个优先级,甚至考虑很久。如果程序使用过时或陈旧的函数,它提出了概率有安全问题潜伏在附近。

示例2

在以下代码,程序员假定系统总是中定义了一个名为“cmd”的属性。如果攻击者可以控制程序的环境,使“cmd”没有定义,程序抛出一个空指针异常,当它试图调用“削减()”的方法。

(坏的代码)
例如语言:Java
字符串cmd =零;

cmd = Environment.GetEnvironmentVariable (cmd);
cmd = cmd.Trim ();

示例3

下面的代码构造一个字符串对象的字节数组和一个值,用于指定的8位16位Unicode字符。

(坏的代码)
例如语言:Java

字符串名称=新的字符串(nameBytes highByte);

在这个例子中,构造函数可能不正确将字节转换成字符根据字符集是用于编码字符串由nameBytes表示。由于进化数据集用于编码的字符串,这个构造函数被弃用,取而代之的是一个构造函数,它接受一个参数的名称使用的字符集编码的字节转换。

+潜在的缓解措施

实施阶段:

指过时的文档函数以确定为什么它是过时或陈旧,学习替代方式来实现相同的功能。

阶段:需求

认真考虑使用一个过时的安全影响函数。考虑使用备用功能。
+弱点Ordinalities
Ordinality 描述
间接
(缺点是一个质量问题,可能会间接更容易引入的安全相关的弱点或使他们更难检测)
+检测方法

自动静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 二进制字节码质量分析
成本有效的部分报道:
  • 字节码的弱点分析,包括反汇编程序+源代码弱点分析

有效性:高

人工静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 二进制/字节码反汇编程序,然后使用手动分析缺陷和异常

有效性:飙升部分

动态分析与人工解释结果

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 调试器

有效性:高

人工静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 手工源代码审查(不检查)
成本有效的部分报道:
  • 关注人工抽查,手动分析来源

有效性:高

自动静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 源代码质量分析仪
  • 源代码缺陷分析仪
  • Context-configured源代码分析器

有效性:高

自动静态分析

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 来源分析

有效性:高

体系结构或设计审查

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 正式的方法/ Correct-By-Construction
  • 检验(IEEE 1028标准)(适用于需求、设计、源代码,等等)。

有效性:高

+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 398年 7 pk -代码质量
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1001年 SFP二级集群:使用不当的API
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1180年 02 SEI CERT Perl编码标准,指导方针。声明和初始化(DCL)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
+分类法映射
映射分类名称 节点ID 适合 映射节点名
7有害的王国 过时了
软件故障模式 SFP3 使用不当的API
SEI CERT Perl编码标准 DCL30-PL CWE更具体 不弃用导入模块
SEI CERT Perl编码标准 EXP30-PL CWE更具体 不要使用过时或废弃的函数或模块
+引用
卡特里娜REF-6 Tsipenyuk,布莱恩象棋和加里·麦克格劳博士。“七有害的王国:分类软件安全错误”。NIST研讨会软件安全保障技术和度量工具。NIST的。2005-11-07。<https://samate.nist.gov/SSATTM_Content/papers/Seven%20Pernicious%20Kingdoms%20-%20Taxonomy%20of%20Sw%20Security%20Errors%20-%20Tsipenyuk%20-%20Chess%20-%20McGraw.pdf>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 7有害的王国
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Potential_Mitigations Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新的关系,Other_Notes Taxonomy_Mappings
2009-03-10 CWE内容团队 主教法冠
更新Other_Notes
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-07-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-03-29 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新的关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-06-23 CWE内容团队 主教法冠
更新描述、Other_Notes Potential_Mitigations
2014-07-30 CWE内容团队 主教法冠
更新Detection_Factors、关系、Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms、名称、关系,Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新Taxonomy_Mappings Weakness_Ordinalities
2020-02-24 CWE内容团队 主教法冠
更新引用关系
2020-08-20 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
+以前的条目名称
改变日期 以前的条目名称
2008-01-30 过时了
2017-11-08 使用过时的函数

cwe - 457:使用未初始化的变量

弱点ID: 457
抽象:变体
结构:简单的
视图定制的信息:
+描述
代码使用一个变量没有初始化,导致不可预知的或意想不到的结果。
+扩展描述
在某些语言如C和c++,默认堆栈变量没有初始化。他们通常包含垃圾数据堆栈的内容记忆之前调用这个函数。攻击者有时可以控制或阅读这些内容。在其他语言或条件,未显式初始化的变量可以给一个默认值,安全问题,这取决于程序的逻辑。未初始化的变量的存在有时可以显示一个排版错误的代码。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 908年 使用未初始化资源
光束 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 456年 失踪的初始化一个变量
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 665年 不适当的初始化
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及数据保护措施”(cwe - 1340)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 665年 不适当的初始化
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现 在C语言中,使用未初始化的char *在某些字符串库将返回不正确的结果,作为图书馆希望零终结者总是最后一个字符串,即使字符串是空的。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C(有时流行)

c++(有时流行)

Perl(通常是普遍的)

PHP(通常是普遍的)

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
可用性
完整性
其他

技术的影响:其他

初始变量通常包含垃圾,不能信任的一致性。这可能导致拒绝服务条件,或修改控制流以意想不到的方式。在某些情况下,攻击者可以使用之前的行动“pre-initialize”变量,这可能使代码执行。这可能会导致竞态条件如果锁变量检查时不应该。
授权
其他

技术的影响:其他

字符串不初始化尤其危险,因为许多功能预计最后一个空的——最后,只有一个字符串。
+利用的可能性
+示范例子

示例1

这段代码输出一个问候使用信息存储在一个POST请求:

(坏的代码)
例如语言:PHP
如果收取($ _POST['名字'])){
$ nameArray = $ _POST['名字'];
}
“你好”。美元nameArray['第一次'];

这段代码检查POST数组的名字的是之前设置分配$ nameArray变量。然而,如果数组不是在POST请求,nameArray美元将保持未初始化。这将导致一个错误访问数组时打印问候信息,这可能导致进一步的利用。

示例2

以下switch语句的目的是设置变量的值和bN之前使用:

(坏的代码)
例如语言:C
int, Bn;
开关(ctl) {
案例1:
一个= 0;
bN = 0;
打破;

例0:
=我;
bN =我;
打破;

案例1:
=我+ NEXT_SZ;
bN = i - NEXT_SZ;
打破;

默认值:
一个= 1;
一个= 1;
打破;
}
重画(bN);

switch语句的默认情况下,程序员有意外的价值的两倍。因此,bN将一个未定义的值。大多数未初始化的变量问题导致通用软件可靠性问题,但是如果攻击者可以故意触发使用未初始化的变量,他们可能会发起拒绝服务攻击程序崩溃。在适当的情况下,攻击者可以通过影响控制未初始化变量的值栈上的值之前调用的函数。

示例3

这个例子将在一个未知的条件下,当我离开test_string err_val是相同的值,因为test_string不是初始化(cwe - 456)。根据这个代码段出现(如在一个函数体),test_string可能是随机的,如果是存储在堆或堆栈。如果中声明的变量是静态内存,它可能是零个或NULL。编译器优化这个地址的不可预知性。

(坏的代码)
例如语言:C
char * test_string;
如果(我! = err_val)
{
test_string =“Hello World !”;
}
printf (" % s ", test_string);

当printf (), test_string可能是一个意想不到的地址,所以printf可能打印垃圾字符串(cwe - 457)。

修复这段代码中,有一些方法来确保已正确设置test_string一旦它到达printf ()。

一个解决方案是集test_string前可以接受默认的条件:

(好的代码)
例如语言:C
char * test_string =初“完成”;
如果(我! = err_val)
{
test_string =“Hello World !”;
}
printf (" % s ", test_string);

另一个解决方案是确保每个分支的条件,包括默认的/ else分支,可以确保test_string设置:

(好的代码)
例如语言:C
char * test_string;
如果(我! = err_val)
{
test_string =“Hello World !”;
}
其他{
test_string = "做另一边!”;
}
printf (" % s ", test_string);
+观察到的例子
参考 描述
链:sscanf()调用用于检查用户名和组存在,但sscanf()调用的返回值不是检查(cwe - 252),导致未初始化的变量检查(cwe - 457),返回成功执行特权允许授权旁路(cwe - 863)。
链:拒绝服务可能是由于未初始化的变量(cwe - 457)允许一个无限循环(cwe - 835)从一个连接到一个服务器没有响应。
未初始化的变量导致流行的桌面应用程序的代码执行。
精心设计的输入触发引用未初始化的对象的指针。
精心制作的音频文件触发使用未初始化的变量时崩溃。
使用未初始化的变量随机种子。
+潜在的缓解措施

实施阶段:

策略:减少攻击表面

将所有变量分配给一个初始值。

阶段:构建和编译

策略:编译和构建硬化

大多数编译器将抱怨使用未初始化的变量是否打开警告。

阶段:实施;操作

当使用一种语言,不需要显式声明的变量,运行或编译软件模式,报告未申报或未知的变量。这可能表明存在一个排版错误的变量的名字。

阶段:需求

选择可以使用的语言,这些问题并不容易。

阶段:体系结构和设计

减轻技术,如安全字符串库和容器可以引入抽象。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 398年 7 pk -代码质量
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 998年 SFP二级集群:故障计算
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1180年 02 SEI CERT Perl编码标准,指导方针。声明和初始化(DCL)
+分类法映射
映射分类名称 节点ID 适合 映射节点名
未初始化变量
7有害的王国 未初始化变量
软件故障模式 SFP1只能 在计算故障
SEI CERT Perl编码标准 DCL33-PL 不精确的 在使用它们之前声明的标识符
+引用
[REF-18]安全软件公司. .“扣应用程序安全性的过程”。2005年。<https://cwe.mitre.org/documents/sources/TheCLASPApplicationSecurityProcess.pdf>。
(ref - 436)怜悯。“利用未初始化的数据”。2006 - 01。<http://www.felinemenace.org/ /论文/ UBehavior / UBehavior.zip摆布>。
(ref - 437)微软安全漏洞研究和国防。“ms08 - 014:未初始化堆栈变量脆弱性”的情况下。2008-03-11。<http://blogs.technet.com/swi/archive/2008/03/11/the-case-of-the-uninitialized-stack-variable-vulnerability.aspx>。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪恶之八:c++灾难。”Page 143. McGraw-Hill. 2010.
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第七章“变量初始化”,312页。1版。艾迪生卫斯理》2006。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-08-01 股的分析
添加/更新白盒定义
2008-09-08 CWE内容团队 主教法冠
更新Applicable_Platforms Common_Consequences、描述关系,Observed_Example, Other_Notes,引用,Taxonomy_Mappings
2009-01-12 CWE内容团队 主教法冠
更新Common_Consequences、Demonstrative_Examples Potential_Mitigations
2009-03-10 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新引用关系
2012-10-30 CWE内容团队 主教法冠
更新Demonstrative_Examples
2013-02-21 CWE内容团队 主教法冠
更新Applicable_Platforms、描述Other_Notes Potential_Mitigations,关系
2014-06-23 CWE内容团队 主教法冠
更新Modes_of_Introduction Other_Notes
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings White_Box_Definitions
2019-01-03 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新关系类型
2020-02-24 CWE内容团队 主教法冠
更新引用、关系类型
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples Observed_Examples,关系
2021-07-20 CWE内容团队 主教法冠
更新Observed_Examples
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 未初始化变量

cwe - 597:使用错误的操作符的字符串比较

弱点ID: 597
抽象:变体
结构:简单的
视图定制的信息:
+描述
产品使用错误的操作符比较字符串时,比如使用“= =”当.equals()方法应该使用。
+扩展描述
在Java中,使用= =或! =来比较两个字符串平等实际上比较两个对象的平等,而不是平等的字符串值。很可能这两个引用永远不会相等。而这个弱点常常只会影响程序的正确性,如果使用的平等是一个安全的决定,意想不到的比较结果可以杠杆影响程序的安全。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 480年 使用不正确的操作符
ChildOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 595年 比较对象引用,而不是对象的内容
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 133年 字符串错误
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ChildOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 595年 比较对象引用,而不是对象的内容
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
其他

技术的影响:其他

+示范例子

示例1

在下面的示例中,两个Java字符串对象声明和初始化字符串值。一个if语句用于确定字符串是等价的。

(坏的代码)
例如语言:Java
字符串str1 =新的字符串(“Hello”);
字符串str2 =新的字符串(“Hello”);
如果(str1 = = str2) {
system . out。println (“str1 = = str2”);
}

然而,如果语句将不会执行字符串比较使用“= =”操作符。对于Java对象,例如字符串对象,“= =”操作符比较对象引用,而不是对象值。在上面的两个字符串对象包含相同的字符串值,他们指的是不同的对象引用,所以system . out。println语句不会被执行。比较对象的值,可以修改前面的代码使用equals方法:

(好的代码)
如果(str1.equals (str2)) {
system . out。println (“str1等于str2”);
}

示例2

在下面的示例中,三个JavaScript变量声明和初始化值。请注意,JavaScript将根据需要改变数字和字符串之间的一个值,这是一个整数包含在字符串的原因。一个if语句是用来确定值是相同的。

(坏的代码)
例如语言:JavaScript
< p id = " ieq3s1 " type = " text " > (i = = = s1)是假的< / p >
< p id = " s4eq3i " type = " text " > (s4 = = =我)是假的< / p >
< p id = " s4eq3s1 " type = " text " > (s4 = = = s1)是假的< / p >

var = 65;
var s1 = ' 65 ';
var s4 =新的字符串(“65”);

如果(我= = = s1)
{
. getelementbyid (“ieq3s1”)。innerHTML = " (i = = = s1)是真的”;
}

如果(s4 = = =我)
{
. getelementbyid (“s4eq3i”)。innerHTML = " (s4 = = =我)是真的”;
}

如果(s4 = = = s1)
{
. getelementbyid (“s4eq3s1”)。innerHTML = " (s4 = = = s1)是真的”;
}

然而,如果语句不会被执行的主体,作为" = = = "比较变量的类型和价值。类型的第一个比较数字和字符串,它失败了。在第二类型是int和参考,这一失败。第三类型参考和字符串,所以它也失败了。

虽然上述变量包含相同的价值观,它们包含在不同的类型,因此. getelementbyid……声明将不会在任何情况下执行。

比较对象的值,如下所示的先前的代码修改和使用“= =”值比较,这样比较在这个例子执行HTML语句:

(好的代码)
例如语言:JavaScript
< p id = " ieq2s1 " type = " text " > (i = = s1)是假的< / p >
< p id = " s4eq2i " type = " text " > (s4 = =我)是假的< / p >
< p id = " s4eq2s1 " type = " text " > (s4 = = s1)是假的< / p >

var = 65;
var s1 = ' 65 ';
var s4 =新的字符串(“65”);

如果我= = (s1)
{
. getelementbyid (“ieq2s1”)。innerHTML = " (i = = s1)是真的”;
}

如果(s4 = =我)
{
. getelementbyid (“s4eq2i”)。innerHTML = " (s4 = =我)是真的”;
}

如果(s4 = = s1)
{
. getelementbyid (“s4eq2s1”)。innerHTML = " (s4 = = s1)是真的”;
}

示例3

在下面的示例中,两个PHP变量声明和初始化数据——一个作为字符串,另一个整数。注意,PHP将改变字符串值的数量比较。一个if语句是用来确定值是相同的。

(坏的代码)
例如语言:PHP
var = 65美元;
s1美元var = " 65 ";

如果我= = =美元(s1)
{
回声”(i = = =美元s1)是正确的。“\ n”;
}
其他的
{
回声”(i = = =美元s1)是错误的。“\ n”;
}

然而,如果语句不会被执行的主体,作为" = = = "比较变量的类型和价值。类型的第一个比较数字和字符串,它失败了。

虽然上述变量包含相同的价值观,它们包含在不同的类型,所以真正的if语句的一部分不会被执行。

比较对象的值,如下所示的先前的代码修改和使用“= =”值比较(字符串转换为数字)比较在这个例子执行真正的声明:

(好的代码)
例如语言:PHP
var = 65美元;
s1美元var = " 65 ";

如果我= =美元(s1)
{
回声”(i = =美元s1)是正确的。“\ n”;
}
其他的
{
回声”(i = =美元s1)是错误的。“\ n”;
}
+潜在的缓解措施

实施阶段:

在Java使用.equals()来比较字符串值。

在JavaScript内,使用= =比较字符串值。

在PHP中,使用= =比较字符串值的数值。(PHP将字符串转换为一个数字。)

有效性:高

+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 847年 CERT甲骨文安全Java编码标准(2011)第4章-表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 998年 SFP二级集群:故障计算
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1136年 SEI CERT甲骨文安全编码标准Java - 02指导方针。表达式(EXP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1181年 03 SEI CERT Perl编码标准,指导方针。表达式(EXP)
+分类法映射
映射分类名称 节点ID 适合 映射节点名
CERT甲骨文安全Java编码标准(2011) EXP03-J 不要使用盒装原语的平等运营商当比较值
CERT甲骨文安全Java编码标准(2011) EXP03-J 不要使用盒装原语的平等运营商当比较值
SEI CERT Perl编码标准 EXP35-PL CWE更具体 使用正确的运算符类型比较值
软件故障模式 SFP1只能 在计算故障
+引用
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第六章,“错误”,289页。1版。艾迪生卫斯理》2006。
+内容的历史
+提交
提交日期 提交者 组织
2006-12-15 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Potential_Mitigations Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新描述、人际关系
2008-10-14 CWE内容团队 主教法冠
更新的关系
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-03-29 CWE内容团队 主教法冠
更新Demonstrative_Examples、描述Potential_Mitigations
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Demonstrative_Examples、引用关系,Taxonomy_Mappings
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2019-01-03 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2020-02-24 CWE内容团队 主教法冠
更新的关系
2020-08-20 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
Demonstrative_Examples更新,描述、Potential_Mitigations关系
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 错误的字符串比较
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日