CWE

常见的弱点枚举

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

新CWE吗?点击这里!
CWE最重要的硬件的弱点
CWE最危险的弱点
>CWE列表> CWE -个人字典定义(4.12)
ID

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

弱点ID: 14
抽象:变体
结构:简单的
视图定制的信息:
的用户感兴趣的更多的概念方面的一个弱点。例如:教育者,技术作家和项目/项目经理。 用户关心的实际应用和细节的本质弱点以及如何预防它的发生。例子:工具开发人员、安全人员、pen-testers事件反应分析师。 对于用户映射一个问题CWE / CAPEC id,即。,找到最合适的CWE为一个特定的问题(例如,CVE记录)。例如:工具开发人员、安全人员。 用户希望看到所有可用的信息CWE / CAPEC条目。 为用户谁想要定制显示细节。
×

编辑自定义过滤器


+描述
敏感的记忆清除根据源代码,但编译器优化离开内存没有不会再读,又名“死存储删除。”
+扩展描述

这个编译器优化时发生错误:

  • 1。机密数据被存储在内存中。
  • 2。上擦除记忆的秘密数据覆盖其内容。
  • 3所示。源代码编译使用一个优化编译器,识别和删除功能,覆盖的内容作为一个商店,因为记忆是不习惯后来死了。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 733年 强调安全代码的编译器优化删除或修改
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
构建和编译
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

C患病率(待定)

c++患病率(待定)

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

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

这个弱点将允许没有清除数据从内存中读取。如果这个密码数据包含敏感信息,攻击者可以读取密码,并利用这些信息来绕过保护机制。
+示范例子

示例1

下面的代码从用户读取密码,使用密码连接到后端主机,然后试图从内存擦洗密码使用memset ()。

(坏的代码)
例如语言:C
无效的GetData (char * MFAddr) {
char pwd [64];
如果(GetPasswordFromUser (pwd, sizeof (pwd))) {

如果(ConnectToMainframe (MFAddr pwd)) {

/ /与主机交互
}
}
memset (pwd 0 sizeof (pwd));
}

中的代码示例将正确的行为如果是逐字执行,但是如果使用一个优化的编译器编译的代码,如Microsoft Visual c++ . net或GCC 3。x,然后调用memset()将被删除死商店因为缓冲pwd后没有使用价值是覆盖[18]。因为缓冲pwd包含敏感值,应用程序可能容易受到攻击如果数据常驻内存。如果攻击者可以访问正确的内存区域,他们可能使用恢复密码系统的增益控制。

常见的做法是覆盖在内存中敏感数据操纵,如密码或密钥,为了防止攻击者学习系统的秘密。然而,随着优化编译器的出现,程序并不总是像他们的源代码本身。在这个例子中,编译器将调用memset()是死代码因为内存写入不是随后使用,尽管事实上,显然是一个安全操作发生的动机。这里的问题是,许多编译器,事实上许多编程语言,不考虑这个和其他安全问题在他们努力提高效率。

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

+潜在的缓解措施

实施阶段:

将敏感数据存储在内存位置如果可用“动荡”。

阶段:构建和编译

如果可能的话,配置您的编译器,以便它不删除死商店。

阶段:体系结构和设计

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

黑盒

这个特定的弱点是不可能使用黑盒方法检测。尽管分析师可以检查内存来看到它没有擦洗,可执行的分析不会成功。这是因为编译器已经删除了相关代码。只有源代码显示了程序员是否打算清除内存,这别人的弱点是没有区别的。

白盒子

这个弱点只使用白盒方法可检测(见黑盒检测因素)。需要仔细分析来确定代码编译器可能会被删除的。
+影响资源
  • 内存
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 2 7 pk -环境
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 729年 OWASP 2004年十大类别A8——不安全存储
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 747年 CERT C安全编码标准(2008)第14章-杂项(MSC)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 883年 CERT c++安全编码部分49 -杂项(MSC)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 963年 SFP二级集群:公开数据
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1398年 综合分类:组件交互
+脆弱性映射笔记

用法:允许

(CWE ID可以用来映射到现实世界的漏洞)

原因:可接受的使用

理由是:

这个CWE条目是变体的抽象级别,这是一个首选的抽象级别映射到漏洞的根本原因。

评论:

仔细阅读这两个名称和描述,以确保此映射是一个适当的配合。不要试图“力”映射到底层基础/变体只是遵守这首选的抽象级别。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
7有害的王国 不安全的编译器优化
千鸟 敏感的编译器未清偿的内存优化
OWASP十大2004 A8 CWE更具体 不安全的存储
CERT C安全编码 MSC06-C 注意编译器优化在处理敏感数据
软件故障模式 SFP23 公开的数据
+引用
卡特里娜REF-6 Tsipenyuk,布莱恩象棋和加里·麦克格劳博士。“七有害的王国:分类软件安全错误”。NIST研讨会软件安全保障技术和度量工具。NIST的。2005-11-07。<https://samate.nist.gov/SSATTM_Content/papers/Seven%20Pernicious%20Kingdoms%20-%20Taxonomy%20of%20Sw%20Security%20Errors%20-%20Tsipenyuk%20-%20Chess%20-%20McGraw.pdf>。
[REF-7]大卫迈克尔·霍华德和勒布朗。编写安全代码。第9章,322页“编译器优化的警告”。第二版。微软出版社。2002-12-04。<https://www.microsoftpressstore.com/store/writing -安全-代码- 9780735617223>。
(ref - 124)迈克尔·霍华德。“当擦洗秘密在记忆不起作用”。BugTraq。2002-11-05。<http://cert.uni-stuttgart.de/archive/bugtraq/2002/11/msg00046.html>。
(ref - 125)迈克尔·霍华德。“一些坏消息和一些好万博下载包消息”。微软。2002-10-21。<https://learn.microsoft.com/en-us/previous-versions/ms972826 (v = msdn.10)>。URL验证:2023-04-07
约瑟夫·瓦格纳(ref - 126)。“GNU GCC:优化器删除代码所必需的安全”。Bugtraq。2002-11-16。<https://seclists.org/bugtraq/2002/Nov/266>。URL验证:2023-04-07
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19
(CWE草案3,2006-07-19)
7有害的王国
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新的关系,Other_Notes Taxonomy_Mappings
2008-10-14 CWE内容团队 主教法冠
更新的关系
2008-11-24 CWE内容团队 主教法冠
更新Applicable_Platforms、描述Detection_Factors、Other_Notes Potential_Mitigations,关系,Taxonomy_Mappings Time_of_Introduction
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2010-02-16 CWE内容团队 主教法冠
更新的引用
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences、引用关系
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-01-19 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings
2018-03-27 CWE内容团队 主教法冠
更新引用类型
2020-02-24 CWE内容团队 主教法冠
更新引用关系
2023-04-27 CWE内容团队 主教法冠
更新引用关系
2023-06-29 CWE内容团队 主教法冠
更新Mapping_Notes
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 不安全的编译器优化
页面最后更新:2023年6月29日