ID: 416

类型:基础
结构:简单

状态:草稿

描述

释放内存后引用内存可能导致程序崩溃、使用意外值或执行代码。

扩展描述

取决于缺陷的实例化应及发生的时点,使用释放的内存可能会产生许多不利的后果,从损坏有效数据到执行任意代码。 发生数据损坏的最简单方法是重新使用释放的内存。释放后使用有两个常见的,有时是重叠的原因:

  • 错误情况和其他异常情况。
  • 对程序的哪个部分负责释放内存感到困惑。

在这种情况下,在释放内存之后的某个时刻,问题内存又被有效地分配给另一个指针。释放内存的原始指针将再次使用,并指向新分配中的某个位置。随着数据的变化,它会损坏有效使用的内存;这会导致进程中出现未定义的行为。

如果新分配的数据恰好保存了一个类,例如在C++中,在堆数据中散布着不同的函数指针。如果这些函数指针中的一个被指向有效壳代码的地址覆盖,则可以实现任意代码的执行。

关联视图

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

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

引入模式

阶段

说明

架构与设计

 

实现

 

应用平台

语言

C (出现的可能性不确定)

C++ (出现的可能性不确定)

后果

范围

冲击

可能性

完整性

技术冲击: 修改内存

如果在其他地方正确分配和使用了相关的内存区域,则使用以前释放的内存可能会损坏有效数据。

 

可用性

技术冲击: DoS: 崩溃、退出或重启

如果在使用以前释放的数据之后发生块合并,则当将无效数据用作块信息时,进程可能会崩溃。

 

完整性
保密性
可用性

技术冲击: 执行未获授权的代码或命令

如果在进行块合并之前输入了恶意数据,则可以利用write-what-where缺陷来执行任意代码。

 

被利用的可能性:

示例

例1

(问题代码)

Example Language: C

#include <stdio.h>
#include <unistd.h>
#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);
free(buf2R1);
buf2R2 = (char *) malloc(BUFSIZER2);
buf3R2 = (char *) malloc(BUFSIZER2);
strncpy(buf2R1, argv[1], BUFSIZER1-1);
free(buf1R1);
free(buf2R2);
free(buf3R2);

}

例2

 (问题代码)

Example Language: C

char* ptr = (char*)malloc (SIZE);
if (err) {

abrt = 1;
free(ptr);

}
...
if (abrt) {

logError("operation aborted before commit", ptr);

}

错误发生时,指针立刻被释放。然而,这个指针在后米的logError函数中被错误的使用。

应对措施

阶段: 架构与设计

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

阶段: 实现

当释放指针时,确认释放后立刻将其置为NUL。然而,重叠或者复杂数据的使用降低了这个策略的可用性。

种属

关系

类型

ID

名称

属于

398

7PK - Code Quality

属于

399

Resource Management Errors

属于

742

CERT C Secure Coding Standard (2008) Chapter 9 - Memory Management (MEM)

属于

808

2010 Top 25 - Weaknesses On the Cusp

属于

876

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

属于

983

SFP Secondary Cluster: Faulty Resource Use

属于

1162

SEI CERT C Coding Standard - Guidelines 08. Memory Management (MEM)

