CVE-2020-8794:存在4年之久的OpenBSD SMTP RCE漏洞 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

CVE-2020-8794:存在4年之久的OpenBSD SMTP RCE漏洞

ang010ela 资讯 2020-02-26 10:21:32
881712
收藏

导语:​研究人员在OpenBSD SMTP服务器中发现一个存在4年之久的RCE漏洞,威胁多个Linux发行版本。

OpenSMTPD应用于许多基于unix的操作系统中,包括FreeBSD, NetBSD, macOS, Linux (Alpine, Arch, Debian, Fedora, CentOS)等。安全研究人员在OpenSMTPD邮箱服务器中发现了一个安全漏洞。攻击者利用该漏洞可以在底层操作系统上以root权限运行shell命令。

Bug存在超过4年

CVE-2020-8794漏洞是OpenBSD 的邮件服务器OpenSMTPD默认安装的一个远程代码执行漏洞。Qualys发布报告称该漏洞是2015年12月(commit 80c6a60c)引入的一个越界漏洞。该漏洞自2015年12月开始可以利用,在2018年5月之前可以以非root用户远程利用和执行任意shell命令,2018年5月后可以以root权限远程利用和执行任意shell命令。

因为该漏洞存在于OpenSMTPD的客户端代码中,因此需要考虑两个场景:

客户端漏洞利用。该漏洞是OpenSMTPD默认配置远程利用漏洞。虽然OpenSMTPD默认只监听localhost,但是也会接收来自本地用户的邮件,并转发至远程服务器。如果攻击者控制了远程服务器,那么就可以在有漏洞的OpenSMTPD安装中执行任意shell命令。

服务器端漏洞利用。首先,攻击者必须连接到OpenSMTPD服务器,并发送一个创建bounce的邮件。然后当OpenSMTPD连接到邮件服务器来传播bounce时,攻击者就可以利用OpenSMTPD的客户端漏洞。最后,对于要执行的shell命令,攻击者必需使OpenSMTPD奔溃, 并等待重启。

PoC

研究人员创建了一个该漏洞的简单利用,并成功在OpenBSD 6.6, OpenBSD 5.9

, Debian 10 (稳定版, Debian 11 (测试版), 和Fedora 31上进行了测试。由于要等待补丁,因此,研究人员决定在2月26日之后发布漏洞利用的详细细节。

漏洞细节

SMTP客户端会连接到SMTP服务器,并发送类似EHLO、MAIL FROM、RCPT TO这样的命令。SMTP服务器会响应单行或多行的response:

· 第一行是以3位数字和('-')开头的,如"250-ENHANCEDSTATUSCODES";

· 最后一行同样是以三位数字和空格(' ')加文本结尾的,如"250 HELP"。

在OpenSMTPD客户端代码中,多行回复是由mta_io()函数分析的:

1098 static void
1099 mta_io(struct io *io, int evt, void *arg)
1100 {
....
1133         case IO_DATAIN:
1134             nextline:
1135                 line = io_getline(s->io, &len);
....
1146                 if ((error = parse_smtp_response(line, len, &msg, &cont))) {

第一行 (when line[3] == '-')会连接到一个大小为2KB的replybuf:

------------------------------------------------------------------------------
1177                 if (cont) {
1178                         if (s->replybuf[0] == '\0')
1179                                 (void)strlcat(s->replybuf, line, sizeof s->replybuf);
1180                         else {
1181                                 line = line + 4;
....
1187                                         (void)strlcat(s->replybuf, line, sizeof s->replybuf);
1188                         }
1189                         goto nextline;
1190                 }
------------------------------------------------------------------------------

最后一行 (when line[3] != '-') 也会连接到replybuf:

------------------------------------------------------------------------------
1195                 if (s->replybuf[0] != '\0') {
1196                         p = line + 4;
....
1201                         if (strlcat(s->replybuf, p, sizeof s->replybuf) >= sizeof s->replybuf)
------------------------------------------------------------------------------

如果最后一行的三位数字后面不是空格和文本,p(1196行)就会指向'\0'后的第一个字符,越界字符串会连接到replybuf中(1201行)。

补丁

目前,OpenSMTPD 6.6.4p1版本中中已经修复了该漏洞,开发人员建议用户尽快升级到最新版本。

更多技术细节参见:https://www.qualys.com/2020/02/24/cve-2020-8794/lpe-rce-opensmtpd-default-install.txt

本文翻译自:https://www.bleepingcomputer.com/news/security/new-critical-rce-bug-in-openbsd-smtp-server-threatens-linux-distros/如若转载,请注明原文地址:
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务