Exim BDAT 用后释放漏洞 CVE-2026-45185 使远程代码执行成为可能
CVE-2026-45185 (Dead.Letter) 是 Exim 的 BDAT 处理中的一个用后释放漏洞,影响 GnuTLS 构建 — CVSS 9.8,存在远程代码执行风险。已发布补丁。

执行摘要
Exim,广泛部署的开源邮件传输代理(MTA)用于类Unix系统,发布了紧急安全更新,解决了其BDAT(二进制数据)块处理中的一个关键使用后释放漏洞。该漏洞被跟踪为CVE-2026-45185并被称为Dead.Letter,CVSS得分为9.8,影响所有针对GnuTLS编译的Exim构建。未经身份验证的远程攻击者可以利用此漏洞触发内存损坏,并可能在邮件服务器上实现任意代码执行。Exim开发团队于2026年5月11日发布了版本4.98.1以修复此问题。运行GnuTLS的Exim的组织应将此视为关键优先补丁。
技术分析
根据Exim维护者发布的公告,CVE-2026-45185存在于BDAT块处理逻辑中。BDAT是SMTP的扩展,定义在RFC 3030中,允许以块的形式传输二进制数据,绕过base64或quoted-printable编码的需求。当MTA处理一系列特别制作的BDAT块时,漏洞表现为使用后释放条件。
具体来说,该漏洞发生在将BDAT块重新组装成完整的消息正文时。在某些条件下,与先前释放的块相关联的内存再次被访问,导致堆损坏。能够连接到Exim SMTP监听器(通常是端口25)的攻击者可以发送恶意的BDAT命令序列来触发此条件,无需任何身份验证。由于TLS终止与块重新组装缓冲区管理之间的交互差异,GnuTLS代码路径是唯一受影响的——OpenSSL代码路径不受漏洞影响。
成功利用可能允许攻击者覆盖Exim进程堆中的关键数据结构,可能导致以Exim守护进程(通常是exim用户)的权限执行任意代码。Exim团队已确认该漏洞可以远程利用,不需要事先访问服务器。
缓解措施与建议
运行Exim的系统管理员应立即升级到包含CVE-2026-45185修复的版本4.98.1或更高版本。修补后的版本可以从Exim官方网站和源代码库获得。
对于无法立即修补的组织,以下缓解措施可能会减少暴露:
- 限制SMTP访问:使用防火墙规则或TCP包装器将传入连接限制在SMTP端口(25)的已知邮件中继或受信任的IP范围内。这不会消除来自受信任发送者的风险,但减少了攻击面。
- 禁用BDAT支持:如果BDAT对您的邮件流不是必需的,可以通过从Exim配置文件(
/etc/exim/exim.conf)中删除bdat选项来禁用它。请注意,这可能会破坏依赖BDAT的发送者的消息传递。 - 监控利用尝试:检查SMTP日志中不寻常的BDAT命令序列或来自同一来源的重复连接尝试。异常模式可能表明扫描或利用尝试。
- 切换到OpenSSL:如果可行,用OpenSSL而不是GnuTLS重新构建Exim。公告明确指出OpenSSL代码路径不受影响。然而,这是一个重大的配置更改,应该进行彻底测试。
防御者还应监控邮件服务器的意外出站连接等后续利用活动,因为被破坏的Exim实例可能被用作横向移动的支点。
订阅更新
将最新的网络安全资讯直接发送到您的邮箱。