Identificação através da análise de manipuladores de protocolos externos no navegador

Os desenvolvedores da biblioteca fingerprintjs, que permite gerar identificadores de navegador em modo passivo com base em recursos indiretos como resolução de tela, recursos WebGL, listas de plugins e fontes instaladas, apresentaram um novo método de identificação baseado em uma avaliação dos aplicativos típicos instalados no usuário e trabalhando verificando o suporte nos manipuladores de protocolo adicionais do navegador. O código do script com a implementação do método é publicado sob a licença do MIT.

A verificação é realizada com base na análise da vinculação de manipuladores a 32 aplicativos populares. Por exemplo, ao determinar a presença dos manipuladores de esquema de URL telegrama://, slack:// e skype:// no navegador, você pode concluir que o sistema possui aplicativos telegrama, slack e skype, e usar essas informações como um sinal ao gerar um identificador de sistema. Como a lista de manipuladores é a mesma para todos os navegadores do sistema, o identificador não muda ao mudar de navegador e pode ser usado no Chrome, Firefox, Safari, Brave, Yandex Browser, Edge e até mesmo Tor Browser.

O método permite gerar identificadores de 32 bits, ou seja, individualmente não permite alcançar grande precisão, mas faz sentido como um recurso adicional em combinação com outros parâmetros. Uma desvantagem notável do método é a visibilidade da tentativa de identificação para o usuário - ao gerar um identificador na página de demonstração proposta, uma janela pequena, mas claramente perceptível, se abre no canto inferior direito, na qual os manipuladores rolam por um longo tempo. Esta desvantagem não aparece no Tor Browser, no qual o identificador pode ser calculado despercebido.

Para determinar a presença de um aplicativo, o script tenta abrir um link associado a um manipulador externo em uma janela pop-up, após a qual o navegador exibe uma caixa de diálogo solicitando que você abra o conteúdo do aplicativo associado se o aplicativo que está sendo verificado for presente ou exibe uma página de erro se o aplicativo não estiver no sistema. Através de uma busca sequencial de manipuladores externos típicos e análise de retornos de erros, pode-se concluir que o sistema contém os programas que estão sendo testados.

No Chrome 90 para Linux, o método não funcionou e o navegador exibiu uma caixa de diálogo de confirmação de operação padrão para todas as tentativas de verificação do manipulador (no Chrome para Windows e macOS o método funciona). No Firefox 88 para Linux, tanto no modo normal quanto no modo de navegação anônima, o script detectou a presença de aplicativos adicionais instalados da lista, e a precisão de identificação foi estimada em 99.87% (35 correspondências semelhantes em 26 mil testes realizados). No navegador Tor rodando no mesmo sistema, foi gerado um identificador que correspondeu ao teste no Firefox.

Curiosamente, a proteção adicional no Tor Browser fez uma brincadeira cruel e se transformou em uma oportunidade de realizar a identificação despercebida pelo usuário. Devido à desativação das caixas de diálogo de confirmação para o uso de manipuladores externos no navegador Tor, descobriu-se que as solicitações de verificação podem ser abertas em um iframe e não em uma janela pop-up (para separar a presença e ausência de manipuladores, as regras de mesma origem bloquear o acesso às páginas com erros e permitir o acesso às páginas about:blank). Devido à proteção contra inundações, a verificação no navegador Tor leva muito mais tempo (10 segundos por aplicativo).

Fonte: opennet.ru

Adicionar um comentário