Hotdry.

Article

Mullvad 出口节点时序聚类泄漏与用户去匿名化防御对策

通过时间序列 IP 聚类分析发现 Mullvad 出口节点在短时间窗口内存在可重复识别用户的流量特征泄漏,提出退出节点选择的时间熵增强对策。

2026-05-15security

Mullvad 作为隐私领域备受推崇的 VPN 服务商,其 WireGuard 协议实现一直被视为工程典范。然而,研究者近期发现其出口 IP 分配机制存在一个反直觉的指纹泄漏漏洞:通过时序 IP 聚类分析,即使目标频繁切换服务器,攻击者仍能以超过 99% 的准确率关联多个身份。这一发现的核心不在于 Mullvad 服务器数量少,而在于其基于种子随机数生成器(RNG)的 IP 分配算法在多服务器场景下产生了可预测的百分位分布模式。

出口 IP 分配的确定性悖论

Mullvad 的架构设计与大多数 VPN 提供商不同:每个服务器维护一个出口 IP 池,当两名用户连接到同一服务器时,通常会被分配不同的公网 IP。以澳大利亚悉尼节点(au-syd-wg-101)为例,其 IP 池范围从 103.136.147.5 至 103.136.147.64,共计 60 个可用出口 IP。这种垂直扩展策略避免了多个用户被挤压到同一个 IP 上,从而减少了在严格 IP 封禁网站上面临的限速与封号问题。

然而,研究者发现这些出口 IP 并非每次连接时随机分配,而是根据用户的 WireGuard 公钥进行确定性选择。公钥本身会定期轮换(通常间隔 1 至 30 天),但在使用第三方客户端的情况下,轮换机制甚至可能完全失效。这意味着用户在 Mullvad 网络中的身份并非如预期般流动,而是以一种隐蔽的方式保持稳定。

研究者编写了自动化脚本,通过反复更换公钥并获取 9 台服务器的出口 IP 进行大规模测试。经过一夜运行,脚本收集了 3650 个公钥对应的 IP 数据。按照概率计算,这些公钥本应产生数万亿种不同的 IP 组合,但实际只观察到了 284 种唯一组合。这一巨大差异揭示了出口 IP 分配机制中深层的结构性缺陷。

百分位一致性: RNG 边界的隐秘指纹

对这 284 种组合的深入分析揭示了一个关键模式:对每个服务器的 IP 池起始地址进行标准化后,任意组合中各服务器的 IP 位置与其 IP 池大小的比值呈现高度一致的百分位分布。以悉尼节点为例,IP 103.136.147.53 对应的标准化位置为 49,除以池大小 60 得到比值 0.816;智利圣地亚哥节点 IP 149.88.104.12 的比值为 9/11=0.818;丹麦哥本哈根节点为 25/31=0.806。这种 81% 附近的百分位并非巧合,而是算法固有特性的直接体现。

进一步实验表明,问题根源在于 Rust 语言中基于种子初始化随机数生成器的行为。当使用固定种子创建_rng_实例后,无论为 random_range 函数提供何种上界参数,首次调用产生的浮点数值始终保持一致。这个浮点值随后被用作乘数与上界相乘以生成最终随机数。由于上界的变化不会影响 RNG 的内部熵池,同一种子在不同上界下会生成恒定的比值分布。

Mullvad 的后端服务正是基于 Rust 构建,其 IP 分配逻辑很可能采用了类似的模式:使用用户公钥哈希作为种子,结合服务器 IP 池大小生成随机索引,从而确定分配给该用户的出口 IP。这种实现方式在单个服务器场景下运行良好,但当用户在多台服务器间切换时,同一公钥会因服务器 IP 池大小不同而产生不同但可关联的百分位值 —— 这成为了跨服务器身份关联的隐秘通道。

时序聚类攻击:从 IP 指纹到身份关联

了解了算法机制后,攻击路径变得清晰可执行。研究者开发了一款在线估算工具,用户只需输入任意服务器上观察到的出口 IP,该工具即可推算出该 IP 对应的浮点值范围。以某个具体组合为例,八台服务器的 IP 百分位可映射为一个浮点范围 0.2909 至 0.2943,跨度仅为 0.0034。这意味着 Mullvad 全部用户中约有 0.34% 共享这一 IP 组合模式。

