Exim BDAT Use-After-Free RCE (CVE-2026-45185)

漏洞信息
漏洞名称Exim BDAT Use-After-Free 远程代码执行
漏洞编号CVE-2026-45185
CVSS评分9.8 (Critical)
影响范围Exim 4.97 – 4.99.2 (GnuTLS构建)
Exim BDAT Vulnerability CVE-2026-45185
Exim邮件服务器BDAT协议处理漏洞

Exim是一款广泛部署于Unix/Linux系统的开源邮件传输代理(MTA),负责接收、路由和投递电子邮件。全球大量邮件服务器依赖Exim处理日常邮件流量。近日,Exim发布安全更新,修复了一个危急级别的高内存损坏漏洞CVE-2026-45185,该漏洞影响所有使用GnuTLS库构建的Exim 4.97至4.99.2版本,攻击者可通过精心构造的BDAT数据包在未认证的情况下实现远程代码执行(RCE)。

安全研究人员将该漏洞命名为Dead.Letter,CVSS评分为9.8分(危急)。该漏洞属于use-after-free类型,触发条件极为宽松,攻击者仅需与目标建立TLS连接并支持CHUNKING(BDAT)SMTP扩展即可完成利用,无需服务器进行任何特殊配置。

漏洞触发原理

该漏洞存在于Exim的二进制数据传输(BDAT)消息体解析过程中,当TLS连接由GnuTLS库处理时触发。具体触发流程如下:

  1. 客户端在邮件传输过程中发送TLS close_notify 告警,此时邮件体尚未传输完成
  2. 客户端在同一TCP连接上继续发送一个明文字节作为最后一个数据包
  3. Exim在TLS会话拆除时释放其TLS传输缓冲区
  4. 嵌套的BDAT接收包装器仍在处理传入字节,调用 ungetc() 函数
  5. ungetc() 将单字节(\n,换行符)写入已释放的内存区域
  6. 该单字节写入恰好落在Exim分配器的元数据区域,导致堆(heap)结构损坏
  7. 攻击者利用此堆损坏获得进一步的原语(primitives),最终实现远程代码执行

XBOW安全实验室负责人Federico Kirschbaum在技术分析中详细描述:

在TLS关闭期间,Exim释放其TLS传输缓冲区,但嵌套的BDAT接收包装器仍可以处理传入字节,最终调用 ungetc(),将单个字符(换行符)写入已释放区域。这个单字节写入落在Exim分配器的元数据上,破坏了分配器的内部形状,攻击者利用该损坏获得进一步的原语。

XBOW Exim BDAT Vulnerability Analysis
XBOW技术分析原文:https://xbow.com/blog/dead-letter-cve-2026-45185-xbow-found-rce-exim

受影响版本与限制

  • 全部受影响范围:Exim 4.97 至 Exim 4.99.2(包含)
  • 关键限制条件:仅影响编译时启用 USE_GNUTLS=yes 的GnuTLS构建版本
  • 不受影响:使用OpenSSL等其他TLS库的Exim构建版本

由于触发漏洞几乎不需要服务器进行任何特殊配置,因此实际威胁范围极广。攻击者只需能够与目标建立TLS连接并支持CHUNKING(BDAT)SMTP扩展即可利用此漏洞。

漏洞发现

该漏洞由XBOW安全实验室负责人 Federico Kirschbaum 于2026年5月1日发现并报告。XBOW是一家专注于自主漏洞发现与安全测试的网络安全公司。

XBow将此次漏洞描述为迄今为止在Exim中发现的最高质量漏洞之一,并指出触发该漏洞要求服务器几乎无需任何特殊配置。

修复方案

该问题已在Exim 4.99.3版本中得到彻底修复。官方修复方案确保在收到TLS close_notify通知时,输入处理栈被干净地重置,防止过期指针被使用。

建议所有用户立即升级到Exim 4.99.3或更高版本。

目前没有已知的临时缓解方案,升级是唯一有效的修复方式。

历史背景

这并非Exim首次被发现存在关键use-after-free漏洞:

  • 2017年12月:Exim修复了SMTP守护进程中的use-after-free漏洞 CVE-2017-16943(CVSS 9.8),未认证攻击者可利用精心构造的BDAT命令实现远程代码执行,接管邮件服务器。
  • 多年来,Exim一直是邮件安全领域的重点关注目标,其代码复杂度与历史遗留问题使得安全漏洞时有发生。

影响评估

由于Exim在全球邮件基础设施中的广泛部署,此次漏洞的影响可能涉及:

  • 企业邮件服务器:大量使用Exim作为邮件网关的企业
  • 云邮件服务提供商:基于Exim + GnuTLS构建的云邮件平台
  • 主机托管服务商:为大量客户提供邮件托管的IDC/主机服务商
  • 政府机构:使用Linux邮件服务器的政府部门

检测与监控

  1. 版本检查
    exim -bV
  2. TLS库检查
    ldd /usr/sbin/exim | grep gnutls
  3. 日志监控:关注Exim日志中的异常BDAT处理记录
  4. 流量分析:监控发送 close_notify 后立即发送额外字节的SMTP连接

参考链接

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注