CWE

普遍的弱点

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

2021 CWE Most Important Hardware Weaknesses
CWE Top 25 Most Dangerous Weaknesses
>CWE列表> CWE-单个字典定义(4.9)
ID

CWE-416:免费后使用

Weakness ID: 416
抽象:变体
Structure:Simple
查看自定义信息:
+描述
Referencing memory after it has been freed can cause a program to crash, use unexpected values, or execute code.
+扩展描述

使用以前的内存可能会带来任何不利后果,从有效数据的损坏到执行任意代码,具体取决于缺陷的实例化和时机。可能发生数据损坏的最简单方法涉及系统对释放内存的重复使用。无使用后错误有两个常见的原因,有时是重叠的原因:

  • 错误条件和其他特殊情况。
  • 混淆程序的哪一部分负责释放内存。

In this scenario, the memory in question is allocated to another pointer validly at some point after it has been freed. The original pointer to the freed memory is used again and points to somewhere within the new allocation. As the data is changed, it corrupts the validly used memory; this induces undefined behavior in the process.

例如,如果新分配的数据恰好在C ++中持有类,则可以在堆数据中散布各种函数指针。如果这些函数指针之一被覆盖有效的shellCode地址,则可以实现任意代码的执行。

+Alternate Terms
悬挂的指针
Use-After-Free
+关系
部分帮助该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
+与观点“研究概念”相关(CWE-1000)
Nature 类型 ID Name
ChildOf 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 825 过期的指针退出
peerof 变体变体 - 与某种类型的产品相关的弱点,通常涉及特定的语言或技术。比基本弱点更具体。变体级别的弱点通常以以下维度的3到5来描述问题:行为,财产,技术,语言和资源。 415 Double Free
可以按照 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 364 信号处理程序种族条件
可以按照 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 1265 通过嵌套呼叫对非诱因代码的意外重新入侵调用
canpreceede 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 120 缓冲区副本未检查输入的大小(“经典缓冲区溢出”)
canpreceede 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 123 写入某种条件
部分帮助该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
+与“简化已发表漏洞的简化映射”(CWE-1003)相关的视图相关(CWE-1003)
Nature 类型 ID Name
ChildOf 班级班级 - 以非常抽象的方式描述的弱点,通常与任何特定的语言或技术无关。比支柱弱点更具体,但比基本弱点更一般。班级弱点通常用以下维度的1或2来描述问题:行为,属性和资源。 672 到期或发布后在资源上操作
部分帮助该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
+与“ CISQ质量措施(2020)”相关(CWE-1305)
Nature 类型 ID Name
ChildOf 班级班级 - 以非常抽象的方式描述的弱点,通常与任何特定的语言或技术无关。比支柱弱点更具体,但比基本弱点更一般。班级弱点通常用以下维度的1或2来描述问题:行为,属性和资源。 672 到期或发布后在资源上操作
部分帮助该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
+Relevant to the view "CISQ Data Protection Measures" (CWE-1340)
Nature 类型 ID Name
ChildOf 班级班级 - 以非常抽象的方式描述的弱点,通常与任何特定的语言或技术无关。比支柱弱点更具体,但比基本弱点更一般。班级弱点通常用以下维度的1或2来描述问题:行为,属性和资源。 672 到期或发布后在资源上操作
+Modes Of Introduction
部分帮助The different Modes of Introduction provide information about how and when this weakness may be introduced. The Phase identifies a point in the life cycle at which introduction may occur, while the Note provides a typical scenario related to introduction during the given phase.
阶段 Note
建筑和设计
执行
+适用的平台
部分帮助This listing shows possible areas for which the given weakness could appear. These may be for specific named Languages, Operating Systems, Architectures, Paradigms, Technologies, or a class of such platforms. The platform is listed along with how frequently the given weakness appears for that instance.

Languages

C(不确定的患病率)

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

+Common Consequences
部分帮助This table specifies different individual consequences associated with the weakness. The Scope identifies the application security area that is violated, while the Impact describes the negative technical impact that arises if an adversary succeeds in exploiting this weakness. The Likelihood provides information about how likely the specific consequence is expected to be seen relative to the other consequences in the list. For example, there may be high likelihood that a weakness will be exploited to achieve a certain impact, but a low likelihood that it will be exploited to achieve a different impact.
范围 影响 Likelihood
正直

Technical Impact:Modify Memory

The use of previously freed memory may corrupt valid data, if the memory area in question has been allocated and used properly elsewhere.
可用性

