内容简介:当动态分配的内存释放时,该内存的内容是不确定的,有可能保持完整并可以被访问,因为什么时候重新分配或回收释放的内存块是内存管理程序决定的,但是,也可能该内存的内容已经被改变,导致意外的程序行为。因此,当内存释放之后,保证不再对它进行写入或读取。详细请参见 CWE ID 416: Use After Free。由内存管理不当导致的问题是 C/C++ 程序中常见的漏洞。释放后使用会导致可被利用的潜在风险,包括程序异常终止、任意代码执行和拒绝服务攻击等。2018年1月至11月,CVE 中共有134条漏洞信息与其相
1、释放后使用
当动态分配的内存释放时,该内存的内容是不确定的,有可能保持完整并可以被访问,因为什么时候重新分配或回收释放的内存块是内存管理程序决定的,但是,也可能该内存的内容已经被改变,导致意外的程序行为。因此,当内存释放之后,保证不再对它进行写入或读取。详细请参见 CWE ID 416: Use After Free。
2、 释放后使用的危害
由内存管理不当导致的问题是 C/C++ 程序中常见的漏洞。释放后使用会导致可被利用的潜在风险,包括程序异常终止、任意代码执行和拒绝服务攻击等。2018年1月至11月,CVE 中共有134条漏洞信息与其相关。部分漏洞如下:
| CVE | 漏洞概述 |
|---|---|
| CVE-2018-1000051 | Artifex Mupdf 版本的 fz_keep_key_storable 中存在一个释放后使用漏洞,可导致拒绝服务或代码执行问题。通过诱骗受害者打开一个特殊构造的 PDF 文件,该漏洞即可遭利用。 |
| CVE-2018-17474 | 谷歌 Chrome 浏览器70.0.3538.67 之前版本 Blink 引擎的 HTMLImportsController 中存在一个释放后使用漏洞,很有可能导致远程攻击者通过一个特殊构造的 HTML 页面利用堆损坏问题。 |
| CVE-2018-15924 | Adobe Acrobat 和 Reader 2018.011.20063及之前版本、2017.011.30102 及之前版本、2015.006.30452 及之前版本中存在释放后使用漏洞。远程攻击者可利用该漏洞执行任意代码。 |
3、示例代码
示例源于 Samate Juliet TestSuite for C/C++ v1.3 (https://samate.nist.gov/SARD/testsuite.php),源文件名:CWE416_Use_After_Free__malloc_free_char_01.c。
3.1缺陷代码
在示例代码中,在第29行使用 malloc() 进行内存分配,并在第35行使用 free() 对分配的内存进行了释放,当在第37行对已经释放的内存进行读取时,导致释放后使用问题。
使用360代码卫士对上述示例代码进行检测,可以检出“释放后使用”缺陷,显示等级为高。如图1所示:
图1:释放后使用检测示例
3.2 修复代码
在上述修复代码中,Samate 给出的修复方式为:在第30行使用 malloc()进行内存分配,并在第36行处使用 free() 进行释放,释放后不在对该内存进行其他操作。
使用360代码卫士对修复后的代码进行检测,可以看到已不存在“释放后使用”缺陷。如图2:
图2:修复后检测结果
4 、如何避免释放后使用
要避免释放后使用,需要注意以下几点:
(1) 释放内存时请务必置空指针,虽然这种方法针对多重或复杂数据结构利用的有效性有限,但可以从一定程度上规避一部分问题。 (2) 在循环语句中进行内存分配或释放时,需谨慎确认是否存在问题。 (3) 使用源代码静态分析 工具 进行自动化的检测,可以有效的发现源代码中的释放后使用问题。
以上所述就是小编给大家介绍的《【缺陷周话】第11期:释放后使用(UAF)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 【缺陷周话】第13期:二次释放
- 【缺陷周话】第15期——资源未释放:文件
- 【缺陷周话】第22期:错误的内存释放对象
- 【缺陷周话】第31期:错误的内存释放方法
- 漫画:如何证明sleep不释放锁,而wait释放锁?
- golang内存释放
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
风吹江南之互联网金融
陈宇(江南愤青) / 东方出版社 / 2014-6-1 / 55元
随着中国互联网金融浪潮高涨,P2P、众筹、余额宝、微信支付等新生事物层出不穷,加之大数据等时髦概念助阵,简直是乱花渐欲迷人眼,令媒体兴奋,公众狂热。那么,互联网金融真的能“颠覆”传统金融吗?当互联网思维对撞传统金融观念,是互联网金融的一统天下,还是传统金融业的自我革新?究竟是谁动了金融业的奶酪? 本书作者早期试水创立具有互联网金融雏形的网站,后来成为互联网金融的资深投资人,基于其多年在该领域......一起来看看 《风吹江南之互联网金融》 这本书的介绍吧!