En los primeros años de la década de 2000, las extensiones para navegadores comenzaron a ganar popularidad gracias a su adopción por navegadores como Firefox y Chromium. Desde entonces, su uso ha crecido de manera constante, convirtiéndose en parte esencial de la experiencia de navegación en internet. Hoy en día, es común que incluso los usuarios menos experimentados tengan al menos una extensión instalada, frecuentemente un bloqueador de anuncios. No obstante, la investigación sobre la seguridad de estas herramientas aún se encuentra dispersa, con informes de fallos individuales y casos de extensiones maliciosas concentrando la atención.
Una extensión de navegador consiste en un conjunto de archivos HTML, CSS y JavaScript diseñados para mejorar la experiencia de navegación del usuario. Estos archivos se ejecutan en su propio dominio, identificado por el código único de la extensión. Un componente crucial de estas extensiones es el archivo de configuración denominado manifest.json. Este archivo incluye la identificación de la extensión, los permisos solicitados y su accesibilidad. Con el desarrollo de los navegadores, las versiones de manifest.json han evolucionado para implementar configuraciones de seguridad más estrictas.
El análisis de la estructura de las extensiones muestra que los archivos pueden ejecutarse en tres contextos principales: el script de página web, el popup y el contexto de fondo. Cada uno de estos contextos posee características y permisos específicos, definidos en el archivo manifest.json.
El contexto de fondo es el más poderoso, dado que puede acceder a la mayoría de las API de las extensiones de navegador. A través del manifest.json se pueden requerir permisos que, una vez concedidos, otorgan a la extensión un control significativo sobre la experiencia de navegación del usuario. Aunque estos permisos ofrecen protección, es fundamental revisar detenidamente los permisos solicitados por una extensión antes de instalarla.
Por su parte, el script de contenido interactúa con el DOM de las páginas web visitadas, siendo útil para tareas como la traducción de textos. Aunque no puede acceder directamente al DOM, permite enriquecer la experiencia del usuario.
El contexto de popup está compuesto por el HTML y JavaScript del menú que aparece al hacer clic en el icono de la extensión. Este permite a los usuarios interactuar de manera directa con la funcionalidad de la extensión.
Las extensiones enfrentan varios riesgos de vulnerabilidades típicas del JavaScript. Un componente clave para su protección es el Content Security Policy (CSP), que impone restricciones como la prohibición de usar unsafe-inline en las extensiones, ayudando a prevenir ataques de Cross-site Scripting (XSS).
Con el paso del tiempo, las políticas de seguridad han mejorado. Versiones recientes del manifest en Chromium exigen permisos explícitos para el envío de cookies, reduciendo así el riesgo de ataques como el Server-Side Request Forgery (SSRF).
En conclusión, las extensiones de navegador son herramientas valiosas para personalizar y mejorar la navegación. No obstante, es vital que tanto desarrolladores como usuarios estén al tanto de los potenciales riesgos de seguridad. La implementación de auditorías y prácticas seguras en el desarrollo de estas herramientas es esencial para prevenir vulnerabilidades que puedan comprometer la integridad del navegador y la privacidad del usuario.