CWE

普遍的弱点

社区开发的软件和硬件弱点类型清单

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

CWE-124:缓冲区承保(“缓冲底流”)

弱点ID:124
抽象:根据
结构:简单的
查看自定义信息:
+描述
该产品使用索引或指针写入缓冲区,该索引或指针在缓冲区开始之前引用内存位置。
+扩展描述
当指针或其索引被降低到缓冲区前的位置时,指针算术会在有效内存位置开始之前或使用负索引时,这通常会发生这种情况。
+替代条款
缓冲区底层:
一些著名的供应商和研究人员使用“缓冲底底”一词。“缓冲液下流”是更常用的,尽管两个术语有时也用于描述读取的缓冲区(CWE-127)。
+关系
部分帮助该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
+与观点“研究概念”相关(CWE-1000)
自然 类型 ID 姓名
Childof 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 787 外面写作
Childof 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 786 启动缓冲区之前的内存位置访问
可以按照 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 839 数字范围比较没有最小检查
部分帮助该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
+与“软件开发”视图相关(CWE-699)
自然 类型 ID 姓名
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 1218 内存缓冲区错误
+介绍模式
部分帮助引言的不同模式提供了有关如何以及何时引入这种弱点的信息。该阶段识别可能发生介绍的生命周期中的一个点,而音符提供了与给定阶段中引言有关的典型情况。
阶段 笔记
建筑和设计
执行
+适用的平台
部分帮助该清单显示了可能出现的弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。

语言

C(不确定的患病率)

C ++(不确定的患病率)

+常见后果
部分帮助该表指定与弱点相关的不同个人后果。该范围确定了违反的应用程序安全区域,而影响描述了如果对手成功利用这一弱点,就会产生负面的技术影响。其可能性提供了有关预期相对于列表中其他后果的特定后果的可能性的信息。例如,可能会利用弱点来实现一定的影响,但很可能会利用它来实现不同的影响。
范围 影响 可能性
正直
可用性

技术影响:修改内存;DOS:崩溃,退出或重新启动

从范围内,内存访问很可能会导致相关内存的损坏,甚至可能导致崩溃。
正直
保密
可用性
访问控制
其他

技术影响:执行未经授权的代码或命令;修改内存;旁路保护机制;其他

如果可以有效控制损坏的内存,则可以执行任意代码。如果损坏的内存是数据而不是指令,则系统将继续在不正确的更改中运行,可能违反隐式或明确的策略。后果只会受影响的数据的限制,例如用于指定用户是否具有特殊特权的相邻内存位置。
访问控制
其他

技术影响:旁路保护机制;其他

当结果是任意代码执行时,通常可以用来颠覆任何其他安全服务。
+利用的可能性
中等的
+示例的例子

示例1

在以下C/C ++示例中,使用实用程序函数来修剪字符串的尾随空格。该函数将输入字符串复制到本地字符串,并使用一个while语句通过向后移动带有nul字符的字符串和覆盖空格来删除后线。

(不良代码)
示例语言:C
char * trimtrailingwhitespace(char * strmessage,int length){
char *retmessage;
char *消息= malloc(sizeof(char) *(长度+1));

//将输入字符串复制到临时字符串
char消息[长度+1];
int索引;
for(index = 0; index <长度; index ++){
消息[index] = strmessage [index];
}
消息[index] ='\ 0';

//修剪尾巴
int len = index-1;
while(isspace(消息[len])){
消息[len] ='\ 0';
伦 - ;
}

//返回字符串而无需落后空间
retmessage =消息;
返回retmessage;
}

但是,如果输入字符串包含所有空格,则此功能可能会导致缓冲区承保。在某些系统上,while语句将向后移动字符串的开头,并将在本地缓冲区边界外的地址上调用isspace()函数。

示例2

以下是可能导致缓冲区承保的代码的示例,如果Find()返回负值以表明在SRCBUF中找不到CH:

(不良代码)
示例语言:C
int main(){
...
strncpy(destbuf,&srcbuf [find(srcbuf,ch)],1024);
...
}

如果SRCBUF的索引在某种程度上是在用户控制下,则是任意写入的条件。

+观察到的例子
参考 描述
缓冲区在固件验证例程中允许通过精制固件图像执行代码
未检查的SSLV2挑战值的长度导致缓冲底流。
缓冲底流量从较小的尺寸值带有较大的缓冲区(长度参数不一致,CWE-130
从全旋转字符串中的缓冲底流量,这会导致计数器在寻找非Whitespace字符的同时在缓冲区之前减少。
从编码数据触发整数溢出的编码数据中产生的缓冲底流量。
产品设置不正确的缓冲区尺寸限制,从而导致“两个”缓冲区底流。
负值用于memcpy()操作,导致缓冲底流。
由于特殊字符不当
+潜在的缓解

阶段:要求

选择一种不容易受到这些问题的语言。

阶段:实施

应验证所有用作索引或指针算术的计算值,以确保它们在预期范围内。
+弱点
条件 描述
基本的
(弱点独立于其他弱点的地方)
+会员资格
部分帮助此成员关系表显示了其他CWE类别和视图,将此弱点称为成员。该信息通常可用于理解弱点适合外部信息源的何处。
自然 类型 ID 姓名
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 970 SFP辅助群集:障碍访问故障
+笔记

关系

这可能是由于多个错误引起的,包括不良的偏移量或阵列索引,该索引在缓冲区开始之前减少(请参阅CWE-129)。
+分类映射
映射的分类名称 节点ID 合身 映射的节点名称
plover 下 - 边界开始违规(“缓冲底流”?)
扣子 缓冲区承保
软件故障模式 SFP8 缓冲区访问故障
+参考
[Ref-90]“缓冲区下流:您对此有什么了解?”。VULN-DEV邮寄列表。2004-01-10。<http://seclists.org/vuln-dev/2004/jan/0022.html>。
[Ref-44] Michael Howard,David Leblanc和John Viega。“软件安全性的24个致命罪”。“罪5:缓冲区超支。”第89页。McGraw-Hill。2010年。
+内容历史记录
+提交
提交日期 提交者 组织
2006-07-19 plover
+修改
修改日期 修饰符 组织
2008-07-01 埃里克·达奇(Eric Dalci) 雪茄
更新的time_of_introduction
2008-09-08 CWE内容团队 MITER
更新的备用_terms,plapperable_platforms,common_cessequences,描述,关系,关系_notes,gualomy_mappings,feekness_ordinalities_ordinalities
2009-01-12 CWE内容团队 MITER
更新的common_cconsquences
2009-10-29 CWE内容团队 MITER
更新的描述,名称,关系
2011-03-29 CWE内容团队 MITER
更新的示范_examples,关系
2011-06-01 CWE内容团队 MITER
更新的common_cconsquences
2012-05-11 CWE内容团队 MITER
更新了示范示例,参考,关系
2014-07-30 CWE内容团队 MITER
更新的关系,分类_mappings
2017-11-08 CWE内容团队 MITER
更新的CAUSAL_NATURE,DEXPENDIATION_EXAMPLES,参考
2020-02-24 CWE内容团队 MITER
更新的关系
2021-03-15 CWE内容团队 MITER
更新的势_MINEIGATIONS
2021-10-28 CWE内容团队 MITER
更新了观察到的examples
2022-04-28 CWE内容团队 MITER
更新的Research_gaps
2023-01-31 CWE内容团队 MITER
更新的描述
+先前的输入名称
改变日期 先前的输入名称
2009-10-29 边界开始违规(“缓冲区承保”)
提供更多信息 - 请选择其他过滤器。
页面最后更新:2023年1月31日