ID: 128 类型:基础 | 状态:未完成 |
描述
当值的增量超过其类型的最大值时,就会发生环绕错误,进而导致“环绕”到非常小、负值或未定义的值。
关联视图
与“研究层面”视图(CWE-1000)相关
与“开发层面”视图(CWE-699)相关
引入模式
阶段 | 备注 |
实现 |
应用平台
语言
C (经常出现)
C++ (经常出现)
后果
范围 | 冲击 | 可能性 |
可利用性 | 技术冲击: DoS: 崩溃、推出或者重启: DoS: 资源消耗(CPU): DoS: 资源消耗 (内存):; DoS: 不稳定 这种弱点通常会导致未定义的行为,从而导致崩溃。在涉及循环索引变量的溢出情况下,无限循环的可能性也很高。 | |
完整性 | 技术冲击: 修改内存 如果所讨论的值对数据(而不是流)很重要,则会发生简单的数据损坏。此外,如果环绕导致其他条件(如缓冲区溢出),则可能会发生进一步的内存损坏。 | |
保密性 | 技术冲击: 执行未获授权的代码或者命令;越过保护机制 这种弱点有时会触发缓冲区溢出,可用于执行任意代码。这通常不在程序隐式安全策略的范围内。 |
被利用的可能性:
一般
示例
例1
下面的图像处理代码给图像分配了一张表:
(问题代码)
Example Language: C
img_t table_ptr; /*struct containing img data, 10kB each*/
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)。
应对措施
需求规范:可以选择使用不易受这些问题影响的语言。 |
阶段: 架构与设计 在设计的任何协议的规模上提供明确的上下限。 |
阶段: 实现 对所有递增的变量进行健全性检查,以确保它们保持在合理的范围内。 |
种属
关系 | 类型 | ID | 名称 |
属于 | 742 | CERT C Secure Coding Standard (2008) Chapter 9 - Memory Management (MEM) | |
属于 | 876 | ||
属于 | 998 |
说明
关联
溢出和环绕之间的关系需要更密切地检查,因为有几个条目(包括CWE-190)是密切相关的