CWE

常见的弱点枚举

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

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

cwe - 197:数字截断误差

弱点ID: 197
抽象:基地
结构:简单的
视图定制的信息:
+描述
截断误差发生当一个原始的小一号的原始和转换数据丢失。
+扩展描述
当原始铸造一个较小的原始,高阶位的大值丢失的转换,可能导致一个意想不到的价值不等于原始价值。这个值可能需要作为一个索引缓冲区,一个循环迭代器,或者只是必要的状态数据。在任何情况下,不能信任值,系统将在一个未定义的状态。虽然这种方法可能采用可行地隔离的低比特值,这种用法是罕见的,截断通常意味着一个实现错误发生。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 681年 不正确的数值类型之间的转换
CanAlsoBe 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 192年 整数强制错误
CanAlsoBe 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 194年 意想不到的符号扩展
CanAlsoBe 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 195年 签署无符号转换错误
CanAlsoBe 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 196年 未签名的签名转换错误
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 189年 数字错误
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 681年 不正确的数值类型之间的转换
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及数据保护措施”(cwe - 1340)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 681年 不正确的数值类型之间的转换
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C患病率(待定)

c++患病率(待定)

Java患病率(待定)

c#患病率(待定)

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

技术的影响:修改内存

的真正价值所使用的数据丢失和损坏数据。
+利用的可能性
+示范例子

示例1

这个例子中,虽然不是可利用的,显示了可能的值与截断误差的改编:

(坏的代码)
例如语言:C
int intPrimitive;
短shortPrimitive;
intPrimitive = (int) (~ ((int) 0) ^ (1 < < (sizeof (int) * 8 - 1)));
shortPrimitive = intPrimitive;
printf (" Int MAXINT: % d \ nShort MAXINT: % d \ n”, intPrimitive, shortPrimitive);

上面的代码,当编译和运行在某些系统中,返回以下输出:

(结果)
Int MAXINT: 2147483647
短MAXINT: 1

这个问题有可能被利用时,截断值用作数组索引,从而发生时隐式地使用64位的值作为索引,因为他们是32位截断。

示例2

在以下Java示例中,该方法updateSalesForProduct是业务应用程序类的一部分,为一个特定的产品更新销售信息。作为参数方法接收产品ID和整数金额出售。产品ID用于检索产品总数从库存对象返回计数作为一个整数。在调用方法的销售对象之前更新销售计算整数值转换为原始类型短自方法需要短方法参数的类型。

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

/ /更新销售数据库销售的产品数量与产品ID
公共空间updateSalesForProduct(字符串productID, int amountSold) {

/ /得到产品库存数据库的总数
int productCount = inventory.getProductCount (productID);
/ /整数值转换为短,方法

/ /销售对象需要的参数类型的短
短数=(短)productCount;
短期销售=(短)amountSold;
/ /更新销售数据库产品
销售。updateSalesCount (productID、计数、出售);
}

然而,数字截断误差可能发生如果整数值高于允许的最大价值的原始类型。这可能会导致意想不到的结果或损失或损坏的数据。在这种情况下,销售数据库可能损坏不正确的数据。显式从从一个大原始类型铸造小一号原始类型应该避免。下面的例子一个if语句添加到验证整数值小于原始类型的最大值之前短显式类型转换和销售方法的调用。

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

/ /更新销售数据库销售的产品数量与产品ID
公共空间updateSalesForProduct(字符串productID, int amountSold) {

/ /得到产品库存数据库的总数
int productCount = inventory.getProductCount (productID);
/ /确保不大于整数数字

/ /最大值之前短型转换
如果(productCount < Short.MAX_VALUE) & & (amountSold < Short.MAX_VALUE)) {

/ /整数值转换为短,方法

/ /销售对象需要的参数类型的短
短数=(短)productCount;
短期销售=(短)amountSold;
/ /更新销售数据库产品
销售。updateSalesCount (productID、计数、出售);

其他{
/ /抛出异常或执行其他处理
}
}
+观察到的例子
参考 描述
链:整数截断(cwe - 197)导致小缓冲区分配(cwe - 131)导致界外写(cwe - 787在内核池),利用每中钢协KEV在野外。
整数的截断长度值会导致基于堆的缓冲区溢出。
某一特定类型的大小变化在64位平台上,导致一个整数截断文档处理程序导致不正确的索引生成。
+潜在的缓解措施

实施阶段:

确保没有投,隐式或显式进行,从一个更大的原始大小或更小的原始大小。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 738年 CERT C安全编码标准(2008)第五章-整数(INT)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 848年 CERT甲骨文安全Java编码标准(2011)第五章-数值类型和操作(NUM)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 872年 CERT c++安全编码部分04 -整数(INT)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 998年 SFP二级集群:故障计算
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1137年 SEI CERT甲骨文安全编码标准Java - 03指导方针。数值类型和操作(NUM)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1158年 SEI CERT 04 C编码标准指导方针。整数(INT)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1159年 SEI CERT C编码标准- 05指导方针。浮点(FLP)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1163年 SEI CERT 09 C编码标准指导方针。输入输出(FIO)
+笔记

研究的差距

这个弱点历来超和低报,虽然在流行的软件漏洞已发表在2008年和2009年。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 数字截断误差
截断误差
CERT C安全编码 FIO34-C CWE更抽象 区分和EOF或WEOF字符读取文件
CERT C安全编码 FLP34-C CWE更抽象 确保浮点转换范围内的新类型
CERT C安全编码 INT02-C 理解整数转换规则
CERT C安全编码 INT05-C 不要使用输入函数转换字符数据如果他们不能处理所有可能的输入
CERT C安全编码 INT31-C CWE更抽象 确保整数转换不会导致数据丢失或误解
CERT甲骨文安全Java编码标准(2011) NUM12-J 确保数值类型转换窄类型不导致数据丢失或误解
软件故障模式 SFP1只能 在计算故障
+引用
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第六章,“截断”,259页。1版。艾迪生卫斯理》2006。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-09-08 CWE内容团队 主教法冠
更新Applicable_Platforms Common_Consequences、关系、Other_Notes Taxonomy_Mappings
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-07-27 CWE内容团队 主教法冠
更新描述、Observed_Examples Other_Notes Research_Gaps
2010-12-13 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新引用关系,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内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新的关系
2022-06-28 CWE内容团队 主教法冠
更新Observed_Examples
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日