Exim 新 BDAT 漏洞致 GnuTLS 构建面临代码执行风险
- 浏览次数 26
- 喜欢 0
Exim 发布了安全更新,以修复一个严重的安全问题。该问题影响特定配置,可能导致内存损坏和潜在的代码执行。
Exim 是一款开源邮件传输代理(MTA),专为类 Unix 系统设计,用于接收、路由和传递电子邮件。
此漏洞编号为 CVE - 2026 - 45185,又名 “Dead.Letter”,是 Exim 在通过 GnuTLS 处理 TLS 连接时,其二进制数据传输(BDAT)消息体解析中的一个释放后使用漏洞。
Exim 在今日发布的公告中称:“当客户端在消息体传输完成前发送 TLS 关闭通知警报,随后在同一 TCP 连接上以明文形式发送最后一个字节时,在 BDAT 消息体处理过程中就会触发此漏洞。”
“这一系列事件可能导致 Exim 写入一个在 TLS 会话终止时已释放的内存缓冲区,从而导致堆损坏。攻击者只需能够建立 TLS 连接并使用分块(BDAT)SMTP 扩展即可。”
该问题影响 Exim 从 4.97 到 4.99.2(含)的所有版本。不过,它仅影响使用 “USE_GNUTLS = yes” 的构建版本,这意味着依赖 OpenSSL 等其他 TLS 库的构建版本不受影响。
自动网络安全测试平台 XBOW 安全实验室负责人费德里科・基尔希鲍姆(Federico Kirschbaum)于 2026 年 5 月 1 日发现并报告了该漏洞。
基尔希鲍姆表示:“在 TLS 关闭期间,Exim 会释放其 TLS 传输缓冲区,但嵌套的 BDAT 接收包装器仍可处理传入字节,并最终调用 ungetc () 函数,该函数会向已释放区域写入单个字符(\n)。这一字节的写入落在 Exim 的分配器元数据上,破坏了分配器的内部结构;随后,攻击者可利用这种破坏获取更多原语。”
XBOW 将该漏洞描述为 Exim 迄今为止发现的 “最高级别漏洞之一”,并补充说触发该漏洞几乎无需在服务器上进行特殊配置。
4.99.3 版本已修复此问题。建议所有用户尽快升级。目前没有其他缓解措施可解决该漏洞。
Exim 指出:“此修复确保在活动的 BDAT 传输期间收到 TLS 关闭通知时,输入处理栈能被彻底重置,防止使用无效指针。”
这并非 Exim 首次被披露存在严重的释放后使用漏洞。2017 年末,Exim 修复了 SMTP 守护进程中的一个释放后使用漏洞(CVE - 2017 - 16943,CVSS 评分:9.8),未经身份验证的攻击者本可通过特制的 BDAT 命令利用该漏洞实现远程代码执行,并控制邮件服务器。