CWE

常见的弱点枚举

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

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

cwe - 190:整数溢出或概括

弱点ID: 190
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品执行的计算可以产生一个整数溢出或概括,当逻辑假设得到的值总是大于原始值。这可以介绍其他弱点当计算用于资源管理或执行控制。
+扩展描述
整数溢出或概括的发生在一个整数值增加太大的值存储在相关的表征。当这种情况发生时,该值可能包装成为一个非常小的或负数。虽然这可能是依赖行为的情况下,包装,它可以安全如果包装是意想不到的后果。尤其如此,如果整数溢出可以触发使用用户提供的输入。这是强调安全的结果用于控制循环时,做出安全性决策,或确定偏移量大小等行为的内存分配,复制、连接等。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 682年 错误的计算
PeerOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 128年 环绕式处理错误
PeerOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 1339年 精度不足或精度实数
CanPrecede 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 119年 不当的操作限制的范围内一个内存缓冲区
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 189年 数字错误
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 682年 错误的计算
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“七有害的王国”(cwe - 700)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 20. 不正确的输入验证
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

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

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

技术的影响:DoS:崩溃,退出或重新启动;DoS:资源消耗(CPU);DoS:资源消耗(内存);DoS:不稳定

这个弱点通常会导致未定义的行为,因此崩溃。在溢出的情况下涉及循环指数变量,无限循环的可能性也很高。
完整性

技术的影响:修改内存

如果值是重要的数据(而不是流),简单的数据腐败发生。同样,如果环绕导致缓冲区溢出等其他条件,进一步可能发生内存泄露。
保密
可用性
访问控制

技术的影响:执行未经授权的代码或命令;旁路保护机制

这个弱点有时会引发缓冲区溢出,可以用来执行任意代码。这通常是在程序的隐式安全政策的范围。
+利用的可能性
媒介
+示范例子

示例1

以下为图像图像处理代码分配一个表。

(坏的代码)
例如语言:C
img_t table_ptr;/ *结构包含img数据,每个* / 10 kb
int num_imgs;

num_imgs = get_num_imgs ();
table_ptr = (img_t *) malloc (sizeof (img_t) * num_imgs);

这段代码将分配一个表大小num_imgs,然而随着num_imgs越来越大,计算确定的大小最终会溢出列表(cwe - 190)。这将导致一个非常小的列表来分配。如果后续代码运行在名单上,就好像它是num_imgs长,这可能会导致许多类型的界外问题(cwe - 119)。

示例2

下面的代码摘录OpenSSH 3.3演示了一个典型的整数溢出:

(坏的代码)
例如语言:C
nresp = packet_get_int ();
如果(nresp > 0) {
响应= xmalloc (nresp * sizeof (char *));
(我= 0;我< nresp;我+ +)响应[我]= packet_get_string(空);
}

如果nresp价值1073741824和sizeof (char *)有其典型值为4,然后操作的结果nresp * sizeof (char *)溢出,和xmalloc()的参数是0。大多数malloc()实现将愉快地分配一个0-byte缓冲区,导致后续的循环迭代中堆溢出缓冲区的回应。

示例3

整数溢出可以检测复杂和困难。下面的例子是为了说明一个整数溢出可能导致未定义的循环行为:

(坏的代码)
例如语言:C
短int bytesRec = 0;
字符缓冲区(SOMEBIGNUM);

而(bytesRec < MAXGET) {
bytesRec + = getFromInput (buf + bytesRec);
}

在上述情况下,完全有可能,bytesRec可能溢出,不断创造数量低于MAXGET也覆盖第一个MAXGET-1字节的缓冲区。

示例4

在这个例子中determineFirstQuarterRevenue方法用于确定第一季度收入会计/业务应用程序。方法检索前三个月的每月销售总额,计算第一季度销售总额从每月销售总额,计算第一季度收入根据第一季度的销售业绩,最后保存第一季度收入结果数据库。

(坏的代码)
例如语言:C
#定义1月1
#定义2月2
#定义3月3

短getMonthlySales (int) {…}

浮动calculateRevenueForQuarter(短quarterSold) {…}

int determineFirstQuarterRevenue () {

/ /变量的季度销售收入
浮动quarterRevenue f = 0.0;

短JanSold = getMonthlySales(1月);/ * * / 1月销售
短FebSold = getMonthlySales(2月);/ * * / 2月销售
短MarSold = getMonthlySales (MAR);/ * * / 3月销售

/ /计算季度总
短quarterSold = JanSold + FebSold + MarSold;

/ /计算季度的总收入
quarterRevenue = calculateRevenueForQuarter (quarterSold);

saveFirstQuarterRevenue (quarterRevenue);

返回0;
}

然而,在这个例子中原始类型短int用于月度和季度销售变量。在C语言中简短的int原始类型的最大值为32768。这将创建一个潜在的整数溢出如果三个月销售的值加起来超过最大值的短int原始类型。一个整数溢出会导致数据损坏,意想不到的行为,无限循环,系统崩溃。纠正这种情况应该使用适当的原始类型,在下面的例子中,和/或提供了一些验证机制以确保原始类型的最大值不超过。

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

