La smart TV de la sala es un nodo en la economía del scraping con IA
(blog.includesecurity.com)- El SDK de Bright Data integrado en apps de consumo, con el consentimiento del usuario, convierte el teléfono o la smart TV en un nodo de salida de proxy residencial y enruta por IP residenciales el tráfico de scraping web de los clientes.
- Los proxies residenciales son una vía de evasión para llegar a sitios objetivo usando la IP de clientes residenciales de pago, en un entorno donde Cloudflare, DataDome, HUMAN y otros limitan o bloquean solicitudes desde IP de nube conocidas.
- Las TV conectadas no tienen restricciones de batería, siempre están conectadas a Wi-Fi y operan en espera 24/7, por lo que ofrecen mejores condiciones de proxy que los teléfonos en términos de persistencia y posibilidad de dejarlas desatendidas.
- El SDK de iOS recibe de un endpoint de configuración sin autenticación criterios de inactividad, límites de ancho de banda y lista de socios, y abre un túnel peer WebSocket para manejar telemetría del estado del dispositivo y tareas de scraping
cmd_tun. - La defensa se centra en bloquear por DNS
proxyjs.*yclientsdk.*, filtrado SNI, detección de huellas digitales de certificados TLS y escaneo del binario de apps con MDM; en iOS,use_netifsimpone una limitación que evita la visibilidad basada en VPN.
Panorama general
- Más allá de la oposición comunitaria a la construcción de centros de datos para aumentar la capacidad de IA, existe una estructura en la que dispositivos dentro del hogar pueden usarse para la recolección distribuida de datos para entrenamiento de IA.
- Bright Data vende acceso a una red de proxies residenciales de más de 400 millones de direcciones IP domésticas, que sus clientes usan para enrutar tráfico de scraping web, y la fuente de suministro es un SDK integrado en apps de consumo.
- Ese SDK, con el consentimiento del usuario, convierte teléfonos o smart TV en nodos de salida; el análisis se enfoca en cómo funciona el SDK, en qué plataformas se distribuye y por qué las TV conectadas a internet son adecuadas como proxies de scraping web para modelos de IA.
Por qué importa ahora
- Las empresas de IA dependen de contenido obtenido por scraping web para preentrenamiento, búsqueda y búsqueda aumentada, grounding de agentes y funciones de búsqueda.
- La web moderna es un entorno que no se puede scrapear fácilmente desde centros de datos, y Cloudflare, DataDome, HUMAN y otros limitan o bloquean solicitudes desde IP de nube conocidas.
- La alternativa es un proxy residencial que llega al sitio objetivo desde la IP de un cliente residencial de pago, como una conexión de abonado de Comcast o T-Mobile.
- Una cita de un reporte de Krebs de octubre de 2025 dice: “La sobreoferta de proxies de Aisuru y otras fuentes está alimentando esfuerzos masivos de recolección de datos vinculados a múltiples proyectos de IA”.
- Mediciones académicas que se remontan a 2019 concluyen que estas redes se usan abrumadoramente de forma indebida, y el FBI también emitió una alerta oficial a inicios de este año.
- La mayoría de la cobertura previa se ha enfocado en el suministro ilegal de proxies residenciales, como botnets tipo Aisuru y Kimwolf, apps troyanizadas como PROXYLIB y hardware IoT previamente infectado como IPIDEA.
- El lado de la oferta legal ha recibido relativamente poco escrutinio, y Bright Data, que según su propio marketing es la mayor red de proxies residenciales del mundo, promociona “150M+ IPs” basadas en SDK con consentimiento integrados en apps asociadas.
Por qué las TV conectadas son proxies ideales
| Factor | Teléfono | Smart TV / CTV |
|---|---|---|
| Energía | Usa batería la mayor parte del día | Siempre conectada a la corriente |
| Red | Wi-Fi + celular | Siempre en Wi-Fi, alta velocidad |
| Tiempo de actividad | Intermitente | 24/7 en espera |
| Límite de ancho de banda | Bajo, con restricciones celulares | Prácticamente ilimitado |
| Atención del usuario | Uso activo | A menudo desatendida |
| UI de consentimiento | Texto en la pantalla del teléfono | Texto que se navega con las flechas del control remoto de la TV |
| Supervisión empresarial o familiar | Mayor, con MDM, EDR móvil, etc. | Prácticamente nula |
- Las TV no llegan a 1% de batería, no cambian frecuentemente entre redes Wi-Fi y no se bloquean mientras el usuario duerme.
- Algunos publishers socios revelan su relación con Bright Data en sus políticas de privacidad, y la política de privacidad de PlayWorks es un ejemplo.
- La divulgación en la política de privacidad no es un punto de control adecuado para TV: es difícil desplazarse por documentos legales con las flechas del control remoto, y los cuadros de diálogo de consentimiento dentro de la app no logran comunicar que clientes de pago de Bright Data enrutan tráfico de scraping a través del internet doméstico del usuario.
- La pantalla de opt-in de la app Petflix para Roku, documentada por The Verge, usa la frase: “Para ver menos anuncios y disfrutar gratis, permite que Bright Data use ocasionalmente los recursos disponibles y la dirección IP de tu dispositivo para descargar datos públicos de la web”.
- El cuadro de diálogo de Petflix usa la expresión “ocasionalmente”, pero la configuración del SDK públicamente consultable muestra
max_bw_monthly_wifi: 200,000,000,000, es decir, un presupuesto base mensual de 200 GB por Wi-Fi.
Entidades que Bright Data identifica como socios
- Bright Data expone un endpoint de manifiesto de socios que cualquiera puede consultar sin autenticación.
- Elementos de identificación de alta confianza según fuentes públicas.
| Partner ID | Entidad | Escala |
|---|---|---|
playworks_digital |
PlayWorks Digital Ltd | Más de 400 títulos de juegos para CTV, alcance a unos 250M de hogares con TV a través de Comcast, Sky, Cox, LG, Samsung, Vizio y Roku |
cloudtv |
CloudTV | Integrado en más de 125 marcas de TV y más de 15 OEM |
longvision_media_hong_kong_co_limited |
Longvision Media HK (LongTV) | 5M de usuarios OTT en Hong Kong y Malasia |
viber_media_s_r_l |
Viber Media S.à r.l. (Rakuten) | 250M–820M de usuarios mensuales de Viber Messenger |
supercent_inc |
Supercent | Publisher móvil número 1 de Corea por descargas en 2023 |
moonfrog_labs_private_limited |
Moonfrog Labs | Solo Teen Patti Gold tiene unos 10M de MAU; fue adquirida por 90 millones de dólares |
hola_networks |
Hola Networks | Empresa matriz histórica de Bright Data; según el marketing previo de Hola, su pico de usuarios estuvo en un rango de decenas de millones hasta unos 100M+ |
desoline,free_time,ott_studio,global_microtrading,m_m_media,easystaff_lpaparecen en el manifest, pero son elementos difíciles de identificar con fuentes públicasbright_screensavers,bright_videos,brightdatason apps propias de Bright Data- El hecho de que esos nombres aparezcan en la configuración de Bright Data sugiere que pudo haber habido alguna integración en algún momento, pero no es evidencia directa de que una app distribuida actualmente por un editor específico lleve el SDK en producción
- Lo que la lista de socios demuestra directamente es que Bright Data distribuye esta nómina en un endpoint público sin autenticación, y que al menos tres empresas centradas en CTV —como PlayWorks, CloudTV y Longvision— monetizaron dispositivos de usuarios como nodos de salida de proxies residenciales
- Según sus propios materiales de marketing, PlayWorks afirma tener despliegue de CTV en las principales plataformas de TV y entre distintos ISP, con un alcance de cientos de millones de hogares
Cómo el SDK de Bright Data convierte los dispositivos de los usuarios en nodos de salida de proxies residenciales
-
El SDK de Bright Data es un producto comercial documentado públicamente, con documentación de integración del SDK para publishers y una variante en JavaScript para la web
-
El análisis se basa en la ingeniería inversa de un framework de iOS desplegado y en la instrumentación de tráfico en tiempo de ejecución durante 30 días
-
El SDK se distribuye dentro de apps asociadas en forma del framework de iOS
brdsdk.framework -
Configuración sin autenticación
- El SDK llama a la siguiente solicitud cada vez que se ejecuta
GET https://clientsdk.bright-sdk.com/sdk_config_ios.json/…;- El endpoint funciona sin una autenticación significativa, y el servidor solo verifica dos parámetros de consulta:
appid, que es el bundle ID de la app, yver, que es la cadena de versión del SDK - Si se proporcionan el bundle ID que puede encontrarse en la ficha de App Store de una app asociada, la cadena de versión del SDK y un UUID generado arbitrariamente, devuelve la misma configuración que recibe un dispositivo real
- La respuesta incluye flags de funciones, umbrales de detección de inactividad como nivel de batería, topes de CPU/memoria y reglas de Wi‑Fi/celular, niveles de ancho de banda por país y una estructura con el manifiesto del socio
- Dentro de la configuración existen reglas de inactividad para que el dispositivo obtenga elegibilidad para retransmitir tráfico, flags para enrutar tráfico de pares alrededor de la VPN, un map que vincula instalaciones entre plataformas bajo una sola identidad y límites de ancho de banda por país
-
Túnel de pares
- Después de obtener la configuración, el SDK abre un WebSocket persistente a la siguiente dirección
wss://proxyjs.brdtnet.com:443- Al momento de escribir esto, este nombre de host resuelve a las IP de AWS Global Accelerator
3.33.193.183,15.197.193.114 - El certificado TLS es
CN=*.luminatinet.com, y Luminati Networks era el nombre anterior de Bright Data antes de 2018 - Incluso después del rebranding de 2018, la infraestructura activa del SDK sigue usando certificados legacy, y el tráfico hacia
luminatinet.comobrdtnet.comes una pista para identificar el plano de túneles entre pares, no el uso de Bright Data del lado del cliente - El servicio de proxy orientado a clientes actualmente opera bajo dominios de marca
brightdata.com, por lo que el tráfico de red hacialuminatinet.comybrdtnet.comcorresponde al plano de túneles entre pares - El servidor se identifica como
uWebSockets: 20 - El endpoint de pares no exige autenticación para el upgrade y, tras aceptar un WebSocket upgrade válido sobre TLS, envía de inmediato un frame de capa de aplicación que devuelve la IP pública del cliente
- Flujo del handshake
-
- Servidor → Cliente
tunnel_init: crea la sesión y devuelve la IP pública del cliente
- Servidor → Cliente
-
- Servidor → Cliente
cid_set: asigna un identificador de seguimiento de sesión con el formato<IP>-<token>/ls<N>c<M>p443_<IP>_<counter>, confirmado como coincidente con el campociden la telemetría de dispositivos reales
- Servidor → Cliente
-
- Servidor → Cliente
status_get: consulta el estado de inactividad del dispositivo, batería, tipo de red y ancho de banda disponible, y el dispositivo responde con telemetría continua comoidle,wifi_connected,mobile_connected,mobile_type,roaming,battery_level,using_battery,screen_on,on_call,cpu_usage,mem_usage,raw_bw,bw,ipv6_supported,appid,sdk_version,platform,cid
- Servidor → Cliente
-
- Tras completar el handshake, si el dispositivo reporta un estado favorable, la capa de emparejamiento de tareas del servidor puede enviar frames
cmd_tun, y el SDK los ejecuta como solicitudes HTTP a sitios de terceros usando como origen la IP residencial del usuario
- Tras completar el handshake, si el dispositivo reporta un estado favorable, la capa de emparejamiento de tareas del servidor puede enviar frames
- Todos los frames del WebSocket son JSON plano con un envelope fijo
{"type": "ipc_call"|"ipc_post"|"ipc_result"|"ipc_error","cmd": <command>, "cookie": <correlation-id>,"err_code": 0, "msg": { ...payload... }}- Comandos extraídos del binario y verificados en comunicaciones reales
- | Dirección | cmd | Propósito |
- |---|---|---|
- | Server → Client |
tunnel_init| Apertura de sesión, eco de IP pública | - | Server → Client |
cid_set| Asignación del identificador de sesión | - | Server → Client |
status_get| Sondeo de inactividad, batería y ancho de banda del dispositivo | - | Server → Client |
cmd_tun/tun| Entrega de trabajos de scraping | - | Server → Client |
dns| Solicitud de resolución DNS del destino | - | Server → Client |
consent| Solicitud de estado de consentimiento | - | Client → Server |
status_send| Heartbeat periódico del estado del dispositivo | - | Client → Server |
tun_report/tun_ack/tun_fin| Respuestas del ciclo de vida del trabajo de relay | - | Client → Server |
tunnel_init_decline| Rechazo de sesión | - | Client → Server |
logs| Envío de logs de diagnóstico al servidor | - No hay firma de mensajes, HMAC, certificados de cliente ni attestation del dispositivo, y en la práctica lo único que separa a los pares que reciben trabajo real son la capa TLS y los filtros de reputación de IP del servidor
- Para lectores familiarizados con el diseño de protocolos de malware comercial, el nivel de seguridad es en la práctica inferior al de un C2 típico
-
Qué considera el SDK como “inactivo”
- La configuración especifica las reglas de estado del dispositivo que permiten retransmitir tráfico de otras personas
"idle_metrics": { "ignore_screen_on": true, "ignore_on_call": true, "max_bw_ratio": 1, "min_battery": 0.2, "wifi_on_battery": true, "min_battery_wifi": 0.2, "max_cpu_usage": 70, "max_mem_usage": 90, "mem_screen_off": true, "idle_timeout": 30, "not_idle_timeout": 10 }- Debido a los flags
ignore_screen_onyignore_on_call, “inactivo” no significa que el usuario esté lejos del dispositivo, sino que CPU, memoria y batería están dentro de los umbrales del SDK - Incluso si el usuario está en una llamada o leyendo activamente la pantalla, el estado se considera inactivo para fines de relay
-
Vinculación de identidad entre plataformas
- La configuración contiene el siguiente map
dual_pairing
"dual_pairing": { "ios_com.brd.earnapp": ["win_earnapp.com", "mac_com.earnapp"] }- Este map es una estructura de vinculación del lado del servidor que agrupa instalaciones de iOS, Windows y macOS de la misma marca como una sola entidad
- El campo
http3_enabled: truees un flag para transporte de pares basado en QUIC, y versiones futuras podrían mover el túnel de pares de TCP/443 a UDP/443 - Los defensores que detectan el WebSocket mediante rastreo de conexiones TCP podrían ver rota su forma de detección si se migra a UDP/443
- La configuración contiene el siguiente map
-
Evasión de inspección
- El flag
use_netifs: trueen la configuración del SDK es la condición que hace que el código binario del SDK construyaNWConnectionsobre interfaces requeridas específicas en lugar de la ruta predeterminada del sistema - Las interfaces requeridas son
en0para Wi‑Fi opdp_ip0para celular - En iOS, este método evita por completo la interfaz
tun0de una VPN configurada, y aunque otro tráfico HTTPS de la app pase por la VPN, el túnel de pares no atraviesa la VPN configurada por el usuario
- El flag
-
El entorno de investigación de interceptación TLS transparente capturó todas las llamadas HTTPS del SDK, pero no logró capturar el túnel peer
proxyjs.brdtnet.com:443aunque el puerto 443 fue redirigido explícitamente al inspector- La evasión usa la API documentada de Apple
NWParameters.requiredInterface - El SDK usa dos evasiones independientes de inspección
- Plano de control: la obtención de configuración y los pings de telemetría se basan en las primitivas
CFHTTPMessagede CFNetwork en lugar deURLSessionyNSURLConnection, desactivando la instrumentación a nivelURLSession, el swizzling, las network extension y las subclases deURLProtocol, comunes en herramientas de seguridad para apps móviles, mientras sigue respetando el proxy del sistema, lo que mantiene visibilidad para investigadores de interceptación TLS - Plano de datos: el túnel peer se basa en
NWConnectioncon la interfaz física configurada como interfaz obligatoria, desactivando la VPN y garantizando que el scraping se ejecute desde una IP residencial - El canal más sensible para los equipos de seguridad que usan MDM, inspección de tráfico basada en VPN corporativa o controles parentales del router doméstico está diseñado para eludir la capa de visibilidad
- La evasión usa la API documentada de Apple
Niveles por país
- La configuración incluye umbrales de ancho de banda por país
| País | Batería mínima para relay | Límite diario | Límite mensual |
|---|---|---|---|
| Uzbekistan | 1% | 1GB | 30GB |
| Oman | 1% | 1GB | 30GB |
| Qatar | 20% | 40MB | 250MB |
| UAE | 20% | 40MB | 250MB |
| default, worldwide | 20% | 50MB | 500MB |
- Los dispositivos de Uzbekistan y Oman permiten relay hasta con 1% de batería; el límite diario es 20 veces el valor predeterminado y el mensual es 60 veces el valor predeterminado
- Los dispositivos de Qatar y UAE quedan restringidos con límites más bajos que el valor predeterminado
- No es posible confirmar por qué los niveles por país están configurados de esta forma; solo se puede especular
- Incluso la asignación predeterminada global permite 500MB mensuales de tráfico de otras personas a través del internet doméstico del usuario
Configuración de pruebas y metodología
- Durante 30 días se realizó captura con un proxy de interceptación TLS en dispositivos iOS que ejecutaban apps asociadas instaladas con consentimiento; una app de ejemplo fue XYO COIN, que integra Bright SDK
- Se realizó análisis estático de
brdsdk.frameworkversion1.532.120, para el binario iOS arm64 - Los nombres de host específicos de Bright Data, huellas de certificados e infraestructura TLS son observables públicamente por cualquiera que realice las mismas solicitudes
- El documento no incluye datos de identificación por sesión de la flota o clientes de investigación
Cronología
- El 11 de mayo de 2026 se envió un correo de aviso previo a publicación a
privacy@brightdata.com - Hasta el momento de la publicación no hubo respuesta a ese aviso
Enfoques de defensa
- El tráfico deja un fingerprint claro en el perímetro de red, y el SDK está diseñado para dejar símbolos identificables en el binario de la app
- Enfoque 1: bloqueo por DNS, una forma simple y efectiva para dispositivos que enrutan por la red
proxyjs.brdtnet.comproxyjs.luminatinet.comproxyjs.bright-sdk.comclientsdk.bright-sdk.comclientsdk.brdtnet.com
- Bloquear
proxyjs.*interrumpe los túneles peer y no afecta a clientes que usen legítimamente el servicio de proxy de Bright Data para clientes en otros dominios - Enfoque 2: filtrado TLS SNI, que bloquea o alerta sobre handshakes TLS cuyo
server_namecoincida con*.brdtnet.com,*.luminatinet.com,*.luminati.io - El filtrado SNI funciona en el perímetro de red sin inspección TLS
- Enfoque 3: detección por huella de certificado TLS, que bloquea o alerta según las siguientes huellas
.brdtnet.com→ SHA256313ce4ec7d5a51e5….luminatinet.com→ SHA2565028612e625befea…
- Las huellas de certificados son estables hasta que Sectigo reemplace los certificados, y los certificados actuales son válidos hasta mediados de 2026
- Debido a las restricciones relacionadas con
use_netifs, los tres niveles solo funcionan cuando el tráfico cruza el perímetro de red - Cuando un dispositivo iOS usa red celular, el binding
use_netifsdel SDK hace posible que el tráfico peer evite por completo el Wi‑Fi corporativo - Un control complementario para flotas de dispositivos administrados es el escaneo del binario de apps basado en MDM: buscar en las apps instaladas los símbolos de Swift
BrdWebSocketFacadeyBrdNetwork.DNSResolver, y prohibir en dispositivos corporativos las apps que contengan esos símbolos - Los usuarios domésticos preocupados por una smart TV o app móvil específica pueden bloquear esos nombres de host en la configuración DNS del router
- Ejemplos de herramientas de bloqueo: Pi-hole, NextDNS, Cloudflare Gateway o funciones equivalentes del ISP
1 comentarios
Opiniones de Lobste.rs
Hablando de este protocolo, crear un honeypot inverso que voluntariamente devuelva datos basura generados aleatoriamente en cada solicitud podría convertirse en un divertido proyecto de vibe coding para alguien a quien le sobren tokens
Ni siquiera hace falta vibe coding; ya existen decenas de herramientas capaces de hacer esto. Muchas de ellas llevan más de un año suministrando datos basura interminables a este tipo de proxies
No entiendo en absoluto por qué alguien conectaría a internet una TV o cualquier otro electrodoméstico. No hay una buena razón para hacerlo