Os desenvolvedores da biblioteca fingerprintjs, que permite gerar identificadores de navegador de forma passiva com base em características indiretas, como resolução de tela, peculiaridades do WebGL, listas de plugins e fontes instaladas, apresentaram um novo método de identificação, baseado na avaliação de aplicativos padrão instalados no usuário e que funciona por meio da verificação de suporte a manipuladores de protocolo adicionais no navegador. O código do script com a implementação do método foi publicado sob a licença MIT.
A verificação é realizada com base na análise da ligação de manipuladores a 32 aplicativos populares. Por exemplo, ao determinar a presença de manipuladores de esquemas de URL telegram://, slack:// e skype:// no navegador, pode-se concluir que os aplicativos telegram, slack e skype estão presentes no sistema, e essa informação pode ser utilizada como um sinal na geração do identificador do sistema. Como a lista de manipuladores é a mesma para todos os navegadores, o identificador não muda ao trocar de navegador e pode ser utilizado no Chrome, Firefox, Safari, Brave, Yandex Browser, Edge e até no Tor Browser.
O método permite gerar identificadores de 32 bits, ou seja, isoladamente não proporciona alta precisão, mas é útil como um sinal adicional em conjunto com outros parâmetros. Um aspecto negativo do método é a visibilidade da tentativa de identificação para o usuário — ao gerar o identificador na página de demonstração proposta, uma pequena janela aparece no canto inferior direito, onde os manipuladores são percorridos claramente por um bom tempo. Esse problema não se manifesta no Tor Browser, onde o identificador pode ser calculado de forma discreta.
Para determinar a presença de um aplicativo, o script tenta abrir uma link associado a um manipulador externo em uma janela pop-up. O navegador então exibe uma caixa de diálogo sugerindo abrir o conteúdo no aplicativo associado, caso o aplicativo verificado esteja presente, ou retorna uma página de erro se o aplicativo não estiver no sistema. Através da verificação sequencial de manipuladores externos padrão e da análise do retorno de erro, é possível concluir sobre a presença dos programas verificados no sistema.
No Chrome 90 para Linux, o método não funcionou e o navegador exibiu um diálogo padrão de confirmação da operaçã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 privativo, o script identificou a presença de aplicativos adicionais da lista, com uma precisão de identificação avaliada em 99,87% (35 correspondências semelhantes de um total de 26 mil testes realizados). No Tor Browser, executado na mesma sistema, foi gerado um identificador que coincidiu com o teste no Firefox.
É interessante que a proteção adicional no Tor Browser tenha tido um efeito adverso, permitindo a identificação discretamente para o usuário. Devido ao bloqueio das janelas de confirmação de uso de manipuladores externos no Tor Browser, foi possível abrir as requisições de verificação em um iframe, em vez de um popup (para diferenciar a presença e ausência de manipuladores, o que é usado são as regras de same-origin que bloqueiam o acesso a páginas com erro e permitem acesso a páginas about:blank). Devido à proteção contra flooding, a verificação no Tor Browser leva significativamente mais tempo (10 segundos por aplicativo).
Fonte: opennet.ru