浮动calculateRevenueForQuarter(长quarterSold) {…}

int determineFirstQuarterRevenue () {

/ /计算季度总
长quarterSold = JanSold + FebSold + MarSold;

/ /计算季度的总收入
quarterRevenue = calculateRevenueForQuarter (quarterSold);

}

注意,一个整数溢出也可能发生如果quarterSold变量的原始类型长但是calculateRevenueForQuarter方法有一个参数类型的短。

+观察到的例子
参考 描述
链:Python库不限制指定的资源用于处理图像大量的乐队(cwe - 1284),导致过度的内存消耗(cwe - 789)或一个整数溢出(cwe - 190)。
链:不当输入验证(CWE-20)导致整数溢出(cwe - 190)在移动操作系统,利用每中钢协KEV在野外。
链:不当输入验证(CWE-20)导致整数溢出(cwe - 190)在移动操作系统,利用每中钢协KEV在野外。
链:意想不到的符号扩展(cwe - 194)导致整数溢出(cwe - 190),导致一个界外阅读(cwe - 125)
链:编译器优化(cwe - 733)用于检测整数溢出(删除或修改代码cwe - 190),允许界外写(cwe - 787)。
链:整数溢出导致use-after-free
链:整数溢出securely-coded邮件程序会导致缓冲区溢出。在2005年,这被认为是不切实际的利用,但在2020年,它被重新发现更容易利用由于技术的演进。
通过大量的参数整数溢出。
整数溢出在OpenSSH中列出的示范例子。
图像宽度和高度导致大整数溢出。
1会导致分配0字节的长度值和合成堆溢出。
1会导致分配0字节的长度值和合成堆溢出。
链:未经检查的消息大小的元数据允许整数溢出(cwe - 190)导致缓冲区溢出(cwe - 119)。
链:一个整数溢出(cwe - 190)图像大小计算会导致无限循环(cwe - 835),按顺序分配缓冲区没有限制(cwe - 1325),直到栈是满的。
+潜在的缓解措施

阶段:需求

确保所有协议都严格定义,这样所有禁止入内的行为可以被识别简单,并要求严格的一致性协议。

阶段:需求

策略:语言选择

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

如果可能的话,选择一种语言或编译器执行自动范围检查。

阶段:体系结构和设计

策略:库或框架

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

使用库或框架更容易处理数字没有意想不到的后果。

例子包括安全整数处理包如SafeInt (c++)或IntegerLib (C或c++)。(ref - 106]

实施阶段:

策略:输入验证

对任何数字输入执行输入验证,确保它是在预期的范围内。执行输入同时满足最小和最大预期范围的需求。

尽可能使用无符号整数。这使它更容易为整数溢出执行验证。需要签署了整数时,确保检查范围包括最小值和最大值。

实施阶段:

了解编程语言的基本表示形式,以及它如何与数值计算(cwe - 681)。密切关注字节大小差异,精度,签署/无符号的区别,截断,类型之间的转换和铸造,“不是一个数字”计算,和语言如何处理数字太大或太小的底层表示。(REF-7]

也要小心占32位,64位,和其他潜在的差异可能影响数字表示。

阶段:体系结构和设计

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

实施阶段:

策略:编译和构建硬化

检查编译器警告密切并消除潜在的安全隐患问题,如签署/无符号不匹配在内存中操作,或使用未初始化的变量。即使很少被利用的弱点,一个单一的故障可能会导致整个系统的妥协。
+检测方法

自动静态分析

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

有效性:高

黑盒

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

有效性:温和

注意:不可见性的代码,黑盒方法可能无法充分区分别人的这个弱点,需要后续手工方法诊断的潜在问题。

手动分析

这个弱点可以检测使用的工具和技术,需要手动(人类)的分析,如渗透测试、威胁建模和交互工具,允许测试人员记录和修改一个活跃的会话。

具体来说,手工静态分析有助于评估分配计算的正确性。这可以用于检测溢出条件(cwe - 190)或类似的弱点可能严重的安全影响。

有效性:高

注意:这些可能是更有效的比严格的自动化技术。尤其如此弱点设计和相关的业务规则。

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

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

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

有效性:高

动态分析与人工解释结果

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

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

有效性:飙升部分

人工静态分析源代码

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

成本有效的部分报道:
  • 手工源代码审查(不检查)

有效性:飙升部分

自动静态分析源代码

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

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

有效性:高

体系结构或设计审查

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

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

有效性:高

