WebRTC 泄露:隐藏的隐私威胁

10 最小阅读量浏览器隐私

想象一下,投资购买高级 VPN 来保护您的隐私,却发现内置浏览器功能已悄悄地将您的真实 IP 地址暴露给您访问的每个网站。这就是 WebRTC 泄漏的现实——一个影响大多数现代浏览器的严重漏洞,甚至可以完全绕过最好的 VPN 服务。这份综合指南准确解释了 WebRTC 泄露是什么、它们如何暴露您的身份以及经过验证的预防方法。

完整的文章正文以英文提供如下。

了解WebRTC

什么是WebRTC?

WebRTC(Web实时通信)是一个开源项目,无需插件即可直接在Web浏览器中实现实时通信。 WebRTC 于 2011 年推出,现已受到所有主要浏览器的支持,支持:

  • 基于浏览器的视频和语音通话(Google Meet、Zoom web)
  • 屏幕共享和协作工具
  • 文件共享(点对点)
  • 实时游戏
  • Live 流媒体

WebRTC 的强大功能来自于在浏览器之间建立直接的点对点连接,绕过传统的服务器中介,以实现更低的延迟和更好的性能。

WebRTC 如何发现您的 IP

要建立点对点连接,WebRTC 需要发现您设备的 IP 地址。此过程使用 STUN(NAT 会话遍历实用程序)服务器:

  1. 发现请求: 浏览器向 STUN 服务器发送请求
  2. IP 启示: STUN 服务器使用您的公共 IP 地址进行响应
  3. 本地网络扫描: WebRTC 还枚举本地网络接口和私有 IP
  4. 候选集合: 所有发现的 IP 都成为“ICE 候选”
  5. 交换: 这些候选在对等点之间交换以进行连接

问题: 此 IP 发现会自动发生,并且可以完全绕过您的 VPN 隧道。

WebRTC 泄漏剖析

WebRTC 可以泄露什么

A WebRTC 泄漏可以揭示:

  • 公共 IP 地址: 您真正的面向互联网的 IP(甚至在 VPN 后面)
  • 专用 IP 地址: 内部网络 IP(192.168.x.x、10.x.x.x)
  • IPv6 地址: 您的 IPv6 地址(如果可用)
  • 网络拓扑: 有关本地网络的信息结构
  • ISP信息: 可从您真实的公共IP
  • 地理位置: 基于IP地理位置的城市级别

泄漏如何发生

即使使用活动的VPN连接:

  1. 您访问启用了 WebRTC 的网站
  2. 网站的 JavaScript 触发 WebRTC 连接尝试
  3. 浏览器使用 WebRTC API 发现本地 IP 地址
  4. 浏览器在 VPN 隧道外发送 STUN 请求
  5. STUN 服务器以您的真实数据进行响应公共IP
  6. 网站的JavaScript收集所有发现的IP
  7. 尽管有VPN连接,您的真实IP现在仍然已知

结果:网站同时看到您的VPN IP和真实IP。

真实世界 WebRTC 泄漏场景

场景 1:记者

限制性国家/地区的一名记者使用 VPN 访问被阻止的新闻网站并保护其身份。他们导航到一个调查性新闻平台,却没有意识到它实现了 WebRTC 指纹识别。该网站的分析脚本通过 WebRTC 捕获记者的真实 IP 地址,这可能会使他们的身份暴露于政府监控之下。

影响: 个人安全风险,来源妥协

场景 2:版权执法者

用户相信自己的 IP 已隐藏,在连接到 VPN 时下载种子内容。版权监控公司在其跟踪软件中使用 WebRTC。当用户访问与 torrent 跟踪器关联的网站时,WebRTC 会显示他们的真实 IP,从而允许版权所有者在使用 VPN 的情况下识别他们。

影响: DMCA 通知,向真实 IP/ISP 发送法律诉讼

场景 3:定向广告网络

广告商将 WebRTC 指纹嵌入数千个网站的广告像素中。那些认为自己通过 VPN 匿名的用户会使用通过 WebRTC 暴露的真实 IP 进行跨站点跟踪。这会创建与他们的实际身份相关的详细行为档案。

