La web está llena de scripts de terceros. Los sitios los utilizan para anuncios, análisis, retargeting y más. Pero esta no es siempre la historia completa. Los scripts pueden rastrear su comportamiento, sus preferencias y otra información.
Aquí, vamos a ver los riesgos potenciales de estos scripts de terceros.
Un script de terceros podría ser un problema de privacidad
Los scripts de terceros pueden informar datos de los que no estaba al tanto.
La documentación de Google, Facebook y Wikipedia nos dice directamente que estos scripts pueden rastrear el comportamiento, los sitios visitados, el historial de compras, la demografía, la dirección IP, la ubicación y más. Esa parte es generalmente conocida.
Algunos de los datos que Facebook puede rastrear, según su documentación.
Si bien el seguimiento estándar de terceros generalmente está documentado, puede haber un seguimiento del que no tengamos conocimiento.
Por ejemplo, según un estudio realizado por investigadores de Princeton y Stanford, el 42% de los principales sitios (Alexa top 50 US) presenta identificadores únicos en texto sin formato. Eso significa que los espías pueden rastrear cosas como su correo electrónico, nombre de usuario, nombre completo, domicilio, compras, ubicación, historial, dirección IP y preferencias. Simplemente haciendo clic en la web, sin saberlo, puede permitir que alguien cree un gran perfil de información sobre usted. De hecho, ese mismo estudio discutió cómo la NSA se aprovechó de algunos de los scripts de Google para rastrear personas.
Aquí hay una captura de pantalla de la guía de implementación oficial de un anunciante que proporciona explícitamente a las personas un código para transmitirles direcciones de correo electrónico como texto sin formato sin cifrar. Encriptan cada dirección después de recibirla, pero aun así se envía como texto sin formato, por lo que el daño ya está hecho.
Guía de implementación que permite enviar correos electrónicos en texto plano.
Un script de terceros podría ser un problema de seguridad
Cada vez que incluye la secuencia de comandos externa de otra persona en su página, existe un riesgo de seguridad inherente porque esa secuencia de comandos tiene acceso total a la parte frontal de su sitio.
Estos son algunos ejemplos de lo que han hecho estos scripts.
Filtración de información de tarjetas de crédito a través de datos no desinfectados
El investigador de seguridad Randy Westergren descubrió que muchos de los principales scripts de seguimiento no desinfectan los datos correctamente (gracias a mi colega Sam Ratcliffe por llamar mi atención sobre este artículo). Esto permite a los atacantes inyectar cualquier código que deseen, incluido el código que puede robar números de tarjetas de crédito.
Aquí hay una captura de pantalla del código malicioso que se inyecta en una URL no desinfectada:
Un atacante podría haber insertado cualquier código.
Lo que hizo que la captura de pantalla anterior fuera particularmente complicada es que la vulnerabilidad en realidad no provino de ese script en sí. En cambio, provino de la implementación insegura de otro script de terceros de otro script de terceros.
Realicé una prueba en un sitio afectado para ver esta vulnerabilidad por mí mismo (no se preocupe, no usé un número de tarjeta real), y resultó fácil extraer información confidencial:
Desde entonces, muchos de los anunciantes han solucionado la vulnerabilidad, pero eso deja abierta la pregunta de qué otras vulnerabilidades aún existen.
Exponer datos privados con scripts que no son HTTPS
Muchas secuencias de comandos de seguimiento en la naturaleza usan HTTP regular no seguro. Esto puede permitir que los atacantes obtengan la información de las personas y puede generar advertencias de seguridad que pueden ahuyentar a los usuarios en páginas seguras.
Aquí hay un ejemplo de una guía de implementación que usa HTTP en una página de carrito segura.
Fuente
El código puede cambiar sin que lo sepas
Con los scripts de terceros, siempre existe el peligro de que el código cambie o desaparezca sin que usted lo sepa.
Mi colega Brent Kimmel me habló de una técnica llamada integridad de subrecursos, que esencialmente le permite asegurarse de obtener lo que espera. En el momento de escribir este artículo, aún no ha obtenido el soporte completo del navegador, pero mantén los ojos abiertos para ello.
También tenga en cuenta que esta técnica funciona mejor cuando el script original de terceros no tiene fallas en primer lugar.
Los scripts de terceros a menudo cargan otros scripts de terceros propios
Cuando los scripts de terceros en los que confía traen scripts que no espera, esto multiplica el potencial de todos los riesgos de seguridad y privacidad mencionados hasta ahora.
Este es un ejemplo de un script de terceros que carga otros scripts:
Siempre es una fiesta cuando los guiones traen a sus amigos.
Un script de terceros puede ser un problema de rendimiento
Cargas de página más lentas
Los scripts de terceros suelen hacer que las páginas se carguen más lentamente. Por ejemplo, el sitio real de Business Insider se carga en aproximadamente 1 segundo, mientras que los scripts de terceros representan la mayoría de los 7 a 15 segundos del tiempo de carga. La siguiente captura de pantalla muestra el final de una larga línea de scripts de terceros que se cuentan por cientos:
Para su crédito, Business Insider parece cargar la mayoría de sus scripts de terceros de forma asincrónica, por lo que el tiempo de carga percibido no lleva entre 7 y 15 segundos.
¿Qué sucede cuando los scripts de terceros no le permiten cargarlos de forma asíncrona?
Algunos scripts no se permiten cargar de forma asíncrona
Cuando un script usa document.write
, que evita que se cargue de forma asíncrona. Se utilizan muchos scripts comunes de terceros document.write
, por lo que bloquean el documento y prolongan los tiempos de carga de la página innecesariamente.
He aquí un ejemplo:
Algunas secuencias de comandos afectan el rendimiento del desplazamiento
Los scripts de terceros a menudo realizan operaciones en el evento de desplazamiento. Aquí hay una captura de pantalla de un script que ejecuta un bucle en cada desplazamiento.
Si bien este ejemplo por sí solo no eliminará un sitio, puede contribuir a una ralentización notable cuando varias secuencias de comandos martillan el evento de desplazamiento.
Un script de terceros podría tener consecuencias no deseadas
Los scripts de terceros pueden hacer todo tipo de cosas inesperadas en sus páginas. Aquí hay algunos.
Sobrescribiendo tus variables
Algunas de las secuencias de comandos de terceros más utilizadas en la web utilizan variables globales innecesarias que pueden sobrescribir las variables en su sitio.
La siguiente captura de pantalla muestra un script que usa dos variables globales para generar un número aleatorio (incluso usando una conversión de tipo innecesaria en el proceso).
Crear riesgos innecesarios mediante el uso de eval
Ya que eval
ejecutará cualquier cosa, es un objetivo principal para los atacantes. Este es un ejemplo de un script de seguimiento con una función que utiliza eval
en cualquier JavaScript arbitrario. Curiosamente, la función en realidad se llama arbitraryJSCode
.
Mientras eval
no necesariamente destruye todo en todos los casos, sí presenta riesgos, por lo que al menos merece una segunda mirada cuando lo vea.
Cambiando tu diseño
Algunas secuencias de comandos de seguimiento insertan imágenes diminutas e iframes en la parte inferior o superior de la página, lo que puede crear un espacio sobre el encabezado o debajo del pie de página.
La siguiente captura de pantalla muestra una etiqueta de seguimiento que crea un espacio en la parte inferior del sitio de Comcast/Xfinity.
Alternativamente, una secuencia de comandos de terceros simplemente puede funcionar mal como en la siguiente captura de pantalla con algún código de anuncio en el sitio de Elite Daily:
Preparándolo para errores al vincular la funcionalidad demasiado cerca del DOM
El siguiente ejemplo muestra un script de seguimiento cuya funcionalidad depende de elementos DOM específicos. Un ligero cambio en el diseño del sitio puede romper este código.
Resumen
Los scripts de terceros pueden proporcionar una funcionalidad poderosa, pero también conllevan riesgos para la privacidad, la seguridad, el rendimiento y el comportamiento de la página. Ahora que ha visto algunos de los riesgos de los scripts de terceros, es de esperar que tenga una idea de qué esperar cuando los encuentre.
Si tiene alguna pregunta, pensamiento o historia, no dude en dejar un comentario. Sería interesante escuchar sobre el proceso de pensamiento de las personas al momento de integrarlos. ¿Los evitas todos juntos? ¿Solo permite fuentes en las que confía mucho? ¿Utiliza un intermediario como quizás Google Tag Manager o Segment? ¿Examina el código usted mismo leyéndolo o observando DevTools de cerca?