Kobold Letters:HTML邮件中的隐形钓鱼攻击

2026-07-01 09:38:00

上海辰童科技有限公司

Kobold Letters:HTML邮件中的隐形钓鱼攻击

一封正常的邮件,转发后变成钓鱼陷阱——CSS选择器如何绕过所有传统安全检测

Kobold Letters:HTML邮件中的隐形钓鱼攻击

摘要:你的经理转发给你一封邮件:"有个客户问了几个问题,你帮忙看下。"你打开邮件,内容是正常的客户咨询。你回复了。但如果你当时把这封邮件转发给同事,他们看到的会是完全不同的内容——一个精心构造的钓鱼链接,而"原发件人"是你和你的经理。这不是科幻。这种攻击技术有一个名字:Kobold Letters。

技术原理

Kobold Letters 由 Lutra Security 的安全研究员在 2024 年发现并命名。"Kobold"是日耳曼民间传说中的精灵——平时看不见,只在特定条件下显现。这个命名精准地描述了攻击的本质。

核心机制:大多数邮件客户端(包括 Gmail、Outlook、Apple Mail)支持在 HTML 邮件中使用 CSS 样式。当一个邮件被转发时,原始邮件在 DOM(文档对象模型)中的位置会发生变化。攻击者利用的就是这个特性。通过精巧的 CSS 选择器,攻击者可以让邮件内容在"直接查看"和"转发后查看"两种场景下呈现完全不同的文本。

攻击流程

第一步:攻击者构造一封 HTML 邮件,包含两套内容——一套"无害的皮",一套"恶意的核"。第二步:受害者收到邮件,看到的是无害的客户咨询。第三步:受害者转发邮件给同事,邮件在转发状态下,CSS 规则切换,无害内容消失,钓鱼内容浮现。第四步:收件人看到的是来自可信同事的转发,内容是钓鱼链接或恶意指令。

整个过程中,邮件本身不包含任何传统意义上的"恶意代码"。没有外部脚本、没有附件、没有可疑链接(在直接查看状态下)。标准的安全网关和反钓鱼检测对此完全失效。

为什么传统检测手段全部失效

检测手段失效原因
URL 黑名单恶意链接仅在转发后才出现,初始邮件中不可见
附件扫描攻击不需要任何附件
发件人信誉邮件来自已被 DMARC 验证的合法发件人
AI/ML 内容分析始终分析的是"直接查看"状态下的可见内容
沙箱检测沙箱环境不会模拟"转发后查看"的 DOM 状态

这个漏洞的深层意义

Kobold Letters 暴露的不是某一个邮件客户端的 Bug,而是一个协议层面的设计缺陷:SMTP 协议定义了邮件的传输标准,但从没考虑过"同一封邮件在不同呈现上下文中有不同内容"的问题。HTML 邮件引入了表现层的复杂性,而邮件客户端的 CSS 渲染引擎又继承了浏览器的灵活性——这三层叠加,产生了攻击面。安全研究泰斗 Bruce Schneier 评价道:"我能想象到各种利用可能。"

防御措施

个人用户:对转发的邮件保持警惕,即使是来自信任的同事;在转发敏感邮件前,查看邮件的原始内容或纯文本版本;考虑使用纯文本邮件客户端处理敏感通信。

企业邮件管理员:在邮件网关中实施 HTML 清洗——剥离所有 CSS 样式,仅保留纯文本或基本格式;部署内容检测规则,标记包含 display:none 或条件 CSS 规则的邮件。

邮件客户端开发者:实施更严格的 CSS 子集白名单——禁止能感知 DOM 位置的复杂选择器;在转发模式下移除所有原始 CSS;考虑引入"转发安全模式"——转发时自动将原邮件转换为纯文本。

结论:Kobold Letters 提醒我们:邮件系统的复杂性本身就是安全风险。每增加一个功能层——HTML 渲染、CSS 样式、转发、引用折叠——就多了一层攻击面。CSRB(美国网络空间安全审查委员会)在评估微软 Exchange 被入侵事件时写下的结论,对邮件安全同样适用:这次入侵本可以避免,也不应该发生。


参考来源:Lutra Security, "Kobold Letters", 2024年4月 | Bruce Schneier, "Security Vulnerability of HTML Emails", Schneier on Security, 2024年4月 | W3C CSS Selectors Level 3 Specification