Se ha publicado una herramienta que implementa un método para identificar las extensiones instaladas en el navegador Chrome. La lista obtenida de extensiones puede utilizarse para aumentar la precisión de la identificación pasiva de una instancia específica del navegador, junto con otros indicadores indirectos, como la resolución de pantalla, características de WebGL, listas de plugins y fuentes instaladas. La implementación propuesta verifica la instalación de más de 1000 extensiones. Se ha sugerido una demostración en línea para probar su sistema.
La identificación de extensiones se realiza mediante el análisis de los recursos proporcionados por las extensiones, que están disponibles para solicitudes externas. Por lo general, las extensiones incluyen varios archivos auxiliares, como imágenes, que se definen en el manifiesto de la extensión mediante la propiedad web_accessible_resources. En la primera versión del manifiesto de Chrome, el acceso a los recursos no estaba restringido y cualquier sitio podía cargar los recursos proporcionados. En la segunda versión del manifiesto, el acceso a dichos recursos fue permitido por defecto solo para la propia extensión. En la tercera versión del manifiesto, se proporcionó la posibilidad de determinar qué recursos pueden ser proporcionados a qué extensiones, dominios y páginas.
Las páginas web pueden solicitar los recursos suministrados en la extensión utilizando el método fetch (por ejemplo, 'fetch(‘chrome-extension://okb….nd5/test.png’)'), devolviendo el valor 'false' generalmente indica que la extensión no está instalada. Para bloquear la identificación de la extensión mediante la existencia de recursos, algunas extensiones generan un token de verificación necesario para acceder al recurso. La llamada a fetch sin especificar un token siempre falla.
Como se ha descubierto, se puede eludir la protección de acceso a los recursos de las extensiones evaluando el tiempo de ejecución de la operación. A pesar de que fetch devuelve siempre un error al realizar una solicitud sin un token, el tiempo de ejecución de la operación con y sin la extensión es diferente: si la extensión está presente, la solicitud requerirá más tiempo que si la extensión no está instalada. Evaluando el tiempo de respuesta, se puede determinar con bastante precisión la presencia de la extensión.
Algunos complementos que no incluyen recursos externos se pueden identificar por propiedades adicionales. Por ejemplo, el complemento MetaMask se puede identificar a través de la evaluación de la propiedad window.ethereum (si el complemento no está instalado, «typeof window.ethereum» devolverá «undefined»).
Fuente: opennet.ru
