
最近,在夏季初,由于漏洞CVE-2019-10149( 紧急将Exim更新为4.92- 主动感染/ Habr ),人们强烈要求将Exim 更新到4.92版 。 几天前,事实证明,恶意软件Sustes决定利用此漏洞。
现在所有紧急更新的代码都可以再次感到``高兴'':2019年7月21日,Zerons研究人员在将TLS用于4.80至4.92.1(含)版本时发现了Exim Mail Transfer代理(MTA)中的一个严重漏洞,从而允许使用特权特权 ( CVE)远程执行代码 -2019-15846 )。
脆弱性
建立安全的TLS连接时同时使用GnuTLS和OpenSSL库时,存在此漏洞。
根据开发人员Heiko Schlittermann的说法,Exim中的配置文件默认情况下不使用TLS,但是,许多发行版会在安装过程中创建必要的证书,并包括安全连接。 较新版本的Exim还设置了tls_advertise_hosts = *选项并生成必要的证书。
取决于配置。 大多数发行版默认情况下都启用它,但是Exim需要证书+密钥才能用作TLS服务器。 发行版可能会在发行过程中创建证书。 较新的Exims的tls_advertise_hosts选项默认为“ *”,如果未提供,则创建一个自签名证书。
该漏洞本身包含错误的SNI处理(服务器名称指示,这是RFC 3546中于2003年引入的技术,用于在TLS握手期间请求客户端提供有效的域名证书, TLS SNI标准的分发/ WEBO集团公司的博客/ Habr )。 攻击者发送以反斜杠(“ \”)和空字符(“ \ 0”)结尾的SNI就足够了。
Qualys研究人员在string_printing(tls_in.sni)函数中发现了一个错误,即错误的“ \”转义。 结果,反斜杠以未转义的形式写入打印假脱机头文件。 此外,spool_read_header()函数会读取具有特权权限的文件,这会导致堆溢出。
值得注意的是,目前,Exim开发人员通过在易受攻击的远程服务器上执行命令创建了PoC漏洞,但该漏洞尚未公开。 由于该错误的易操作性,这只是时间问题,而且时间很短。
在这里可以找到有关Qualys的更详细的研究。

在TLS中使用SNI
潜在脆弱的公共服务器数量
根据大型托管服务提供商E-Soft Inc的统计,截至9月1日,租赁服务器上70%以上的主机使用4.92版。
E-Soft Inc公司统计
如果您使用搜索引擎Shodan ,则从服务器数据库中的5,250,000开始:
- 使用Exim 4.92约3,500,000(使用SSL / TLS约1,380,000);
- 超过74,000个用户使用4.92.1(使用SSL / TLS的用户大约为25,000)。
因此,大约有150万个 Exim潜在易受攻击的公开已知服务器。

在Shodan中查找Exim服务器
防护等级