云涯历险记

热爱可抵万难

云涯历险记

热爱可抵万难

漏洞学习

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

概念

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

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

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

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. 循环语句中进行内存动态分配或释放时,谨慎确认