CWE-128: Wrap-around Error(环绕错误)

 

 ID: 128

类型:基础
结构:简单

状态:未完成

 

描述

当值的增量超过其类型的最大值时,就会发生环绕错误,进而导致“环绕”到非常小、负值或未定义的值。

关联视图

与“研究层面”视图(CWE-1000)相关

与“开发层面”视图(CWE-699)相关

引入模式

阶段

备注

实现

 

应用平台

语言

C (经常出现)

C++ (经常出现)

后果

范围

冲击

可能性

可利用性

技术冲击: DoS: 崩溃、推出或者重启: DoS: 资源消耗(CPU): DoS: 资源消耗 (内存):; DoS: 不稳定

这种弱点通常会导致未定义的行为,从而导致崩溃。在涉及循环索引变量的溢出情况下,无限循环的可能性也很高。

 

完整性

技术冲击: 修改内存

如果所讨论的值对数据(而不是流)很重要,则会发生简单的数据损坏。此外,如果环绕导致其他条件(如缓冲区溢出),则可能会发生进一步的内存损坏。

 

保密性
可利用性
访问控制

技术冲击: 执行未获授权的代码或者命令;越过保护机制

这种弱点有时会触发缓冲区溢出,可用于执行任意代码。这通常不在程序隐式安全策略的范围内。

 

被利用的可能性:

一般

示例

例1

下面的图像处理代码给图像分配了一张表:

(问题代码)

Example Language:

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

CERT C++ Secure Coding Section 08 - Memory Management (MEM)

属于

998

SFP Secondary Cluster: Glitch in Computation

说明

关联

溢出和环绕之间的关系需要更密切地检查,因为有几个条目(包括CWE-190)是密切相关的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值