+功能区域
  • 数字处理
  • 内存管理
  • 计数器
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 738年 CERT C安全编码标准(2008)第五章-整数(INT)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 742年 CERT C安全编码标准(2008)第9章-内存管理(MEM)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 802年 2010年前25 -资源管理风险
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 865年 2011年前25 -资源管理风险
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 872年 CERT c++安全编码部分04 -整数(INT)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 876年 CERT c++安全编码部分08 -内存管理(MEM)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 998年 SFP二级集群:故障计算
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1137年 SEI CERT甲骨文安全编码标准Java - 03指导方针。数值类型和操作(NUM)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1158年 SEI CERT 04 C编码标准指导方针。整数(INT)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1162年 SEI CERT 08 C编码标准指导方针。内存管理(MEM)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1200年 弱点在2019 CWE最危险的软件错误
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1337年 2021 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1350年 2020 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1387年 2022 CWE最危险软件的弱点的弱点
+笔记

的关系

整数溢出可以主缓冲区溢出。

术语

“整数溢出”有时被用来覆盖错误的几种类型,包括signedness错误,或缓冲区溢位涉及整数数据类型,而不是字符的操作。混乱的一部分事实的结果0 xffffffff签署上下文是1。其他困惑是因为整数溢出在链的作用。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 整数溢出(包装或概括)
7有害的王国 整数溢出
整数溢出
CERT C安全编码 INT18-C CWE更抽象 评估在大整数表达式比较或分配的大小
CERT C安全编码 INT30-C CWE更抽象 确保无符号整数操作不包装
CERT C安全编码 INT32-C 不精确的 确保签署了整数操作不会导致溢出
CERT C安全编码 INT35-C 评估在大整数表达式比较或分配的大小
CERT C安全编码 MEM07-C CWE更抽象 确保参数calloc(),当增多,不包装
CERT C安全编码 MEM35-C 为一个对象分配足够的内存
WASC 3 整数溢出
软件故障模式 SFP1只能 在计算故障
+引用
伊夫Younan (ref - 145)。“常见的编程安全漏洞的概述和可能的解决方案”。5.4.3学生论文部分。2003 - 08年。<http://fort-knox.org/thesis.pdf>。
(ref - 146) blexim。“基本的整数溢出”。Phrack 60 -问题,第十章。<http://www.phrack.org/issues.html?issue=60&id=10的文章>。
[REF-7]大卫迈克尔·霍华德和勒布朗。编写安全代码。第20章,620页“整数溢出”。第二版。微软出版社。2002-12-04。<https://www.microsoftpressstore.com/store/writing -安全-代码- 9780735617223>。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪7:整数溢出”。Page 119. McGraw-Hill. 2010.
[ref - 106]大卫·勒布朗和尼尔斯·德克尔。“SafeInt”。<http://safeint.codeplex.com/>。
[ref - 150]约翰内斯·乌尔里希。“前25系列- 17 -整数溢出或概括”。无软件安全研究所。2010-03-18。<http://software-security.sans.org/blog/2010/03/18/top-25-series-rank-17-integer-overflow-or-wraparound>。
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第六章,“带符号整数边界”,220页。1版。艾迪生卫斯理》2006。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-09-08 CWE内容团队 主教法冠
更新Common_Consequences、人际关系、Relationship_Notes Taxonomy_Mappings Terminology_Notes
2008-10-14 CWE内容团队 主教法冠
Common_Consequences更新,描述、Potential_Mitigations Terminology_Notes
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-01-12 CWE内容团队 主教法冠
更新描述、名称
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-10-29 CWE内容团队 主教法冠
更新的关系
2010-02-16 CWE内容团队 主教法冠
更新Applicable_Platforms、Detection_Factors Functional_Areas、Observed_Examples Potential_Mitigations,引用,Related_Attack_Patterns,关系,Taxonomy_Mappings Terminology_Notes
2010-04-05 CWE内容团队 主教法冠
更新Demonstrative_Examples、Detection_Factors Potential_Mitigations、引用Related_Attack_Patterns
2010-06-21 CWE内容团队 主教法冠
更新Common_Consequences Potential_Mitigations,引用
2010-09-27 CWE内容团队 主教法冠
更新Observed_Examples Potential_Mitigations
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新的关系
2011-09-13 CWE内容团队 主教法冠
更新Potential_Mitigations、引用关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples、引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2013-07-17 CWE内容团队 主教法冠
更新的引用
2014-07-30 CWE内容团队 主教法冠
更新Detection_Factors、关系、Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-01-19 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Functional_Areas Observed_Examples、引用Taxonomy_Mappings
2018-03-27 CWE内容团队 主教法冠
更新的引用
2019-01-03 CWE内容团队 主教法冠
更新的关系
2019-09-19 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新的关系
2020-06-25 CWE内容团队 主教法冠
更新Observed_Examples
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新Observed_Examples
2021-03-15 CWE内容团队 主教法冠
更新Potential_Mitigations
2021-07-20 CWE内容团队 主教法冠
更新的关系
2022-06-28 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2022-10-13 CWE内容团队 主教法冠
更新Observed_Examples
2023-01-31 CWE内容团队 主教法冠
更新描述,Detection_Factors
+以前的条目名称
改变日期 以前的条目名称
2009-01-12 整数溢出(包装或概括)
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日