Exim是一个MTA(Mail Transfer Agent,邮件传输代理)服务器软件,该软件基于GPL协议开发,是一款开源软件。该软件主要运行于类UNIX系统。通常该软件会与Dovecot或Courier等软件搭配使用。
而近日,黑鸟从一些渠道发现,Exim官网更新了最新4.92版本,并发布通告称,其Exim 4.87(包括) 到 4.91(包括)版本存在远程命令执行漏洞。
点击目录可以发现,其历史曾经报3个漏洞,分别为缓冲区溢出"CVE-2018-6789",远程代码执行"CVE-2017-16943"和拒绝服务"CVE-2017-16944"漏洞
http://www.exim.org/static/doc/security/
而本次爆出的远程命令执行漏洞编号则为CVE-2019-10149。漏洞由Qualys公司发现并披露。
漏洞描述
该漏洞允许远程攻击者在目标系统上执行任意shell命令。
由于/src/deliver.c中的deliver_message()函数中的电子邮件地址验证不充分,因此存在漏洞。
未经身份验证的攻击者可以远程发送包含特制电子邮件地址的电子邮件,并通过具有超级用户权限的execv(),进行调用并在目标系统上执行任意操作系统命令。
经过身份验证的本地用户也可以利用此漏洞提升系统权限。
成功利用此漏洞可能会导致存在漏洞的系统完全受损。(小心测试)
漏洞细节
在披露细节之前,Qualys研究员强调了,该漏洞在本地和非默认情况下可以轻易利用。据他们所知,在默认情况下,远程攻击需要很长时间才能成功。也许意味着远程攻击需要长时间进行研究构造漏洞利用
在对Exim邮件服务器的最新更改进行代码审计期间
(https://en.wikipedia.org/wiki/Exim),Qualys研究员发现了一个RCE漏洞版本4.87至4.91(包含)。在这种特殊情况下,RCE表示远程命令执行,而不是远程代码执行:攻击者可以以root身份执行execv()的任意命令; 不存在内存损坏或涉及ROP(面向返回编程)。
此漏洞可由本地攻击者立即利用(以及某些非默认配置中的远程攻击者)。远程
在默认配置中利用此漏洞,即攻击者必须保持与易受攻击的服务器的连接打开7天(通过每隔几分钟发送一个字节)。但是,因为Exim的代码极其复杂,我们无法保证这一点开发方法独特; 可能存在更快的方法。
自4.87版(2016年4月6日发布)以来,Exim在默认情况下很容易受到攻击,当#ifdef EXPERIMENTAL_EVENT 设置为 #ifndef DISABLE_EVENT,并且如果启用了EXPERIMENTAL_EVENT,旧版本也可能容易受到攻击。)
该漏洞在2019年2月10日发布的Exim 4.92中得到修补(手动打码),但在Exim团队发布v4.92时,他们并不知道他们修复了一个主要的安全漏洞。
易受攻击的代码位于deliver_message()中:
因为expand_string()识别“$ {run {<command> <args>}}”的扩展项
并且由于new-> address是邮件的收件人正在收件的过程,因此本地攻击者只需简单发送邮件到
"${run{...}}@localhost" (黑鸟觉得应该是构造成类似这样的邮件地址)
(其中“localhost”是Exim的一个本地域)并以root身份执行任意命令(默认情况下,deliver_drop_privilege为false):
然后原邮件就省略掉细节了好像,我这看是这样子的,不懂的看源码应该可以复现吧(大概)
这里还提到了远程利用的问题,其中说明了一下本地提权的方法不能用于远程攻击,因为Exim默认情况下的“verify = recipient”ACL(访问控制列表)配置需要收件人地址的本地部分的用户名称(也就是在@符号之前的部分):
然后又略了。。
紧接着,Qualys又说道,他们最终设计了一种精心设计的方法在其默认配置中来远程利用Exim
但他们首先确定了各种易于远程利用的非默认配置:
1、如果"verify = recipient"ACL 被管理员手动删除(可能是为了防止通过RCPT TO进行用户名枚举),那么本地漏洞利用方法也可以远程利用。
2、如果Exim配置为识别本地部分的标签收件人的地址
(例如,通过“local_part_suffix = + *: - *”),然后远程攻击者可以简单地重用本地漏洞利用,使用RCPT TO “balrog + $ {run {...}} @ localhost”(其中“balrog”是本地用户的名称)。
3、如果Exim配置为将邮件中继到远程域,则为辅助MX(Mail eXchange),然后远程攻击者可以简单地重用本地漏洞利用方法,RCPT为“$ {run {...}} @ ... zad.dum”
(其中“khazad.dum”是Exim的relay_to_domains之一)。
目前“verify = recipient”ACL只能检查远程的域部分地址(@符号后面的部分),而不是本地部分。
然后默认配置的远程漏洞利用的方法。
又略掉了。。
总而言之,从一些细节中,黑鸟认为实际上是可以看到一些东西的,节后再看看。
最后
在发给Linux发行版维护者的电子邮件中,Qualys表示该漏洞“非常容易被利用”,并预计攻击者会在未来几天内提出漏洞利用代码。
此Exim缺陷目前在CVE-2019-10149标识符下进行跟踪,但Qualys将其称为“ Wizard的回归”,因为该漏洞类似于90年代影响Sendmail电子邮件服务器的古老WIZ和DEBUG漏洞。
而根据2019年6月的电子邮件服务器市场份额报告,只有4.34%的Exim服务器运行最新的4.92版本。
从数据上看,全球范围内受漏洞影响的版本 4.87到4.91占据了绝大部分,意味着装有Exim的邮件服务器绝大多数都存在安全风险。
从全球角度出发,可以看出,美国存在Exim软件最多,终于有一次不是中国排第一了。
也就是说,说句不好听的,研究好这个,可以对**有很多的帮助。
可以研究一二。
当然,如果用了该软件的同学,记得上官网,下载最新的,然后更新,官网就在下面
参考链接:
主要是看第一个
https://www.openwall.com/lists/oss-security/2019/06/05/4
http://www.exim.org/static/doc/security/CVE-2019-10149.txt
https://www.cybersecurity-help.cz/blog/560.html
◆来源:黑鸟
◆本文版权归原作者所有,如有侵权请联系我们及时删除