CWE

普遍的弱点

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

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

CWE-14:编译器删除代码以清除缓冲区

弱点ID:14
抽象:变体
结构:简单的
查看自定义信息:
+描述
敏感内存会根据源代码清除,但是编译器的优化会在不再读取的记忆中,即“删除死商店”。
+扩展描述

此编译器优化错误发生时发生:

  • 1.秘密数据存储在内存中。
  • 2.秘密数据通过覆盖其内容从内存中擦洗。
  • 3.源代码是使用优化编译器编译的,该编译器识别并删除了将内容覆盖为死商店的函数,因为后来不使用内存。
+关系
部分帮助该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
+与观点“研究概念”相关(CWE-1000)
自然 类型 ID 姓名
Childof 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 733 编译器优化删除或修改安全 - 关键代码
+介绍模式
部分帮助引言的不同模式提供了有关如何以及何时引入这种弱点的信息。该阶段识别可能发生介绍的生命周期中的一个点,而音符提供了与给定阶段中引言有关的典型情况。
阶段 笔记
执行
构建和汇编
+适用的平台
部分帮助该清单显示了可能出现的弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。

语言

C(不确定的患病率)

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

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

技术影响:阅读记忆;旁路保护机制

这种弱点将允许尚未清除内存的数据。如果此数据包含敏感密码信息,则攻击者可以读取密码并使用信息绕过保护机制。
+示例的例子

示例1

以下代码读取用户的密码,使用密码连接到后端大型机,然后尝试使用memset()从内存中刷新密码。

(不良代码)
示例语言:C
void getdata(char *mfaddr){
char PWD [64];
if(getPasswordfromuser(pwd,sizeof(pwd))){

if(connectTomainFrame(MFADDR,PWD)){

//与大型机的互动
}
}
memset(pwd,0,sizeof(pwd));
}

该示例中的代码将正确执行,如果使用逐字执行,但是如果使用优化编译器(例如Microsoft Visual C ++ .NET或GCC 3.X)编译了代码,则将删除到MEMSET()的呼叫()作为一个死商店是因为在覆盖其值后未使用缓冲区PWD [18]。由于缓冲区PWD包含一个敏感值,因此如果数据属于存储器居民,则应用程序可能很容易受到攻击。如果攻击者能够访问正确的内存区域,则可以使用恢复的密码来控制系统。

为了防止攻击者学习系统秘密,覆盖在内存中操纵的敏感数据是常见的做法。但是,随着优化编译器的出现,程序并不总是像单独的源代码所暗示的那样行事。在示例中,编译器将呼叫的呼叫解释为死亡代码,因为尽管显然有安全动机发生操作的安全动机,但随后未使用记忆。这里的问题在于,许多编译器以及实际上许多编程语言都没有考虑到提高效率的努力和其他安全问题。

攻击者通常通过使用核心转储或运行时机制来访问特定应用程序使用的内存并恢复秘密信息,从而利用这种类型的漏洞。攻击者可以访问秘密信息后,进一步利用系统并可能损害应用程序交互的其他资源是相对简单的。

+潜在的缓解

阶段:实施

如果可用,将敏感数据存储在“挥发性”内存位置中。

阶段:构建和编译

如果可能,请配置编译器,以免删除死商店。

阶段:建筑和设计

在可能的情况下,加密软件系统使用的敏感数据。
+检测方法

黑盒子

使用黑匣子方法无法检测到这种特定的弱点。尽管分析师可以检查内存以发现尚未擦洗的内存,但对可执行文件的分析将无法成功。这是因为编译器已经删除了相关代码。只有源代码显示程序员是否打算清除内存,因此这种弱点与其他弱点是无法区分的。

白盒

这种弱点只能使用白盒方法检测到(请参阅黑匣子检测因子)。需要仔细的分析以确定编译器是否可能将代码删除。
+影响资源
  • 记忆