CWE-416: Use After Free(释放后使用)相关推荐

  1. Linux (x86) Exploit 开发系列教程之十二 释放后使用

    释放后使用 译者:飞龙 原文:Use-After-Free 预备条件: Off-By-One 漏洞(基于栈) 理解 glibc malloc VM 配置:Fedora 20(x86) 什么是释放后使用 ...

  2. CVE-2012-4792Microsoft Internet Explorer 释放后使用漏洞

    Microsoft Internet Explorer是微软Windows操作系统中默认捆绑的WEB浏览器.Microsoft Internet Explorer 6至8版本中存在释放后使用漏洞.通过 ...

  3. 谷歌修复另一枚已遭利用的 Chrome 释放后使用0day,细节未公开

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 谷歌修复了 Chrome 浏览器中已遭利用的另一枚 0day,成为该公司在一个月内修复的第二枚 0day. 上周五,谷歌发布 Wind ...

  4. Node.js TLSWrap 实现中的释放后使用漏洞分析

     聚焦源代码安全,网罗国内外最新资讯! Node v14.11.0 版本的 TLS 实现中存在一个释放后使用漏洞. 当写入启用 TLS 的套接字时,node::StreamBase::Write 调用 ...

  5. 看我如何利用教科书级别的释放后使用漏洞(CVE-2020-6449)

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 GitHub 研究员 Man Yue Mo详述了自己在2020年3月份上报的一个严重的释放后使用漏洞(CVE-2020-6449).如 ...

  6. Linux x86 漏洞利用-Use-After-Free(UAF)-释放后可重用

    Use-After-Free 先决条件 Off-By-One漏洞(基于堆) 理解glibc malloc VM设置:Fedora 20(x86) 什么是释放后可重用(UaF)? 继续使用已经释放的堆内 ...

  7. 初次定位UAF(内存释放后再次使用)问题

    记第一次定位UAF 某某打开KASAN的版本报过来我们的一个业务出现必现UAF(USE after free)踩内存问题,正常版本没有想过堆栈信息异常,第一次遇到这问题,简单记录下定位过程. 了解KA ...

  8. 尴尬!因软件 Bug ,美国数百名囚犯释放后无法出狱

    [CSDN 编者按]你敢想,真的会出现因为软件 Bug,上百起刑满人员被继续关押的奇葩事件. 整理 | 李磊    责编 | 张文 出品 | CSDN(ID:CSDNnews) 近日,一位来自美国亚利 ...

  9. [转]malloc的内存用free释放后为何系统回收不了

    在学习第七章7.8节时关于存储器分配这一块的时候,有个疑问,malloc(当然包括calloc和realloc)申请内存时候是怎么样申请的,free的时候内存是直接还给操作系统么?这个也是我在阿里面试 ...

最新文章

  1. 承德计算机专业去哪考试,2021河北省考承德都在哪个学校考试?
  2. python xpath语法-Python爬虫基础之XPath语法与lxml库的用法详解
  3. SpringMvc多视图整合(jsp、velocity、freemarker)
  4. windows SVN服务器软件
  5. python webviewer爬虫_爬虫再也不怕检测浏览器环境了
  6. 公众号文章折叠点击后展开案例_(案例)蜂窝纸板在包装中的应用内衬
  7. 八皇后问题(非递归版)
  8. 学习中的一些牢骚。字符串栈/堆的址标准写法。
  9. 线程之线程池(ExecutorService)
  10. 什么是RS-232-C接口与什么是RS-485接口?
  11. 数电期末基础知识整理
  12. 计算的威力,智慧的传奇——Fabrice Bellard
  13. 安卓玩机搞机-----没有第三方包 刷写第三方各种GSI系统 体验非官方系统
  14. 这些行业已经开始用数据挖掘了,我们的前途光明
  15. 常用benchmark小结
  16. .sh文件规则 .sh文件执行方法
  17. 实例演示Nginx重写(Rewrite)类型last、break、redirect和permanent的区别
  18. Github客户端的下载与安装心得
  19. jsp连接数据库并将数据显示到页面表格中
  20. 办公室可以挂画吗?挂什么样的画好?

热门文章

  1. 计算机程序设计表单,表单模板和表单简介
  2. python xlsx 转csv
  3. 这个发现是否会是RSA算法的BUG、或者可能存在的破解方式?
  4. 七夕情人节送女朋友什么礼物?七夕情人节礼物推荐
  5. 使用Remix编辑器发布以太坊ERC20高级代币合约
  6. nrf52840开发笔记(一)------开发环境搭建
  7. 虚拟机解压.rar文件
  8. js数字转字符串和字符串转数字的方法
  9. 如何添加、修改和删除矢量线段
  10. 【科研】BERT模型理论详解