0x00 漏洞详情
日前,安全研究人员发现Exim邮件服务器存在一个远程命令执行漏洞,漏洞编号为CVE-2019-10149。该漏洞在默认配置下可被本地攻击者直接利用,通过低权限用户执行root权限命令,远程攻击者需要修改默认配置。为了在默认配置下远程利用该漏洞,远程攻击者需要与存在漏洞的服务器建立7天的连接(每隔几分钟发送1个字节)。
360CERT 判断此次漏洞影响面广,可造成本地提权并存在远程命令执行的风险,危害较为严重,建议广大用户及时更新。
本地利用
漏洞代码位于deliver_message()中:
代码中new->address保存的是邮件的收件人地址,如果将收件人地址写成${run{<command> <args>}}@localhost,则可以通过expand_string()以root权限执行任意命令。expand_string()的调用关系为:expand_string->child_open->execv
攻击效果如下:
远程利用
(1)默认配置
当目标Exim服务器使用默认配置时,攻击者需要与存在漏洞的服务器建立连接7天(每隔几分钟发送1个字节),利用条件较为苛刻,难度大。但由于Exim的代码非常复杂,可能存在其他能更快速利用的方法。
(2)非默认配置
当目标服务器使用以下配置时,攻击者可对其进行远程命令执行
a)管理员手动移除verify = recipient ACL配置;
b)管理员配置Exim可以识别收件人用户名中的标签(即@之前的部分),如通过local_part_suffix = + : -,攻击者可以将RCPT TO设为本地用户名+${run{…}}@localhost进行利用;
c)管理员配置Exim作为辅MX(Mail eXchange),将邮件转发至远程域,此时verify = recipient ACL只检查远程地址的域名部分(即@之后的部分),不检查标签。攻击者可以将RCPT TO设为${run{…}}@relay_to_domains进行利用。
0x01 影响版本
影响Exim 4.87~4.91版本
在4.87版本之前如果手动启用了EXPERIMENTAL_EVENT选项,服务器也会存在漏洞
0x02 修复建议
更新到最新版本4.92
0x03 时间线
2019-05-27 安全研究员向security@exim反馈漏洞报告
2019-05-28 安全研究员向distros@openwall反馈漏洞报告
2019-06-12 360CERT发布预警分析