打开网易新闻 查看精彩图片

2023年,苹果邮件隐私保护(Mail Privacy Protection,MPP)覆盖了85%的iOS邮件用户。三年后,营销邮件里的追踪像素确实少了,但打开率数据从未消失——只是换了个更隐蔽的管道流出去。

安全研究员上周放出一组真实邮件流量分析,扒出了7种仍在生产的追踪手段。最讽刺的发现:MPP专门防了图片预加载,却漏掉了样式表请求。

CSS追踪:比像素更难杀的蟑螂

CSS追踪:比像素更难杀的蟑螂

图片追踪的原理很直白——邮件里塞个1×1像素的透明图,用户打开时自动请求服务器, sender就知道"这封邮件被看了"。MPP的应对策略是预加载所有图片,让服务器分不清是真用户还是苹果的代理服务器。

但CSS样式表不在预加载范围内。

研究员在真实邮件里捕获到这些变体:外链样式表、@import导入、list-style-image属性、border-image属性。最隐蔽的是一种叫"CSS自定义属性间接引用"的手法——把追踪URL藏进变量定义,再在其他地方调用。

代码长这样:

--emp-track: url('https://tracker.esp.com/PERRECIPIENTTOKEN');

过滤器扫描background-image属性时完全看不到这个URL,因为它根本没写在任何样式规则里,只是安静地躺在变量声明区。2025-2026年的安全文献已经把这列为标准规避技术,邮件模板生成器可以一键输出。

更老派的攻击来自HTML4时代的遗留属性。table标签的background属性、video标签的poster属性、object标签的data属性——这些都能触发网络请求,却不在任何CSS代码块里。研究员确实在真实邮件中抓到了table background的实例,视觉上和CSS设置的背景毫无区别,但防御工具如果只扫style标签就会直接漏过。

回复链攻击:比打开追踪值钱10倍

回复链攻击:比打开追踪值钱10倍

如果说打开追踪是"这人看了邮件",回复链攻击回答的是"这人把邮件转给了谁"。

攻击模型很简单:sender在邮件里埋一个唯一的收件人标识符,遍布像素、链接、CSS、技术头。用户A收到邮件,所有追踪点都绑定A的身份。A转发给B,B的邮件客户端通常会保留原始HTML。B打开时,同一个标识符再次上报——sender现在知道A传播了这封邮件,还知道B的存在。

有些邮件服务会在转发时剥离部分追踪代码,但保留技术头(如X-Mailer、Received字段)是RFC标准要求的。更麻烦的是企业场景:A转发给内部列表,B、C、D各自打开,sender获得一张精确的社交网络图。

研究员没有给出具体传播率数据,但提到这是"arguably more valuable to trackers than open tracking"——对追踪者来说,知道谁影响了谁,比知道谁看了什么更有商业价值。

MIME边界:藏在信封里的指纹

MIME边界:藏在信封里的指纹

邮件的MIME结构本身也能编码信息。多部分邮件的boundary参数通常是一串随机字符,但sender可以把它做成per-recipient的——每个收件人收到不同的boundary字符串。

这不会触发任何网络请求,所以MPP完全无视。但当用户回复或转发时,原始boundary被保留在引用内容中。sender分析入站邮件的引用片段,就能匹配回原始收件人。这是一种零网络活动的被动追踪,检测它需要解析整个MIME结构,而大多数隐私工具只关注HTML正文。

为什么这些漏洞活得比预期久

为什么这些漏洞活得比预期久

MPP的设计哲学是"预加载所有远程资源,让服务器无法区分真假请求"。这个策略对图片有效,因为图片数量可控、体积可预测。CSS样式表理论上也可以预加载,但问题出在动态性——样式表可以包含@import嵌套,可以基于媒体查询条件加载,预加载引擎很难在不执行CSS的情况下判断到底会发出多少请求。

HTML遗留属性则是历史包袱。table background在HTML5里已经废弃,但邮件客户端为了兼容旧模板仍然解析它。video poster是较新的标签,但邮件里的视频本来就是边缘场景,隐私保护优先级被排到了后面。

研究员在GitHub上开源了检测工具,可以扫描.eml文件中的7类追踪向量。但工具只能告诉你"这封邮件有追踪",不能替你拦截——因为拦截意味着破坏邮件的渲染效果,而用户通常更希望邮件能正常显示。

一个细节值得玩味:苹果在MPP的文档里明确说"保护用户免受邮件中的像素追踪",从未承诺过"阻止所有追踪"。CSS样式表算不算"邮件中的像素"?严格来说不算,因为CSS不是像素。这个语义漏洞让MPP的防护范围永远比用户的理解窄一圈。

如果你现在打开iOS邮件设置,隐私保护选项仍然只提"隐藏IP地址"和"阻止所有远程内容"——后者会连图片一起禁掉,让邮件变成纯文本。没有中间选项,没有"允许图片但预加载CSS"的精细控制。这是产品设计上的懒惰,还是有意为之的妥协?

研究员最后抛了一个问题:当追踪技术从"像素"进化到"样式变量"和"MIME指纹",隐私保护工具是应该跟着做特征检测的军备竞赛,还是直接切断邮件的远程内容能力?你的邮件客户端现在用的是哪种策略——而你有没有注意到,某些营销邮件突然变得很难看了?