我记得三年前坐在一个没有窗户的安全运营中心里,看着一名红队人员仅用一个编码字符就绕过了价值数百万美元的 Web 应用防火墙。这让我谦卑地意识到,复杂性是安全的大敌。我们经常假设在防御层上投入越多,其保护就越可靠。这种信念其实是一种谬论。PortSwigger 的 Gareth Heyes 在 Black Hat USA 2026 上展示的最新研究证明,即使是最成熟的 Webmail 平台也容易受到基于样式的攻击。
像 Gmail、Outlook 和 Proton Mail 这样的 Webmail 提供商在清理引擎上投入了数百万美元。这些系统就像每个内部门口的 VIP 俱乐部保镖。它们扫描每封传入的 HTML 邮件,寻找恶意脚本和危险标签。如果一段代码看起来可疑,清理程序就会将其剥离。然而,这项研究表明,攻击者不需要 JavaScript 就能造成伤害。他们只需要层叠样式表 (CSS)。通过利用浏览器和 Webmail 客户端解释样式的方式,攻击者可以跨越不信任邮件与受信任应用界面之间的围栏。
根本问题在于边界。当你打开一封电子邮件时,Webmail 客户端会将这些不可信的内容放置在自己受信任的 UI 中。在邮件与你的“收件箱”或“设置”按钮之间有一道薄薄的墙。通常,这道墙是一系列防止邮件影响页面其余部分的过滤器。这项研究展示了 CSS 如何穿透这道墙。
一种路径涉及滥用清理程序已经允许的 HTML 和 CSS。另一种路径则是在清理程序批准的内容与浏览器最终渲染的内容之间制造差异。两条路径都会导致相同的结果:邮件内容干扰了 Webmail 界面。这可能导致密码被盗、令牌泄露以及未经授权的 UI 操作。这是我们依赖了数十年的隔离模型的系统性失败。
最引人注目的发现涉及 Outlook 和 Firefox。这个攻击链是结合微小浏览器行为以实现关键破坏的典范。研究人员利用允许的标签元素触发了邮件正文之外的控件。然后,利用媒体查询解析技巧注入了清理程序漏掉的任意 CSS。
在邮件内部,攻击者将一个标准的 select 元素伪装成 Microsoft 登录屏幕。这就是 Firefox 行为发挥作用的地方。Firefox 对选择菜单有一个约一秒钟的内部计时器。如果 select 元素移出屏幕,浏览器会重置此计时器。通过策略性地移动该元素,攻击者可以实现实时捕获。当用户认为他们正在受信任的提示框中输入密码时,实际上是直接将其提供给了攻击者。由于地址栏中的 URL 仍然是 outlook.live.com,这种技术绕过了传统的网络钓鱼警告。
Yahoo Mail 和 AOL Mail 揭示了根源于浏览器处理剪贴板方式的另一种漏洞。在 Firefox 中,粘贴的 HTML 在应用程序的清理程序有机会清理之前,可能会短暂保留活动的 CSS。这被称为“粘贴竞争”。研究通过针对 Medium 邮件登录令牌演示了这一点。
在这种情况下,攻击者为受害者的 Medium 账户发起登录流程。受害者收到一封合法的登录邮件。然而,攻击者此前已经发送了一封包含恶意 CSS 的独立邮件。受害者复制此内容并将其粘贴到 Yahoo 或 AOL 的草稿中。在粘贴的那一瞬间,恶意 CSS 向攻击者的服务器发送请求。这些请求泄露了 12 位登录令牌中足够的字符,使服务器能够重构完整代码。然后,攻击者使用该令牌以受害者的身份登录。整个过程依赖于眨眼之间发生的竞态条件。
人工智能连接的邮件工具的兴起创造了新的攻击面。Gmail 通过其 image-set() 回退行为提供了一个清晰的例子。尽管有清理工作,这个 CSS 函数仍然可以发出外部请求。Gareth Heyes 和 Pete Hendy 将此与间接提示注入攻击相结合。这专门针对 Anthropic 的 Claude Cowork 工具的用户,该工具连接到 Gmail 以处理消息。
攻击者发送一封带有隐藏 AI 指令的邮件。当受害者要求 Claude 处理其最近的邮件时,AI 遵循注入的指令而不是用户的命令。在演示中,AI 从一封单独的确认邮件中检索了 Slack 令牌,并将其放入一个新的 HTML 草稿中。当受害者查看该草稿时,image-set() 绕过手段将令牌窃取给攻击者。这一事态发展表明,AI 代理如何成为安全环境中的数字特洛伊木马。
Fastmail 容易受到研究人员称为“CSS 热接线”的攻击。这种技术将点击重定向到非预期的、多步骤的 UI 操作中。通过使用 CSS 伪元素和透明度,攻击者可以在合法的 Fastmail 界面顶部覆盖不可见的按钮。用户以为自己点击的是邮件中的链接,实际上可能点击的是删除收件箱或更改账户设置的按钮。
这项研究还针对了 OpenAI 的 Atlas AI 浏览器。攻击者可以使用 CSS 向人类展示一种内容,向机器展示另一种内容。例如,人类看到的是一段无害的文字,而 AI 模型读取的是编码在 CSS 中的隐藏指令。当用户要求 Atlas 翻译可见文本时,隐藏指令会导致浏览器打开新标签页并在 URL 片段中泄露受害者的姓名。虽然 OpenAI 将于 2026 年 8 月 9 日停用 Atlas,但该技术对于任何构建与 Web 交互的 AI 的开发人员来说仍然是一个警告。
即使是像 Proton Mail 这样专注于隐私的服务也未能幸免。研究人员演示了一个暴露收件人 IP 地址的向量。Proton Mail 旨在通过跟踪器保护向发送者隐藏此类信息。然而,一个特定的 CSS 绕过允许在邮件打开时触发外部请求。这揭示了邮件被阅读的确切时间以及用户的个人 IP 地址。Proton 随后解决了某些代理绕过问题,但研究强调了在复杂的 CSS 世界中维持完美周界的难度。
这些发现表明,我们目前处理邮件安全的方法是被动的。我们等待研究人员发现绕过方法,然后进行修补。对于 Webmail 提供商来说,现在的防御指南要严格得多。最有效的防御是完全隔离。这意味着在沙箱化的 iframe 中渲染 HTML 邮件。这可以防止邮件样式触及父级 UI。
提供商还必须将 CSS 属性限制在安全字符的严格白名单中。他们应该阻止选择菜单、自定义属性以及像 :has() 这样危险的选择器。此外,他们必须阻止所有攻击者控制的图像请求,即使是那些看起来来自白名单域的请求。从最终用户的角度来看,最好的防御是保持良性的偏执。警惕任何要求你复制粘贴内容或与异常 UI 元素交互的邮件。
安全团队的关键要点
来源:
本文仅用于信息和教育目的,不能替代专业的网络安全审计或事件响应服务。



