CWE

常见的弱点枚举

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

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

cwe - 192:整数强制错误

弱点ID: 192
抽象:变体
结构:简单的
视图定制的信息:
+描述
整数强制是指一组相关的缺陷类型铸造、原始数据类型的扩展,或截断。
+扩展描述
几个缺点都属于整数强制错误。在大多数情况下,这些错误本身的结果只有在可用性和数据完整性问题。然而,在某些情况下,他们可能会导致其他更复杂的安全相关的缺陷,如缓冲区溢出的条件。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 681年 不正确的数值类型之间的转换
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 189年 数字错误
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C患病率(待定)

c++患病率(待定)

Java患病率(待定)

c#患病率(待定)

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

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

整数强制常常会导致未定义的执行导致无限循环或崩溃。
完整性
保密
可用性

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

在某些情况下,整数强制错误会导致可利用的缓冲区溢出条件,导致执行任意代码。
完整性
其他

技术的影响:其他

整数强制错误导致不正确的值被存储变量的问题。
+利用的可能性
媒介
+示范例子

示例1

下面的代码是为了从套接字读取传入数据包和提取一个或多个标题。

(坏的代码)
例如语言:C
DataPacket *包;
int numHeaders;
PacketHeader *头;

袜子= AcceptSocketConnection ();
ReadPacket(包、袜子);
numHeaders =包- >标题;

如果(numHeaders > 100) {
ExitError(“太多的头!”);
}
头= malloc (numHeaders * sizeof (PacketHeader);
ParsePacketHeaders(包、头);

代码执行一个检查,确保包不包含太多的头。然而,numHeaders被定义为int签署,所以它可以是负数。如果传入的数据包指定一个值,如3,然后malloc计算将产生一个负数(-300年说,如果每个标题最多可达100个字节)。当这个结果提供给malloc(),它是第一个转换为size_t类型。这种转换然后产生一个较大的值,如4294966996,这可能导致malloc()失败或分配极其大量的内存(cwe - 195)。用适当的负数,攻击者可以诱骗malloc()使用一个非常小的正数,然后分配一个缓冲区,远小于预期,可能导致缓冲区溢出。

示例2

下面的代码读取一个最大尺寸大小和执行验证。然后执行strncpy,假设它不会超过数组的边界。虽然使用“短”是强制在这个特定的例子中,短整型的实际代码中经常使用,例如代码处理结构化数据。

(坏的代码)
例如语言:C
int GetUntrustedInt () {
返回(0 x0000ffff);
}

void main (int命令行参数个数,char * * argv) {
char路径[256];
char *输入;
int我;
短的年代;
unsigned int深圳;

i = GetUntrustedInt ();
s = i;
/ * s是1,所以通过了安全检查cwe - 697* /
如果(> 256){
DiePainfully(“走开! \ n”);
}

/ * s符号扩展和保存在深圳* /
深圳= s;

/ *输出:我= 65535 s = 1,深圳= 4294967295 -你的情况可能不同* /
printf (" i = % d s = % d,深圳= % u \ n”,我,年代,sz);

输入= GetUserInput(“输入路径名:”);

/ * strncpy解释年代unsigned int,视为MAX_INT
(cwe - 195),使缓冲区溢出(cwe - 119)* /
strncpy(路径,输入,年代);
路[255]= ' \ 0 ';/ *不希望的cwe - 170* /
printf("路径是:% s \ n”,路径);
}

这段代码首先展示的一个例子cwe - 839,允许“s”是一个负数。当消极的短“s”转化为一个无符号整数,它成为一个非常大的正整数。当使用这个转换整数strncpy()会导致缓冲区溢出(cwe - 119)。

+潜在的缓解措施

阶段:需求

抛出异常的语言模糊的数据可能被选中。

阶段:体系结构和设计

设计对象和程序流,这样多或复杂的铸件是不必要的

实施阶段:

确保铸件,必须使用任何数据类型是完全理解为了减少错误使用的合理性。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 738年 CERT C安全编码标准(2008)第五章-整数(INT)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 872年 CERT c++安全编码部分04 -整数(INT)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1158年 SEI CERT 04 C编码标准指导方针。整数(INT)
+笔记

维护

在C,它可能是“强迫”比“铸造”语义不同,可能取决于程序员直接指定转换,或者如果它是编译器隐式。这已影响到这个条目和其他人表示,等cwe - 681,是否有足够的差别对这些条目。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
整数强制错误
CERT C安全编码 INT02-C 理解整数转换规则
CERT C安全编码 INT05-C 不要使用输入函数转换字符数据如果他们不能处理所有可能的输入
CERT C安全编码 INT31-C 确切的 确保整数转换不会导致数据丢失或误解
+引用
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪7:整数溢出”。Page 119. McGraw-Hill. 2010.
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第六章,“符号扩展”,248页。1版。艾迪生卫斯理》2006。
[REF-18]安全软件公司. .“扣应用程序安全性的过程”。2005年。<https://cwe.mitre.org/documents/sources/TheCLASPApplicationSecurityProcess.pdf>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19
+修改
修改日期 修饰符 组织
2008-09-08 CWE内容团队 主教法冠
更新Applicable_Platforms、Common_Consequences Maintenance_Notes、关系、Other_Notes Taxonomy_Mappings
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-12-28 CWE内容团队 主教法冠
更新描述,Other_Notes
2010-04-05 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Demonstrative_Examples,引用
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2017-11-08 CWE内容团队 主教法冠
更新关系,Taxonomy_Mappings,类型
2019-01-03 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples Maintenance_Notes,引用
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日