9 月 14 日,Cisco 给 Secure Email Gateway(原 ESA,邮件安全网关)发了一次罕见的"打包加固"公告,一口气披露 5 个 CVE,全按 CWE 归类,其中 4 个 CVSS 打到 9.8。最要命的是 CVE-2026-76461:攻击者只要发一封邮件,就能以 root 身份在设备上执行任意命令。当天它就被 CISA 收进了 KEV 目录,修复截止日 9 月 17 日——从披露到强制修复只给了 3 天,这个节奏很不寻常。
这篇文章把这封"邮件"里的攻击链拆开看,顺便说说它为什么比一般的网关漏洞更难收场。
漏洞本体:邮件解析逻辑里的 SQL 注入
官方描述很短:Cisco AsyncOS Software for Cisco Secure Email Gateway 的邮件解析逻辑(email parsing)对输入校验不足,导致 SQL 注入。后面半句才是重点:成功的注入"可以执行任意 SQL 语句,最终在底层操作系统上以 root 权限执行命令"。
关键字段:
- CVE-2026-76461,CWE-89(SQL Injection),CVSS 3.1 基础分 9.8
- 向量:
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H,网络可达、无需认证、无需交互,机密性/完整性/可用性全高 - Cisco Bug ID:
CSCwu56234,物理机和虚拟机都中招,无关配置 - 明确不受影响:Secure Email and Web Manager、Secure Web Appliance
注意这里有个容易忽略的细节:同一个公告里,另一个 CVE-2026-76443(CWE-707,命令/代码注入)才是"已知被在野利用"的那条,而 SQL 注入这条最初只标注为内部审查发现。但 Cisco 随后单独发了 SQL 注入的独立公告(cisco-sa-esa-inj-2bLVGmhX),把它从"加固包"里拆出来,9 月 17 日更新版本,明确它是被利用的那一个,并给出 IoC 检查方法。三天内从"内部发现"变成"在野利用",说明利用工具落地得很快。
攻击面为什么是邮件解析
ESA 的定位决定了它必须"拆开每一封邮件"才能做垃圾过滤、病毒扫描、DLP、内容策略。这意味着解析器要处理 MIME 结构、附件、编码、头部字段,是一个巨大的、面向不可信输入的攻击面。
SQL 注入出现在这个环节,说明解析过程里拼了数据库查询。AsyncOS 内部用数据库存储策略、隔离区(Spam Quarantine)、消息元数据。如果解析器把邮件里某个字段(比如发件人、主题、附件名)直接拼进 SQL 语句而没有参数化,攻击者就能在字段里塞 SQL 载荷。
Cisco 给的 IoC 命令把利用手法直接暴露了:
cisco-esa> grep -i "COPY.*TO PROGRAM" mail_logs
COPY ... TO PROGRAM 是 PostgreSQL 的经典"SQL 到 RCE"原语,把查询结果通过 COPY 写进某个程序的标准输入。攻击者用注入点执行 COPY (SELECT ...) TO PROGRAM 'sh -c ...',就拿到了命令执行。邮件网关内部用 PostgreSQL 做后端存储,这条路正好接得上。防护侧看到这条 grep 有输出,基本可以判定被打了。
从"一封邮件"到"整集群沦陷"
拿到 root 只是第一步。这个漏洞真正棘手的地方在横向移动,Cisco 在公告里专门用了一段警告:
ESA 设备可以组成集群(cluster),集群成员之间用 SSH 密钥对做认证。漏洞利用成功后,攻击者可以读取集群成员通信用的私有 SSH 密钥。持有这些密钥,就能进一步攻陷其它集群成员。
这不是单机事件,而是"一台失守,全集群跟着走"。Cisco 的建议很硬:只要集群里有一台被确认失陷,就必须把每一台成员都恢复到安全配置,因为密钥已经泄了,清掉一台没意义。
更麻烦的是取证。公告里有一句老老实实的免责:
利用成功后,威胁行为者可能获得 root 权限。由于这种访问级别,利用痕迹和 IoC 可能被删除或隐藏。
root 在手,日志随便改。所以 Cisco 建议管理员跨过受影响的设备,去网络日志和防火墙日志里找旁证——异常的外连上传、恶意 IP 下载。设备本身的日志此时已经不可信。
修复:没有 workaround,只能升级
这次公告第一次让我觉得"没有缓兵之计"是什么意思:
- 没有可用的 workaround,官方原话
No workarounds available - 修复版本:15.5 及更早 → 15.5.5-014;16.0 → 16.0.4-302;16.5 → 16.5.0-780
- Cisco 强烈建议所有低于 16.5 的版本直接迁到 16.5.0-780
- Cisco Secure Email Cloud 用户不用自己动手,官方称已全部升到 16.5.0-780
如果怀疑已经被打了,官方给的处置流程分两种:
物理机,联系 TAC,先开远程访问再让 Cisco 介入取证;关键是"记录取证信息"要放在动手前面。
虚机,公告明确说了"部署新实例会销毁配置和日志",所以顺序必须是:先保存取证数据 → 部署全新虚机(跑修复版)→ 重建配置 → 轮换所有凭据和加密材料 → 持续监控异常。凭据轮换这一步很容易被跳过,但只要 root 被拿过,上面所有的密钥、证书、口令就都不能再信了。
同批的另外 4 个 CVE
这次的"打包披露"方式值得一说:Cisco 把内部安全审查发现的问题按 CWE 归类,每一类分配一个 CVE,而不是一个洞一个 CVE。所以看到 CVE 数量少,不代表问题少。
| CVE | 最高分 | CWE | 类别 |
|---|---|---|---|
| CVE-2026-76440 | 9.8 | CWE-23 | 路径穿越(目录限制绕过、链接解析不当) |
| CVE-2026-76441 | 9.8 | CWE-284 | 访问控制不当(授权、认证、权限绕过) |
| CVE-2026-20353 | 9.8 | CWE-664 | 资源生命周期控制不当(资源耗尽、反序列化、初始化) |
| CVE-2026-76443 | 9.8 | CWE-707 | 中和不当(命令/SQL/代码注入、XSS)★ 含在野利用 |
| CVE-2026-76442 | 7.5 | CWE-1284 | 输入数量校验不当(无界数值字段) |
| CVE-2026-76461 | 9.8 | CWE-89 | SQL 注入 ★ 独立公告、在野利用 |
这张表本身就是一份"如果我是攻击者会从哪儿入手"的清单:路径穿越、访问控制、注入、反序列化,全是网关设备上的高频入口。加固公告和独立公告的关系也值得记:打包公告里的 CVE 只是"归类代表",真正的单点在独立公告里才有 IoC 和利用细节。
一个开发者的视角
邮件网关这类设备的安全模型有个结构性矛盾:它必须解析最不可信的数据(外网任意人发来的邮件),又必须持有很深的权限(要能改策略、动隔离区、连目录服务)。一旦解析层出问题,攻击者拿到的不是普通 Web 应用的低权 shell,而是设备底层的 root。
这次 CVE-2026-76461 给我的三点实操结论:
第一,参数化查询在哪个语言里都是底线。 SQL 注入能出现在 2026 年的商业安全产品里,说明"拼接字符串拼出来的 SQL"这个老问题根本没绝迹。解析器处理用户输入时,任何进数据库的字段都必须走参数绑定,没有例外。
第二,集群设备的密钥隔离要重新设计。 一台失守就带走全集群的 SSH 私钥,这违背了最小权限原则。集群成员之间的认证凭据应该做到"单点泄漏不等于全网沦陷",至少加上密钥轮换和相互认证的隔离。
第三,网关类设备的 IoC 检查要写进日常巡检。 如果你管着 ESA/SEG,这几条命令现在就该跑一遍:
# 查 SQL 注入利用痕迹
cisco-esa> grep -i "COPY.*TO PROGRAM" mail_logs
# 确认版本,低于这些版本必须升级
# 15.5 及更早 -> 15.5.5-014
# 16.0 -> 16.0.4-302
# 16.5 -> 16.5.0-780
cisco-esa> version
root 级的漏洞,事后补救永远比事前升级贵。CISA 给 3 天期限不是拍脑袋,邮件网关通常直接暴露在公网,从披露到扫描器跟进、再到批量利用,窗口按小时算。
⚠️ 网络安全免责声明
本文内容仅供技术研究与安全学习之用。文中描述的漏洞分析、攻击链拆解和代码示例均基于公开披露的安全研究,旨在帮助开发者理解攻击原理、提升安全意识和防御能力。
请勿将本文所述技术用于任何未经授权的安全测试、渗透攻击或非法用途。任何因滥用本文信息而造成的法律后果,由使用者自行承担,与本文作者无关。
如发现系统安全漏洞,请通过合法渠道向相关厂商或平台报告,共同维护网络安全生态。
参考
- Cisco Advisory: Cisco Secure Email Gateway SQL Injection Vulnerability
- Cisco Advisory: Secure Email Gateway / Email and Web Manager Security Hardening: September 2026
- CISA KEV: CVE-2026-76461(added 2026-09-14)
浙公网安备 33010602011771号