CWE

常见的弱点枚举

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

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

cwe - 1335:不正确的位转变的整数

弱点ID: 1335
抽象:基地
结构:简单的
视图定制的信息:
+描述
一个整数值指定由负的金额或转移金额大于或等于价值所包含的比特数导致意外或不确定的结果。
+扩展描述

指定一个值被负转移金额未定义在不同的语言。各种计算机体系结构以不同的方式实现这一行动。编译器和解释器在生成代码来完成转变通常不检查这个问题。

指定一个over-shift,转变大于或等于所包含的比特数的价值转移,产生一个结果不同的体系结构和编译器。在一些语言中,这个动作是专门列为产生一个未定义的结果。

+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 682年 错误的计算
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现 增加生产班次没有正确验证的大小和符号的转变。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C患病率(待定)

c++患病率(待定)

c#患病率(待定)

Java患病率(待定)

JavaScript患病率(待定)

操作系统

类:不使用患病率(待定)

技术

类:不是特定于技术的患病率(待定)

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

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

+示范例子

示例1

负转移金额x86指令或x86_64转变将产生的比特数转移通过2补数的数量和转变有效地掩蔽量最低的6位64位转移指令。

(坏的代码)
例如语言:C
unsigned int r = 1 < < 5;

上面的示例最终转变的5。FFFFFFFFFFFFFFFD十六进制值,当位以上6位蒙面,转变量变成二进制值111101 61十进制的转变。转变为61比5产生非常不同的结果。前面的示例是一个非常简单的版本可能是更现实的下面的代码会发生什么在一个真正的系统。

(坏的代码)
例如语言:C
reg_bit int choose_bit (int, int bit_number_from_elsewhere)
{
如果(NEED_TO_SHIFT)
{
reg_bit - = bit_number_from_elsewhere;
}
返回reg_bit;
}
unsigned int handle_io_register (unsigned int * r)
{
unsigned int the_bit = 1 < < choose_bit (5、10);
* r | = the_bit;
返回the_bit;
}
(好的代码)
例如语言:C
reg_bit int choose_bit (int, int bit_number_from_elsewhere)
{
如果(NEED_TO_SHIFT)
{
reg_bit - = bit_number_from_elsewhere;
}
返回reg_bit;
}

unsigned int handle_io_register (unsigned int * r)
{
int the_bit_number = choose_bit (5、10);
如果((the_bit_number > 0) & & (the_bit_number < 63))
{
unsigned int the_bit = 1 < < the_bit_number;
* r | = the_bit;
}
返回the_bit;
}

注意,不仅很好的例子检查调整带来的负面影响和不允许他们,但也检查位移。没有一位操作完成的转变是否越界。根据计划,也许一个错误消息应该被记录。

+观察到的例子
参考 描述
ext4文件系统中的一个意想不到的大值会导致一个overshift条件导致除以零。
ext4文件系统中的一个意想不到的大值会导致一个overshift条件导致除以零-修复cve - 2009 - 4307。
内核中的一个overshift允许越界读写导致根收购。
程序不妥善处理签位left-shifts导致重叠memcpy内存范围错误。
压缩函数不执行一个签署了一个负整数的左移。
一些内核处理不当对32位数字的变化在一个64位的寄存器。
腻子有一个错误的值导致overshift转变的趋势。
领导司机overshifts在一定条件下导致DoS。
+潜在的缓解措施

实施阶段:

隐式或显式地为负或over-shift值添加检查和缓解。
+内容的历史
+提交
提交日期 提交者 组织
2021-03-29 CWE内容团队 主教法冠
+修改
修改日期 修饰符 组织
2022-10-13 CWE内容团队 主教法冠
更新Demonstrative_Examples Observed_Examples
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日