一份新的安全公告揭示了全球最受欢迎的邮件传输代理(MTA)之一 Exim 的重大安全隐患。美国国家标准与技术研究院(NIST)网络安全负责人安德鲁・法萨诺(Andrew Fasano)披露了 Exim 4.99 版本中的两项严重漏洞,警告称此前的补丁未能彻底修复问题,留下了部分隐患,如今已引发了更深入、更危险的系统缺陷。
该披露于 2025 年 11 月 22 日发送给 Exim 安全团队,详细说明了涉及 SQLite 集成的一系列漏洞,这些漏洞可能允许远程攻击者破坏系统内存,甚至可能接管服务器控制权。
法萨诺指出,此前针对 CVE-2025-26794(一个涉及 ETRN 命令的 SQL 注入漏洞)的修复并不彻底。
虽然最初的补丁修复了 ETRN 这个特定的攻击向量,但并未解决
xtextencode() 函数中存在的根本问题。这个负责清理数据库密钥的函数,仍无法正确转义单引号字符(ASCII 39)。“提示数据库(hints db)仍存在注入风险”,法萨诺强调,该漏洞现在可以通过另一种途径被利用:速率限制访问控制列表(Ratelimit ACLs)。攻击者可以发送包含恶意 “发件人地址” 的特制电子邮件,向数据库中注入任意 SQL 命令。
虽然 SQL 注入本身已具备危险性,但法萨诺发现,它只是一个入口,会引发更严重的问题:堆缓冲区溢出(Heap Buffer Overflow)。
这个新漏洞存在于 Exim 处理数据库记录中
bloom_size 字段的方式中。系统会从数据库读取这个大小字段,但不进行任何验证,直接用它来确定内存中的数组边界。“系统不会验证
bloom_size 是否与实际数组大小匹配”,法萨诺在技术报告中解释道。通过将这两个漏洞结合利用,攻击者可以借助 SQL 注入植入一条包含超大恶意
bloom_size 的记录。当系统尝试使用这条 “恶意记录(poisoned record)” 时,写入的数据会远远超出分配的缓冲区,从而引发堆溢出。法萨诺已成功证明,该漏洞最多可覆盖 1.5MB 的内存。尽管由于地址空间布局随机化(ASLR)等现代防护机制的存在,法萨诺尚未实现完全的远程代码执行(RCE),但他确认该漏洞可实现 “可靠的崩溃预言机(crash oracle)”,并认为通过进一步研究,完全实现远程代码执行(RCE)是有可能的。该漏洞目前被编号为 CVE-2025-67896。
该攻击需要满足一系列特定的 “极端条件” 配置:
-
SQLite 支持:Exim 编译时必须启用
USE_SQLITE=yes; -
速率限制配置:配置中使用的速率限制,需要依赖攻击者可控的数据(如
$sender_address)作为密钥;- 使用默认的
per_addr且未设置显式密钥的配置不会受到影响,因为这类配置依赖客户端 IP 地址,而该地址无法通过 SMTP 被篡改。
- 使用默认的
该报告建议分配两个新的 CVE 编号,分别跟踪这两个不同的问题。对于修复方案,法萨诺建议 Exim 团队:
- 对数据库记录实施严格验证;
- 修复
xtextencode()中的字符串转义逻辑 —— 或者更彻底的方式,全面迁移至参数化查询,从根源上消除 SQL 注入风险。
运行集成了 SQLite 的 Exim 4.99 的管理员,应尽快升级到最新版本。








发表评论
您还未登录,请先登录。
登录