O kit de ferramentas para detectar complementos instalados no Chrome foi publicado

Foi publicado um kit de ferramentas que implementa um método para detectar complementos instalados no navegador Chrome. A lista resultante de complementos pode ser usada para aumentar a precisão da identificação passiva de uma instância específica do navegador, em combinação com outros indicadores indiretos, como resolução de tela, recursos WebGL, listas de plug-ins instalados e fontes. A implementação proposta verifica a instalação de mais de 1000 add-ons. Uma demonstração online é oferecida para testar seu sistema.

A definição dos add-ons é feita através de uma análise dos recursos disponibilizados pelos add-ons, disponíveis para solicitações externas. Normalmente, os complementos incluem vários arquivos de acompanhamento, como imagens, que são definidos no manifesto do complemento pela propriedade web_accessible_resources. Na primeira versão do manifesto do Chrome, o acesso aos recursos não era restrito e qualquer site podia baixar os recursos fornecidos. Na segunda versão do manifesto, o acesso a tais recursos por padrão era permitido apenas para o próprio complemento. Na terceira versão do manifesto foi possível determinar quais recursos podem ser cedidos a quais add-ons, domínios e páginas.

As páginas da Web podem solicitar os recursos fornecidos pela extensão usando o método fetch (por exemplo, "fetch('chrome-extension://okb....nd5/test.png')"), cujo retorno "false" geralmente indica que o complemento não está instalado. Para impedir que um complemento detecte a presença de um recurso, alguns complementos geram um token de verificação necessário para acessar o recurso. Chamar fetch sem especificar um token sempre falha.

Acontece que a proteção do acesso a recursos complementares pode ser contornada estimando-se o tempo de execução da operação. Apesar de fetch sempre retornar um erro ao solicitar sem token, o tempo de execução da operação com e sem o complemento é diferente - se o complemento estiver presente, a solicitação demorará mais do que se o complemento não está instalado. Ao avaliar o tempo de reação, você pode determinar com bastante precisão a presença do suplemento.

Alguns complementos que não incluem recursos acessíveis externamente podem ser identificados por propriedades adicionais. Por exemplo, o complemento MetaMask pode ser definido avaliando a definição da propriedade window.ethereum (se o complemento não estiver definido, "typeof window.ethereum" retornará o valor "indefinido").

Fonte: opennet.ru

Adicionar um comentário