En los primeros años de la década de 2000, las extensiones para navegadores comenzaron a atraer la atención generalizada con su adopción por Firefox y Chromium, y desde entonces su popularidad ha estado en constante aumento. En la actualidad, es común que incluso los usuarios promedio tengan al menos una extensión instalada, generalmente un bloqueador de anuncios. Sin embargo, la investigación sobre la seguridad de estas extensiones se encuentra dispersa entre informes de errores individuales y cobertura de extensiones maliciosas de Chrome.
Una extensión de navegador es un conjunto de archivos HTML, CSS y JavaScript que trabajan en conjunto para mejorar la experiencia de navegación. Estos archivos suelen ejecutarse en su propio dominio, etiquetado por la identificación de la extensión. Además, las extensiones cuentan con un archivo de configuración importante llamado manifest.json
, que lista la identificación de la extensión, los permisos requeridos y la accesibilidad de la misma. A medida que avanza el ecosistema de navegadores, las versiones de manifest.json
también evolucionan, implementando configuraciones de seguridad más estrictas.
El análisis de la estructura de las extensiones revela tres contextos principales en los que pueden ejecutarse los archivos: el script de página web, el popup y el contexto de fondo (background). Cada contexto tiene sus propias características y permisos, y se especifica en el archivo manifest.json
.
El contexto de fondo es el más poderoso de los tres, ya que tiene la capacidad de acceder a la mayoría de las API de extensiones de navegador. A través del archivo manifest.json
, se pueden solicitar permisos que, una vez otorgados, otorgan a la extensión un importante control sobre la experiencia de navegación del usuario. Aunque estas capacidades están protegidas por permisos, es fundamental revisar los permisos que una extensión solicita antes de instalarla.
El script de contenido es el encargado de interactuar con el DOM de las páginas web visitadas por el usuario, siendo útil para tareas como la traducción de texto en la página actual. Aunque el script de contenido no puede acceder directamente al DOM, sí permite enriquecer la experiencia de navegación.
Por su parte, el contexto de popup se forma por el HTML y JavaScript que componen el menú que aparece al hacer clic en el icono de la extensión. Frecuentemente, este permite al usuario interactuar directamente con la funcionalidad de la extensión.
La seguridad de las extensiones se enfrenta a varios riesgos de vulnerabilidades clásicas en JavaScript. Una pieza clave en la protección es el Content Security Policy (CSP), que impone ciertas restricciones, como la prohibición del uso de unsafe-inline
en las extensiones, lo que ayuda a impedir vulnerabilidades de XSS (Cross-site Scripting).
Distintas versiones de manifest han mejorado la seguridad en las extensiones. Por ejemplo, las políticas más recientes introducidas en Chromium requieren permisos explícitos para enviar cookies, reduciendo así la posibilidad de ataques de tipo SSRF (Server-Side Request Forgery).
En conclusión, si bien las extensiones de navegador continúan siendo una herramienta valiosa para personalizar y mejorar la experiencia de navegación, es crucial que tanto desarrolladores como usuarios finales sean conscientes de los posibles riesgos de seguridad. Auditorías y prácticas seguras en el desarrollo de estas herramientas son esenciales para prevenir vulnerabilidades que puedan comprometer la integridad del navegador y la privacidad del usuario.
vía: GitHub Security