Technical Impact:DoS: Crash, Exit, or Restart

如果在使用先前释放的数据后发生块合并,则当将无效的数据用作块信息时,该过程可能会崩溃。
正直
保密
可用性

Technical Impact:执行未经授权的代码或命令

如果在进行块合并之前输入恶意数据,则有可能利用写入任意代码的写入。
+利用的可能性
高的
+示例的例子

示例1

The following example demonstrates the weakness.

(不良代码)
示例语言:C
#include
#include
#define bufsizer1 512
#define bufsizer2((BufSizer1/2)-8)
int main(int argc, char **argv) {
char *buf1R1;
char *buf2r1;
char *buf2R2;
char *buf3r2;
buf1R1 = (char *) malloc(BUFSIZER1);
buf2r1 =(char *)malloc(bufsizer1);
免费(BUF2R1);
buf2R2 = (char *) malloc(BUFSIZER2);
buf3R2 = (char *) malloc(BUFSIZER2);
strncpy(buf2r1,argv [1],bufsizer1-1);
free(buf1R1);
免费(BUF2R2);
免费(BUF3R2);
}

示例2

The following code illustrates a use after free error:

(不良代码)
示例语言:C
char* ptr = (char*)malloc (SIZE);
if(err){
ABRT = 1;
免费(ptr);
}
。。。
if (abrt) {
logerror(“在提交之前流产”,ptr);
}

发生错误时,指针会立即释放。但是,该指针以后在Logerror函数中错误地使用。

+观察到的例子
参考 描述
链:移动平台竞赛条件(CWE-362)导致无用的使用(CWE-416),如野外Cisa Kev所利用的。
链:种族条件(CWE-362) leads to use-after-free (CWE-416),如野外Cisa Kev所利用的。
通过在数据仍在传输数据时关闭连接触发的无使用后。
Improper allocation for invalid data leads to use-after-free.
带有大量主题替代名称的证书未正确处理,导致免费使用
删除相关对象时不会禁用计时器
访问正在清理的“死”对象
object is deleted even with a non-zero reference count, and later accessed
涉及包含无效版本编号的请求的无使用后使用
其他功能当前正在访问的对象的卸载
incorrectly tracking a reference count leads to use-after-free
与非初始化内存的使用相关的无使用后使用
HTML文档,带有错误的标签
在ActiveX对象中免费使用后,通过向方法提供错误的参数
通过在数据传输过程中断开连接或包含不正确数据类型的消息,通过断开连接无使用
大数据传输期间断开连接会导致不正确的参考计数,从而导致无用
通过模糊发现无用的使用
链:种族条件(CWE-362)来自Applet加载时Web客户端中页面过渡的不当处理(CWE-368)导致免费使用后使用(CWE-416)
Realloc生成了新的缓冲区和指针,但以前的指针仍保留,从而在免费之后使用
Use-after-free in web browser, probably resultant from not initializing memory.
当一个线程访问由另一个线程释放的内存时,无使用后使用
在免费之后,将畸形值分配到某些属性触发器使用
邮件服务器无法正确处理较长的标题。
链:整数溢出导致无使用
释放的指针解雇
+潜在的缓解

阶段:建筑和设计

选择一种提供自动内存管理的语言。

阶段:实施

释放指针时,请确保将它们设置为无效。但是,多个或复杂数据结构的利用可能会降低该策略的实用性。
+Affected Resources
  • Memory
