Exim 严重漏洞的详细信息已披露

发表 纠正性释放 进出口4.92.2 随着关键的消除 弱点 (CVE-2019-15846),在默认配置中可能会导致具有 root 权限的攻击者远程执行代码。 仅当启用 TLS 支持并通过将专门设计的客户端证书或修改值传递给 SNI 来利用该支持时,才会出现此问题。 漏洞 已确定 由夸利斯。

问题 现在 在处理程序中转义字符串中的特殊字符(string_interpret_escape() 来自 string.c),是由于字符串末尾的 '\' 字符在空字符 ('\0') 之前被解释并转义而引起的。 转义时,序列 '\' 和后面的空行尾代码被视为单个字符,并且指针移动到行外的数据,该数据被视为行的延续。

调用 string_interpret_escape() 的代码根据实际大小为排出分配一个缓冲区,并且暴露的指针最终位于缓冲区边界之外的区域。 因此,当尝试处理输入字符串时,会出现从分配的缓冲区边界之外的区域读取数据的情况,并且尝试写入未转义的字符串可能导致写入超出缓冲区的边界。

在默认配置下,在与服务器建立安全连接时,可以通过向 SNI 发送专门设计的数据来利用该漏洞。 还可以通过修改为客户端证书身份验证配置的配置中的peerdn值或导入证书时来利用该问题。 从发布开始就可能通过 SNI 和 Peerdn 进行攻击 进出口4.80,其中 string_unprinting() 函数用于取消打印peerdn和SNI内容。

漏洞利用原型已准备好通过 SNI 进行攻击,在带有 Glibc 的 Linux 系统上的 i386 和 amd64 架构上运行。 该漏洞利用堆区域上的数据覆盖,导致覆盖存储日志文件名的内存。 文件名替换为“/../../../../../../../../etc/passwd”。 接下来,包含发件人地址的变量将被覆盖,该变量首先保存在日志中,这允许您向系统添加新用户。

发行版发布的包含漏洞修复的软件包更新 Debian, Ubuntu, Fedora, SUSE/开放SUSE и FreeBSD的。 RHEL 和 CentOS 问题 不敏感,因为 Exim 未包含在其常规包存储库中(在 埃佩尔 обновление 已经 形成的但现在 未放置 到公共存储库)。 在 Exim 代码中,该问题通过一行代码解决了 修补,如果反斜杠位于行尾,则禁用反斜杠的转义效果。

作为阻止该漏洞的解决方法,您可以禁用 TLS 支持或添加
ACL 部分“acl_smtp_mail”:

拒绝条件= ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
拒绝条件= ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

来源: opennet.ru

添加评论