目录
- 你的电视在上班,你不知道
- Bright Data 是谁
- 它怎么在你的客厅里开了一个后门
- 为什么智能电视是最完美的代理节点
- 那个 200GB 的「偶尔」
- 从乌兹别克斯坦到你家客厅:地理带宽分级
- VPN 绕行不是 bug,是功能
- 我在服务器上验证了一下
- 能做什么
你的电视在上班,你不知道
六月初,Include Security 发布了一篇博客,标题平淡得像季度合规报告:「你的智能电视是 AI 爬虫经济的一个节点」。
翻译一下:你挂在客厅墙上那台 LG,你睡前让它继续亮着播 ASMR 的那台 Roku,你为了看 Netflix 专门买的 Fire TV Stick——它们被人塞进了一个 SDK,这个 SDK 正在利用你家宽带的 IP 地址,替不知名的第三方公司在爬整个互联网。
而且不是偷偷摸摸的。它在隐私政策里写了。问题是,你不可能在电视遥控器上一格一格地翻完那串法律文字。
Bright Data 是谁
先搞清楚主角。
Bright Data 是一家数据采集公司。它不卖软件,不卖硬件,它卖的是 路由权——它拥有号称「全球最大的住宅 IP 代理网络」,400M+ 住宅 IP。
这个网络后面是一个 SDK,被嵌入到各种消费者 App 里,经过用户「同意」后,把你的手机或智能电视变成代理网络的出口节点。听起来很脏?它在法律上是干净的。用户的终端上弹了一个对话框,你点了「同意」,就这么回事。
一点历史背景: Bright Data 在 2018 年之前叫 Luminati Networks。Luminati 的前身是 Hola Networks——那家靠「免费 VPN」起家、后来被发现把你的带宽卖给第三方代理网络的公司。Hola 在 2015 年因为被用来发起 DDoS 攻击和爬取竞争对手数据上过头条。改名 Bright Data 之后,他们干的事情本质上没变——只是把「免费 VPN」换成了「嵌入式 SDK」,把用户变成了供应商。
它怎么在你的客厅里开了一个后门
Include Security 的研究者 Buchodi 花了 30 天逆向分析了 Bright Data 的 iOS SDK(brdsdk.framework, v1.532.120)。App 启动后 SDK 自动做三件事:
第一件事:拉一份无需认证的配置
GET https://clientsdk.bright-sdk.com/sdk_config_ios.json?appid=<bundle-id>&ver=<sdk-version>&uuid=sdk-ios-<32hex>
这个端点不需要认证。你只需要知道 partner 应用的 Bundle ID(从 App Store 公开页面就能拿到)和一个随机生成的 UUID——服务器就会返回和真实设备完全一样的数据:功能开关、空闲检测阈值、按国家划分的带宽配额,以及一个 partner 身份清单。
第二件事:开一条 WebSocket 隧道
wss://proxyjs.brdtnet.com:443
这个域名解析到 AWS Global Accelerator IP(3.33.193.183、15.197.193.114)。TLS 证书是 CN=*.luminatinet.com——改名 8 年了,核心基础设施还在跑旧证书。
连接不需要额外鉴权。服务器接受 TLS WebSocket 升级请求后,推送 tunnel_init 帧确认客户端公网 IP,cid_set 分配会话标识,status_get 轮询设备状态。设备端随后持续发回遥测:电池、网络类型、CPU 使用率、内存占用、可用带宽。你在看电视,你的电视在向一个第三方服务器持续报告:「我空闲着,随时可以替你爬东西。」
第三件事:开始执行别人发的爬虫任务
一旦设备报告「可用」,服务器推送 cmd_tun 帧——每条帧是一条爬虫指令,SDK 用你的住宅 IP 作为源地址,向目标网站发起 HTTP 请求。从目标服务器的视角看,这就是一个普通用户在家打开了网页。
为什么智能电视是最完美的代理节点
| 维度 | 手机 | 智能电视 |
|---|---|---|
| 电源 | 一天充几次 | 永远插着 |
| 网络 | WiFi + 蜂窝,有限流 | 一直 WiFi,无限 |
| 在线时间 | 间歇 | 24/7 待机 |
| 带宽上限 | 低 | 几乎不限 |
| 用户关注 | 经常用 | 经常没人看 |
| 同意界面 | 手机屏幕文字可读 | 遥控器一格一格翻 |
| 安全监控 | 可能有 MDM/EDR | 几乎没有 |
电视从不解锁屏幕进省电模式。不跳 WiFi。不插着充电器看天气。它是一台永远不会下班的生产力工具。
Include Security 的文章里列举了几个确认集成了 Bright Data SDK 的合作方:PlayWorks Digital(400+ CTV 游戏,覆盖 ~2.5 亿电视家庭)、CloudTV(集成到 125+ 电视品牌和 15+ 原始设备制造商)、Longvision Media HK(500 万 OTT 用户)、Rakuten Viber(月活 2.5–8.2 亿的消息应用)。还有一批无法从公开来源精确识别的实体。
那个 200GB 的「偶尔」
一个叫 Petflix 的 Roku 应用的同意界面这样写:
「为了让你免费使用 Petflix 并减少广告,你将允许 Bright Data 偶尔使用你设备的空闲资源和 IP 地址来从互联网下载公开网页数据。」
注意 「偶尔」 这个修饰词。
同一个 SDK 配置里的实际参数:
max_bw_monthly_wifi: 200000000000
200GB。字节。每月 200GB 的第三方流量从你家宽带进出。
如果「偶尔」的意思是「每月最多 200GB」,那这台电视的月流量超过了很多公司开发人员的办公电脑。
从乌兹别克斯坦到你家客厅:地理带宽分级
配置里藏着按国家划分的带宽限额:
| 国家 | 可代理的最低电量 | 每日上限 | 每月上限 |
|---|---|---|---|
| 乌兹别克斯坦 | 1% | 1GB | 30GB |
| 阿曼 | 1% | 1GB | 30GB |
| 卡塔尔 | 20% | 40MB | 250MB |
| 阿联酋 | 20% | 40MB | 250MB |
| 全球默认 | 20% | 50MB | 500MB |
乌兹别克斯坦的设备可以在剩 1% 电量时继续工作,每日配额是全球默认的 20 倍,每月配额是 60 倍。推测的理由不难猜:电网稳定的国家放心多用,移动数据贵的地方压配额。全球每月 500MB 的默认值本身也不算小数字——按典型家庭宽带流量算,大约是 Netflix 看 4-5 小时高清视频的量。
VPN 绕行不是 bug,是功能
配置里有一个旗标:use_netifs: true。
这行代码触发 SDK 使用 iOS 的 NWParameters.requiredInterface API,将 WebSocket 隧道绑定到 en0(WiFi)或 pdp_ip0(蜂窝),而不是系统默认路由。
后果:如果你在手机上开了 VPN,这条代理隧道直接跳过你的 VPN。 整个 VPN 像不存在一样。
Include Security 用透明 TLS 中间人证实了这一点:除了通往 proxyjs.brdtnet.com:443 的 WebSocket 隧道,SDK 的其他所有 HTTPS 流量都可被拦截——唯独那条隧道从物理网卡直接溜出去了。
研究者写了这句话:
"对于运行 MDM、企业 VPN 流量检查或家庭路由器家长控制的安全团队来说:这个 SDK 最敏感的信道,在设计上就是绕过你们可见性层的。"
这里有一个更深的点: Bright Data 的 SDK 用的是完全合法的 Apple API。没有 hook、没有 patch、没有私有框架。NWParameters.requiredInterface 是 Apple 文档里白纸黑字写的公开 API。这套 SDK 构造了一个法律上合规、技术上也诚实的体系——它产生的效果,却和那种通过感染物联网设备建立的 botnet 代理网络没什么区别。这个月早些时候,FBI 还专门发了关于住宅代理网络的 advisory。而 Bright Data SDK 做的事情,数据流向完全相同,区别只是多了一个没人读得完的同意界面。
我在服务器上验证了一下
宿舍里没有 Roku。但有一台跑着 Debian 的服务器。跑一下 DNS 解析看看:
$ host proxyjs.brdtnet.com
proxyjs.brdtnet.com has address 3.33.193.183
proxyjs.brdtnet.com has address 15.197.193.114
AWS Global Accelerator IP——和 Include Security 的论文完全一致。服务器上没有 brdtnet.com 的其他流量,因为这个 SDK 目前只部署在 iOS 和智能电视平台。但能确认的是:整个基础设施还在跑,证书还是 8 年前的 Luminati 旧证。这个「改名不改证」的细节,对于需要在网络边界做检测的人来说,是一个不错的锚点。
能做什么
防御方案分三档:
① DNS 拦截(最简单):在路由器(Pi-hole、NextDNS、AdGuard Home)上屏蔽:
proxyjs.brdtnet.com
proxyjs.luminatinet.com
proxyjs.bright-sdk.com
clientsdk.bright-sdk.com
clientsdk.brdtnet.com
② TLS SNI 过滤(不需要解密):在网络边界丢弃或告警 TLS 握手时 server_name 匹配 *.brdtnet.com 或 *.luminatinet.com 的连接。
③ 设备级二进制扫描:企业环境中搜索已安装应用是否包含 Swift 符号 BrdWebSocketFacade 和 BrdNetwork.DNSResolver。
花了一个下午读这篇研究。不是因为它展示了什么了不得的逆向技术——拆一个 iOS 框架在 2026 年不算稀罕事了。
稀罕的是那个「偶尔」和 200GB 之间的差距。一个字面意义上的合法欺诈——白纸黑字写着的条文和实际运行的行为之间,隔了一整个互联网的流量预算。AI 行业需要的训练数据不会自己从天上掉下来。它们从你家客厅的 WiFi 里爬了出来。
评论(0)
暂无评论,来写第一条吧~