• 我们在哪一颗星上见过 ,以至如此相互思念 ;我们在哪一颗星上相互思念过,以至如此相互深爱
  • 我们在哪一颗星上分别 ,以至如此相互辉映 ;我们在哪一颗星上入睡 ,以至如此唤醒黎明
  • 认识世界 克服困难 洞悉所有 贴近生活 寻找珍爱 感受彼此

漏洞学习:释放后使用-UAF

漏洞学习 云涯 3年前 (2021-11-17) 1753次浏览

概念

当动态分配的内存释放时,该内存的内容是不确定的,有可能保存完整并可以被访问。

重新分配和回收释放时由内存管理程序决定的,但是也可能该内存的内容已经被改变,从而导致意外的程序行为。

当内存释放之后,应当保证不再对其进行写入和读取。

UAF会导致包括程序异常终止,任意代码执行和拒绝服务攻击等危险。

 

漏洞编号 漏洞概述
CVE-2018-1000051 Artifex Mupdf V1.12.0的fz_keep_key_storable 存在UAF漏洞,导致拒绝服务或代码执行
CVE-2018-17474 Chrome V70.0.3538.67之前版本中,Bink引擎的HTMLImportsController中存在一个UAF漏洞,导致攻击者可以构造一个特殊的HTML网页去利用堆损坏问题。
CVE-2018-15924 Adobe Acrobat 和 Reader 2018.011.20063及之前版本,2017.011.30102及之前版本、2015.006.30452及之前版本存在UAF漏洞,攻击者可以利用该漏洞执行任意代码。
CVE-2019-9447 Android Kernel 中的FingerTipS Touchscreen 驱动程序存在UAF漏洞,攻击者可以利用该漏洞提升权限。
CVE-2020-9606 Adobe Acrobat 和 Reader 2020.006.20042及之前版本,2017.011.30166及之前版本、2015.006.30518及之前版本存在UAF漏洞,攻击者可以利用该漏洞执行任意代码。
CVE-2021-3348 Linux Kernel through 5.10.12存在UAF漏洞,攻击者可以利用该漏洞在设备安装过程中的某个点通过IO请求触发攻击。

 

代码

void Use_After_Free()

{

char *data;

data=NULL;

data=(char *) malloc(100*sizeof(char));

if (data==NULL) {exit (-1);}

memset(data,'A',100-1);

data[100-1]='\0';

/*释放data*/

free(data);

/*释放后使用*/

printLine(data);

}

避免UAF

1. 释放内存后置空指针

2. 循环语句中进行内存动态分配或释放时,谨慎确认


云涯历险记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:漏洞学习:释放后使用-UAF
喜欢 (0)