Diseñado para ser promiscuo: tu navegador web

Este artículo fue originalmente publicado en el difunto diario digital Herald Post.


El pasado día 1 de diciembre, el equipo de desarollo de Tor publicó una actualización para su Tor Browser Bundle (Paquete de Navegación Tor). Este navegador es una versión modificada de Mozilla Firefox que emplea la red Tor para garantizar el anonimato del usuario mientras navega por la Red. La actualización que nos ocupa tenía como propósito el de parchear un defecto de seguridad que algunos sitios web maliciosos estaban explotando para tratar de comprometer a sus usuarios. El ataque en cuestión requería que el navegador descargase un programa malicioso de la página (de hecho, código JavaScript) y lo ejecutase.

La naturaleza de esta agresión no hace sino ejemplificar, nuevamente, uno de los mayores problemas que, a mi juicio, infectan la experiencia web: los programas que tu navegador descarga de Internet y ejecuta sin tu consentimiento expreso.

En sus comienzos, el universo web estaba concebido para ser una plataforma de distribución de documentos. No se esperaba que los usuarios hiciesen cosas mucho más complicadas que ir a una página y leerla. Con el tiempo, los usuarios y desarrolladores comenzaron a utilizar la web como una plataforma donde se ejecutaban aplicaciones. Los usuarios ya no se limitaban a leer documentos: iban a foros en los que podían publicar su propio contenido, o a clientes web de correo electrónico mediante los cuales podían leer o enviar emails. Estos nuevos sitios no eran ya documentos, sino programas (en realidad, conjuntos de programas) muy dinámicos que interactúan con los usuarios y toman decisiones inteligentes.

Debido a sus orígenes como simple plataforma de distribución de documentos, la tecnología subyacente que sustentaba la web era muy limitada. Por eso, para poder sostener todas estas nuevas aplicaciones, se comenzó a emplear una cosa que se llama código para clientes (client-side scripting). La idea es relativamente sencilla: para poder sobrepasar las limitaciones de la tecnología web, el navegador de los visitantes de un sitio web descarga de la página un fragmento de código y lo ejecuta. La ejecución de este código permite al navegador realizar acciones mucho más complejas e interactuar con aplicaciones web mucho más ricas de lo que podría en otras condiciones.

El código para clientes es tan prevalente hoy día, que muchos desarolladores web apenas conciben una pagina sin él. En tiempos actuales, la práctica totalidad de los sitios web que uno visita le hace descargar un programa o varios y ejecutarlo. Y aquí surge la triste tragedia: el Internet moderno espera de ti que, cada vez que visites un sitio web, descargues y ejecutes cualquier programa que te ofrezcan y reces para que no sea código malicioso. Esto es tan seguro como hacer turismo sexual sin llevar preservativos encima. Los navegadores modernos están diseñados para pegarse un revolcón con cualquiera con quien se cruzan por Internet, y no están equipados con una caja de preservativos que sea fácil de usar o nos dé garantías.

Aunque mucho código para clientes moderno tiene aplicaciones benignas, un inmenso porcentaje del mismo se emplea para aplicaciones indeseables, tales como la distribución de anuncios y el rastreo de usuarios. La mayoría de estos programas se ejecutan sin el permiso expreso de los usuarios que los están ejecutando.

Hay maneras de evitar que nuestro navegador descargue y ejecute este código indeseado. La más obvia es desactivar todas las funciones típicas de código cliente de tu navegador (JavaScript, Java y complementos similares), pero hacer esto daña irremediablemente tu experiencia web, porque muchas páginas legítimas no funcionarán sin código para clientes. Una alternativa consiste en instalar un filtro como NoScript. NoScript es un complemento para Mozilla Firefox y Seamonkey que bloquea la ejecución de código para clientes que no está expresamente autorizado. Esto hace posible autorizar la ejecución de código proveniente de sitios web en los que confías y bloquear el resto. Aunque no es un mal enfoque, requiere que el usuario configure sus filtros a mano, cosa que consume tiempo y esfuerzo. Finalmente, una solución recomendada por Snowden consiste en emplear un bloqueador de anuncios convencional. Un complemento como ublock o adblock plus diseñado para matar anuncios puede bloquear la mayor parte de código publicitario y de rastreo de usuarios. Esto reduce drásticamente la cantidad de código que tu navegador ejecutará sin permiso, y es relativamente fácil de implementar. La desventaja es que no bloqueará muchas fuentes de código indeseado o peligroso.