当前位置: 主页 > 外烟分类 > 如何进行CVE-2017-16943-进出口-UAF脆弱性分析

如何进行CVE-2017-16943-进出口-UAF脆弱性分析

发布日期:2021-12-22 05:01 作者:shunf外烟
外烟资讯

本文向您展示了如何进行CVE-2017-16943-Exim-UAF漏洞分析。内容简单易懂,一定会让你大放异彩。希望通过这篇文章的详细介绍,能有所收获。

Exim是剑桥大学开发的基于GPL协议的开源软件,主要用于连接互联网上Unix系统的MTA服务器。

2017年11月25日,Exim正式修复了一个无法使用的漏洞。台湾省保安公司DEVCORE研究员Meh发现CVE号为CVE-2017-16943,发表POC。但是根据我们的分析和跟进,POC必须在配置文件中打开dkim,才能达到控制EIP,导致进程崩溃的效果。

2017年12月11日,Meh在DEVCORE官网公布了默认配置中漏洞和POC的具体细节。

360CERT全网资产检索平台显示,截至2017年12月15日,检索结果显示全球运行Exim的服务器超过百万台,全球影响力分布图如下:

POOL_PERM:意味着分配的内存是永久的,在进程结束之前不会释放。它包含一些需要共享的信息,例如配置信息和主机信息。在使用这个堆池分配之前,store_pool将被更改为POOL_PERM,然后调用store_get()。

在堆中分配一块内存,而不更改current_block[0]中的值。在随后的消息处理中,将在主池中分配一块0x2010。释放后,由于前一个perm池的块,释放的块不会与顶部块合并,成为无序的箱。此时,fd和bk指向主竞技场区域。再次前往store extend后,通过store_get获取主竞技场的指针,然后memcpy写入主竞技场,后续自由操作崩溃,RIP变成填充数据。

在devcore公布细节后,我们分析了如何通过默认配置来控制rip。其实原理和开dkim的配置差不多。有必要在top_chunk之前分配一个正在使用的堆块,以防止稍后释放的堆块与top_chunk合并。作者的概念证明是使用DATA发送足够的数据来扩展堆块。经过许多周期后,前一个堆块在此期间被释放,并成为一个大的无序bin块供后续分配。此时,top_chunk之前有一个正在使用的堆块,然后使用BDAT命令来控制rip。

根据meh的概念和思想,我们写了exp。通过控制rip跳转到fflush(stdout),并以covering _ IO _ FILE结构作为攻击代码,以cover(_ IO _ sync _ t,__sync) in _IO_jump_t虚拟表结构作为系统函数地址,执行攻击代码。

官方补丁确定要释放的堆块是否是最后一个堆块。如果不是,则无法释放,因此无法满足UAF条件,也无法触发漏洞。

以上内容是如何进行CVE-2017-16943-Exim-UAF漏洞分析。你学到什么知识或技能了吗?如果你想学习更多的技能或丰富你的知识,请关注行业信息渠道。

网友转载外烟请保留链接:本文链接如何进行CVE-2017-16943-进出口-UAF脆弱性分析,http://fiows.com/lunwenfenxiang/49478.html谢谢合作!



<<Bytom猜测合约的使用方法是什么?   【网站建设】企业为什么要定制网站?定制建设有哪些优势?>>

相关阅读:

iphone 11 pro max与iphone 12pro(2 max1) CES 2022-在Covid Surge、AMD和一加退学,加入微软、谷歌和英特尔。 iPhone 14谣言 – 发布日期,价格,SIM卡等(iphone14最新官方消息) 2022年最佳小手机