影响: 隐私侵犯、跨站跟踪、定向广告

检测 WebRTC 泄漏

在线测试工具

一些网站可以立即检测 WebRTC 泄漏:

  • BrowserLeaks.com/webrtc: 综合 WebRTC 信息
  • IPLeak.net: 显示所有检测到的 IP,包括 WebRTC
  • 我们的 VPN 泄漏测试: 检查 WebRTC泄漏

寻找什么

在启用VPN的情况下进行测试时,您应该看到:

正常(安全):

  • 仅显示VPN提供商的IP地址
  • 没有向外部公开的本地网络 IP
  • WebRTC 已禁用或正确配置

检测到泄漏:

  • 您的真实公共 IP 与 VPN IP 一起显示
  • WebRTC 中显示不同的 ISP部分
  • 不同地理位置暴露
  • 暴露的本地网络IP(不太重要但信息丰富)

手动浏览器控制台测试

您可以直接在浏览器开发者控制台中测试WebRTC泄漏:

{`// 打开浏览器控制台(F12),粘贴以下代码:var pc = new RTCPeerConnection({iceServers: [{urls: "stun:stun.services.mozilla.com"}]}); pc.createDataChannel(""); pc.createOffer().then(offer => pc.setLocalDescription(offer)); pc.onicecandidate =ice => { if (!ice || !ice.candidate || !ice.candidate.candidate) return; var ip = /([0-9]{1,3}(\\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/.exec(ice.candidate.candidate)[1]; console.log('IP 发现:', ip); }`}

任何记录的与您的 VPN 不匹配的 IP 地址都表明存在泄漏。

防止 WebRTC 泄漏

Google Chrome 和 Chromium 浏览器

方法 1:浏览器扩展

安装WebRTC控制扩展:

  • WebRTC泄漏预防:最受欢迎,轻量级
  • uBlock来源:在设置中包括WebRTC保护
  • 隐私Badger: 带 WebRTC 控制的通用隐私工具

配置(WebRTC 防泄漏):

  1. 从 Chrome Web Store 安装扩展
  2. 单击扩展图标
  3. 选择“禁用非代理” UDP(强制代理)”选项
  4. 这可以防止WebRTC绕过代理/VPN

方法2:Chrome标志(高级)

{`chrome://flags/#enable-webrtc-hide-local-ips-with-mdns Set to "Enabled"`}

这会匿名化 WebRTC 公开的本地 IP 地址。

Mozilla Firefox

方法 1:本机 Firefox 设置(推荐)

  1. 在地址中键入 about:config bar
  2. 接受警告并继续
  3. 搜索:media.peerconnection.enabled
  4. 切换到 false(完全禁用 WebRTC)

用于部分保护(WebRTC工作但防泄漏):

{`media.peerconnection.ice.default_address_only = true media.peerconnection.ice.no_host = true media.peerconnection.ice.proxy_only_if_behind_proxy = true`}

方法2:Firefox扩展

  • 禁用 WebRTC: 简单切换扩展
  • u块来源: 在设置中启用“防止 WebRTC 泄漏本地 IP 地址”

Microsoft Edge

Edge(基于 Chromium):

与 Chrome 相同 — 使用 WebRTC Leak Prevent 等扩展程序或:

{`edge://flags/#enable-webrtc-hide-local-ips-with-mdns Set to "Enabled"`}

Safari (macOS/iOS)

macOS Safari:

  1. 打开 Safari 首选项
  2. 转到“高级”选项卡
  3. 选中“在菜单栏中显示开发菜单”
  4. 从“开发”菜单中选择“实验”功能“
  5. 查找并禁用“WebRTC mDNS ICE候选”

iOS Safari:

有限选项。最佳方法:

  • 使用具有 WebRTC 泄漏保护的 VPN
  • 使用具有更好隐私控制的替代浏览器 (Firefox Focus)

Opera & Brave

Opera:

  1. 设置 → 隐私和安全
  2. 滚动到 WebRTC 部分
  3. 选择“禁用非代理 UDP”