+会员资格
部分帮助此成员关系表显示了其他CWE类别和视图,将此弱点称为成员。该信息通常可用于理解弱点适合外部信息源的何处。
自然 类型 ID 姓名
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 2 7pk-环境
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 729 OWASP前十大2004年A8类 - 不安全的存储
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 747 证书C安全编码标准(2008)第14章 - 其他(MSC)
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 883 CERT C ++安全编码第49节 - 其他(MSC)
成员 看法查看 - CWE条目的子集,提供了一种检查CWE内容的方法。两个主视图结构是切片(平面列表)和图(包含条目之间的关系)。 884 CWE横截面
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 963 SFP辅助群集:暴露数据
+分类映射
映射的分类名称 节点ID 合身 映射的节点名称
7个有害王国 不安全的编译器优化
plover 编译器优化未清楚的敏感记忆
OWASP 2004年前十名 A8 CWE更具体 不安全的存储
证书C安全编码 MSC06-C 处理敏感数据时,请注意编译器优化
软件故障模式 SFP23 暴露数据
+参考
[Ref-6] Katrina Tsipenyuk,Brian Chess和Gary McGraw。“七个有害王国:软件安全错误的分类法”。NIST关于软件安全保证工具技术和指标的研讨会。nist。2005-11-07。<https://samate.nist.gov/ssattm_content/papers/seven%20pernious%20kingdoms%20-%20-%20taxonomy%20OF%20SW%20SECURITY%20Security%20ERR%20-20-%20-%20-%20TSIPENYUK;>。
[Ref-7] Michael Howard和David LeBlanc。“编写安全代码”。第9章,“编译器优化警告”第322页。第二版。Microsoft Press。2002-12-04。<https://www.microsoftpressstore.com/store/writing-secure-code-9780735617223>。
[Ref-124]迈克尔·霍华德。“当擦洗内存中的秘密无效”。Bugtraq。2002-11-05。<http://cert.uni-stuttgart.de/archive/bugtraq/2002/11/msg00046.html>。
[Ref-125]迈克尔·霍华德。“一些坏消息和一些好万博下载包消息”。微软。2002-10-21。<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncode/html/secure10102002.asp>。
[Ref-126] Joseph Wagner。“ GNU GCC:Optimizer删除了安全性的代码”。Bugtraq。2002-11-16。<http://www.derkeiler.com/mailing-lists/securityfocus/bugtraq/2002-11/0257.html>。
+内容历史记录
+提交
提交日期 提交者 组织
2006-07-19 7个有害王国
+修改
修改日期 修饰符 组织
2008-07-01 埃里克·达奇(Eric Dalci) 雪茄
更新的time_of_introduction
2008-09-08 CWE内容团队 MITER
更新的关系,其他_notes,分类_mappings
2008-10-14 CWE内容团队 MITER
更新的关系
2008-11-24 CWE内容团队 MITER
更新的适用_platforms,描述,detection_factors,other_notes,entife_metigations,关系,分类_ mappings,time_of_introduction
2009-05-27 CWE内容团队 MITER
更新了示范_examples
2010-02-16 CWE内容团队 MITER
更新的引用
2011-06-01 CWE内容团队 MITER
更新的common_cconsquences
2011-09-13 CWE内容团队 MITER
更新的关系,分类_mappings
2012-05-11 CWE内容团队 MITER
更新了COMMON_CCONSQUENCES,参考,关系
2014-07-30 CWE内容团队 MITER
更新的关系,分类_mappings
2017-01-19 CWE内容团队 MITER
更新的关系
2017-11-08 CWE内容团队 MITER
更新的参考,关系,分类_mappings
2018-03-27 CWE内容团队 MITER
更新的引用,类型
2020-02-24 CWE内容团队 MITER
更新的引用,关系
+先前的输入名称
改变日期 先前的输入名称
2008-04-11 不安全的编译器优化
提供更多信息 - 请选择其他过滤器。
页面最后更新:2023年1月31日