+会员资格
部分帮助此成员关系表显示了其他CWE类别和视图,将此弱点称为成员。该信息通常可用于理解弱点适合外部信息源的何处。
Nature 类型 ID Name
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 398 7PK - Code Quality
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 742 证书C安全编码标准(2008)第9章 - 内存管理(MEM)
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 808 2010年前25名 - 风口浪尖上的弱点
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 876 CERT C ++安全编码第08部分 - 内存管理(MEM)
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 983 SFP Secondary Cluster: Faulty Resource Use
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 1162 SEI CERT C编码标准 - 指南08.内存管理(MEM)
成员 看法看法- a subset of CWE entries that provides a way of examining CWE content. The two main view structures are Slices (flat lists) and Graphs (containing relationships between entries). 1200 2019年CWE前25个最危险的软件错误中的弱点
成员 看法看法- a subset of CWE entries that provides a way of examining CWE content. The two main view structures are Slices (flat lists) and Graphs (containing relationships between entries). 1337 2021 CWE中的弱点前25个最危险的软件弱点
成员 看法看法- a subset of CWE entries that provides a way of examining CWE content. The two main view structures are Slices (flat lists) and Graphs (containing relationships between entries). 1350 2020年CWE前25个最危险的软件弱点中的弱点
成员 看法看法- a subset of CWE entries that provides a way of examining CWE content. The two main view structures are Slices (flat lists) and Graphs (containing relationships between entries). 1387 Weaknesses in the 2022 CWE Top 25 Most Dangerous Software Weaknesses
+分类映射
映射的分类名称 节点ID 合身 映射的节点名称
7 Pernicious Kingdoms 免费使用后使用
CLASP 使用释放记忆
证书C安全编码 mem00-c Allocate and free memory in the same module, at the same level of abstraction
证书C安全编码 MEM01-C Store a new value in pointers immediately after free()
证书C安全编码 MEM30-C 精确的 请勿访问释放记忆
Software Fault Patterns SFP15 Faulty Resource Use
+参考
[REF-6] Katrina Tsipenyuk, Brian Chess and Gary McGraw. "Seven Pernicious Kingdoms: A Taxonomy of Software Security Errors". NIST Workshop on Software Security Assurance Tools Techniques and Metrics. 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-18] Secure Software,Inc.。“ The CLASP应用程序安全过程”。2005年。<https://cwe.mitre.org/documents/sources/theclaspapplicationsecurityprocess.pdf>。
[Ref-44] Michael Howard,David Leblanc和John Viega。“软件安全性的24个致命罪”。“罪8:C ++灾难。”Page 143. McGraw-Hill。2010年。
+Content History
+提交
提交日期 提交者 组织
2006-07-19 7 Pernicious Kingdoms
+Contributions
贡献日期 贡献者 组织
2022-06-28 匿名外部贡献者
建议的改性剂进行扩展描述
+Modifications
Modification Date 修饰符 组织
2008-07-01 Eric Dalci 雪茄
更新的势_METIGATIONS,time_of_introduction
2008-08-01 KDM Analytics
添加/更新的白色框定义
2008-09-08 CWE内容团队 MITRE
updated Applicable_Platforms, Common_Consequences, Relationships, Observed_Example, Other_Notes, Taxonomy_Mappings
2008-11-24 CWE内容团队 MITRE
更新的关系,分类_mappings
2009-03-10 CWE内容团队 MITRE
更新了示范_examples
2009-05-27 CWE内容团队 MITRE
更新了示范_examples
2009-10-29 CWE内容团队 MITRE
更新的common_cconsquences
2010-02-16 CWE内容团队 MITRE
更新的关系
2010-06-21 CWE内容团队 MITRE
更新的势_MINEIGATIONS
2010-09-27 CWE内容团队 MITRE
更新了观察到的示例,关系
2010-12-13 CWE内容团队 MITRE
更新的备用_terms,common_constequences,Description,obsed_examples,other_notes,势_METIGATIONS,关系
2011-03-29 CWE内容团队 MITRE
更新的描述
2011-06-01 CWE内容团队 MITRE
更新的common_cconsquences
2011-06-27 CWE内容团队 MITRE
更新了示范_examples
2011-09-13 CWE内容团队 MITRE
更新的关系,分类_mappings
2012-05-11 CWE内容团队 MITRE
更新的引用,关系
2014-07-30 CWE内容团队 MITRE
更新的关系,分类_mappings
2015-12-07 CWE内容团队 MITRE
更新的关系
2017-11-08 CWE内容团队 MITRE
更新的示范_examples,关系,分类_ mappings,white_box_definitions
2019-01-03 CWE内容团队 MITRE
更新的关系
2019-06-20 CWE内容团队 MITRE
更新的关系,类型
2019-09-19 CWE内容团队 MITRE
更新的关系
2020-02-24 CWE内容团队 MITRE
更新的引用,关系, Taxonomy_Mappings
2020-06-25 CWE内容团队 MITRE
更新的关系
2020-08-20 CWE内容团队 MITRE
更新的关系
2020-12-10 CWE内容团队 MITRE
更新的关系
2021-07-20 CWE内容团队 MITRE
更新的关系
2022-06-28 CWE内容团队 MITRE
更新了观察到的示例,关系
2022-10-13 CWE内容团队 MITRE
更新的描述,关系,分类_mappings
提供更多信息 - 请选择其他过滤器。
Page Last Updated:2022年10月13日