如何实现C++程序释放后使用导致的漏洞分析

1、释放后使用

当动态分配的内存释放时,该内存的内容是不确定的,有可能保持完整并可以被访问,因为什么时候重新分配或回收释放的内存块是内存管理程序决定的,但是,也可能该内存的内容已经被改变,导致意外的程序行为。因此,当内存释放之后,保证不再对它进行写入或读取。

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缺陷代码

如何实现C++程序释放后使用导致的漏洞分析

使用360代码卫士对上述示例代码进行检测,可以检出“释放后使用”缺陷,显示等级为高。如图1所示:

如何实现C++程序释放后使用导致的漏洞分析

图1:释放后使用检测示例

3.2 修复代码

如何实现C++程序释放后使用导致的漏洞分析

在上述修复代码中,Samate 给出的修复方式为:在第30行使用 malloc()进行内存分配,并在第36行处使用 free() 进行释放,释放后不在对该内存进行其他操作。

使用360代码卫士对修复后的代码进行检测,可以看到已不存在“释放后使用”缺陷。如图2:

如何实现C++程序释放后使用导致的漏洞分析

图2:修复后检测结果

4 、如何避免释放后使用

要避免释放后使用,需要注意以下几点:

(1) 释放内存时请务必置空指针,虽然这种方法针对多重或复杂数据结构利用的有效性有限,但可以从一定程度上规避一部分问题。

(2) 在循环语句中进行内存分配或释放时,需谨慎确认是否存在问题。

(3) 使用源代码静态分析工具进行自动化的检测,可以有效的发现源代码中的释放后使用问题。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

文章标题:如何实现C++程序释放后使用导致的漏洞分析,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/27283

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云亿速云认证作者
上一篇 2022年9月20日 上午12:14
下一篇 2022年9月20日 上午12:15

相关推荐

  • windows会声会影如何导出视频x9

    会声会影导出视频x9的方法 1、首先点击图示位置的“共享”按钮。 2、然后在图示框中选择想要导出的视频格式。 3、在图示位置可以调整具体参数。 4、最后点击“开始”就可以了。 以上就是“windows会声会影如何导出视频x9”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,…

    2022年9月15日
    13100
  • css中设置长度的单位是什么

    css长度单位有:1、em,相对字体长度单位,它的单位长度是根据元素的文本文字垂直长度来决定的;2、rem,相对字体长度单位,只相对根元素即html元素字体大小来确定其长度;3、%,相对于父元素宽度或字体大小的百分比;4、px,像素,是相对于显示器屏幕分辨率而言的;5、vw,相对于浏览器窗口的宽度;…

    2022年9月22日
    21200
  • windows任务管理器磁盘100%怎么解决

    任务管理器磁盘100%分析及解决方法 原因及解决方法如下: 一、当Windows Defender进行扫描时,如果再进行其他的工作,磁盘占用率就达到了100%。 在搜索栏输入gpedit.msc打开组策略编辑器,定位到“计算机配置-管理模板-Windows组建-Windows Defender-扫描…

    2022年9月6日
    37800
  • windows ToDesk退出了怎么继续登录

    ToDesk退出了继续登录的方法: 1、退出后,重新打开ToDesk,然后点击右上角的“立即登录” 2、在其中选择上一次的登录方法进行登录就可以继续使用了。 3、还可以点击左上角的密码登录,使用账号密码来登录。 4、登录完成后,在设备列表中就可以重新连接之前连接过的设备了。 到此,相信大家对“win…

    2022年9月21日
    28700
  • windows microsoft edge能不能卸载

    “microsoft edge”不能卸载是没有影响的;“microsoft edge”是微软与windows10同步推出的一款浏览器,其中支持内置Cortana语音功能,该浏览器是系统中自带的应用程序,无法通过程序选项完成卸载。 本教程操作环境:windows10系统、DELL G3电脑。 micr…

    2022年9月15日
    86700
  • WordPress插件WooCommerce任意文件删除漏洞怎么解决

    技术细节 WordPress的权限处理机制主要是通过给不同角色提供不同的功能来实现的,当商铺管理员角色被定义之后,它便会给这个角色分配edit_users功能,这样他们就可以直接管理商铺的客户账号了。整个权限分配过程发生在插件插件饿的安装过程当中。woocommerce/includes/class…

    2022年8月30日
    27200
  • windows丢包率高如何解决

    解决方法: 1、有些情况是因为线路故障导致的,这种情况需要和线路的供应商来进行解决。 2、对于设备方面来说,很多都是设置不当和网络接口的光纤收发器故障导致的。 3、还有就是网络的问题,比如病毒和网线的连接距离太长导致的网络故障, 还有操作系统的问题,比如网卡问题和网络运营线路问题,可以尝试使用pin…

    2022年8月29日
    68800
  • ai如何转曲文件

    ai转曲文件的方法: 1、首先双击桌面的ai软件,然后打开。 2、之后去点击任务选项栏中的“选择”。 3、点击弹出菜单中的“全部”。 4、之后点击任务选项中的“文字”。 5、点击文字下面的“创建轮廓”即可。 以上就是“ai如何转曲文件”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很…

    2022年9月1日
    91500
  • windows会声会影x5如何导出视频

    会声会影x5导出视频的方法 1、我们可以在界面的左上角或者上方找到“分享”按钮,点击它。 2、然后选择想要导出的方式,一般我们选择“创建视频文件”。 3、然后我们点击如图“创建视频文件”可以选择视频的格式。 4、这里我们选择mp4格式(大家可以根据需要自行选择),然后还可以选择更细致的格式。 5、选…

    2022年9月15日
    18900
  • LDAP注入该如何理解

    1、LDAP 注入 LDAP (Light Directory Access Portocol) 是基于X.500标准的轻量级目录访问协议,提供访问目录数据库方法的服务和协议,常用于与目录数据库组成目录服务。其中目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,类似于Lin…

    2022年9月20日
    90400
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部