Brave:

  1. 设置→隐私和安全
  2. 找到“WebRTC IP处理策略”
  3. 选择“禁用非代理UDP”或“禁用WebRTC”

VPN 级 WebRTC 保护

某些 VPN 提供内置 WebRTC 泄漏保护:

VPN 浏览器扩展

  • 专用扩展 WebRTC 保护: 许多 VPN 提供商提供的浏览器扩展包括 WebRTC 阻止
  • 自动配置: 扩展自动配置浏览器设置
  • 集成测试: 内置泄漏检测工具

系统级防火墙规则

高级用户可以配置防火墙规则以阻止 STUN/TURN 流量:

Linux (iptables):

{`# Block outbound STUN traffic (UDP 3478) sudo iptables -A OUTPUT -p udp --dport 3478 -j DROP # Block alternative STUN ports sudo iptables -A OUTPUT -p udp --dport 19302 -j DROP`}

Windows 防火墙:

  1. Windows Defender 防火墙 → 高级设置
  2. 出站规则 → 新规则
  3. 端口 → UDP → 特定端口:3478、19302
  4. 阻止连接

配置后测试

实施保护后,验证它们是否正常工作:

  1. 连接到VPN并验证VPN IP
  2. 访问WebRTC测试站点: VPN泄漏测试
  3. 检查结果: 应该只显示VPN IP,而不是真实IP
  4. 测试WebRTC功能: 如果需要,验证视频通话是否仍然有效
  5. 浏览器更新后重复测试: 更新可以重置设置

WebRTC 与隐私:寻找平衡

当您需要WebRTC

某些服务需要WebRTC功能:

  • 基于浏览器的视频会议
  • 实时协作工具
  • 点对点文件共享
  • 基于WebRTC的游戏

解决方案: 使用不同的浏览器配置文件:

  • 隐私配置文件: WebRTC已禁用,用于一般浏览
  • 工作配置文件: WebRTC已启用,仅用于所需服务

替代方法

  • 桌面应用程序而不是Web:使用Zoom/Teams桌面应用程序而不是Web版本
  • 选择性启用: 仅在需要时启用WebRTC,之后立即禁用
  • 或浏览器: 默认情况下禁用WebRTC,具有强大的泄漏保护

WebRTC 和的未来隐私

浏览器改进

  • mDNS候选者: Chrome/Edge现在用.local地址混淆本地IP
  • 权限提示: 一些浏览器正在尝试WebRTC权限请求
  • 隐私模式: 限制WebRTC功能的增强隐私模式

持续挑战

  • WebRTC对于现代Web应用程序至关重要
  • 功能和隐私之间的平衡困难
  • 跨浏览器标准化不完整
  • 新的指纹向量不断出现

常见问题

{faqs.map((faq, index) => (

{faq.question}

{faq.answer}

))}

结论

WebRTC 泄漏代表了一个严重的漏洞,可以完全破坏 VPN 保护。虽然 WebRTC 可实现有价值的实时通信功能,但其 IP 发现机制可能会暴露您的身份,即使您认为自己受到了保护。

关键要点:

  • 定期测试: WebRTC 泄漏如果您检查,很容易检测到
  • 不需要时禁用: 大多数用户日常不需要 WebRTC浏览
  • 使用浏览器扩展: 获得WebRTC
  • 控制权的最简单方法
  • 验证VPN保护: 并非所有VPN都能防止WebRTC泄漏
  • 保持更新:浏览器更新可以重置 WebRTC 设置

隐私需要跨多个向量保持警惕。保护您的 VPN 连接还不够,您还必须防止 WebRTC 等浏览器级别的泄漏。通过了解 WebRTC 的工作原理并实施本指南中概述的保护措施,您可以弥补这一关键的隐私差距。

WebRTC 测试现已泄露

不要以为您受到了保护。立即测试您的浏览器,看看 WebRTC 是否暴露了您的真实 IP 地址。

WebRTC 泄露:绕过 VPN 的隐藏隐私威胁