在约 10 万活跃用户的规模下,这意味着约 340 名用户会共享相同的 "指纹区间"。虽然无法精确定位具体个人,但这种粗粒度的身份聚类已足以支持多种去匿名化场景。一个典型的攻击场景是:某论坛版主怀疑一个新建账号是被封禁用户的马甲,通过查阅 IP 日志发现两个账号虽使用不同 Mullvad 服务器,却命中了重叠的浮点区间(如 0.4334–0.4428 与 0.4358–0.4423),交叉验证后置信度超过 99%,从而确认关联。

更值得关注的是,这种关联能力并不局限于单一论坛的 IP 日志。结合数据泄露事件中流出的 IP 访问记录或执法部门依法获取的日志信息,攻击者能够构建跨平台、跨时间的行为图谱。即使目标每隔数小时更换一次服务器,只要公钥未更换,其 IP 百分位指纹就保持稳定,关联通道始终敞开。

时间熵增强:对策的工程化路径

针对这一漏洞的缓解策略需从两个维度入手:减少单次会话的指纹稳定性,以及增加跨时段的身份区分度。

公钥轮换是最根本的干预手段。每次完全登出 Mullvad 客户端时,应用会生成新的 WireGuard 密钥对,旧密钥关联的所有 IP 分配历史随之失效。这意味着定时强制刷新公钥可以打破时间序列上的身份连续性。建议用户每 24 小时执行一次完整的客户端注销与重新连接流程,而非仅依赖应用内的临时断开功能。对于使用第三方 WireGuard 客户端的用户,由于密钥永不自动轮换,更需要在每次会话结束后手动生成新密钥对以重置指纹。

多服务器切换策略需要精细化的熵增强设计。简单的随机切换仅改变服务器选择,不改变公钥本身,因此 IP 百分位区间仍然固定。有效的做法是在切换服务器前先执行公钥轮换,使新的随机索引在所有服务器的 IP 池中重新分布。更进一步地,用户可以采用分层策略:针对高风险行为(如发帖、评论)使用独立的 Mullvad 账户和专属公钥,针对日常浏览使用另一套密钥,将身份隔离从应用层延伸到密钥层。

服务器选择的时间随机化同样重要。攻击者的时序聚类分析依赖于目标行为的时间规律性 —— 固定时段使用固定服务器意味着在时间维度上形成稳定的 IP 访问模式。将连接时间打散到不规则时段,虽然无法改变 IP 分配算法的本质,但能显著降低基于流量时序特征的关联准确率。对于追求极致隐私的用户,建议记录每次连接的时间戳并在后续分析中识别异常模式。

技术层面的长期解决方案则需要 Mullvad 重新评估其 IP 分配算法。采用非确定性分配机制(如引入连接时的时间戳作为额外熵源)或扩大 IP 池的异构性(使不同服务器的池大小互为质数,从而在数学上消除百分位一致性)是更根本的修复路径。然而,考虑到向后兼容性和用户体验,这类改动需要审慎评估影响范围。

风险边界与适用场景评估

需要明确的是,这一指纹泄漏漏洞的利用前提是攻击者能够获取目标在多个不同 Mullvad 服务器上的出口 IP 记录。对于能够监控 ISP 边界流量的国家级对手,或是通过法院命令获取 VPN 提供商日志的执法机构,这一攻击路径具有现实可行性。但对于仅监控单一网站流量的普通网站管理员,关联能力将大打折扣。

威胁模型决定了对策优先级。对于普通用户,将公钥轮换纳入日常使用习惯已足够提供合理保护。对于面临高阶对手(如有组织的追踪者或国家行为体)的用户,则需要将多身份隔离、时间熵注入、以及定期清除数字足迹等策略综合部署。隐私安全从来不是单点加固的问题,而是纵深防御体系的系统性工程。


资料来源Mullvad exit IPs as a fingerprinting vector

security

内容声明:本文无广告投放、无付费植入。

如有事实性问题,欢迎发送勘误至 i@hotdrydog.com