Impressão digital eficiente por meio do cache favicon do navegador







Favicon do site de demonstração - um pequeno ícone .ico de 16 * 16 ou 32 * 32 pixels em uma guia do navegador. Ajuda você a navegar por centenas de guias. O Twitter tem um pássaro azul, o Gmail tem um símbolo de e-mail vermelho, a Wikipedia tem um W. em negrito.



Mas acontece que esses ícones representam uma vulnerabilidade por meio da qual você pode realizar impressões digitais - para identificar o usuário mesmo por VPN e modo anônimo no navegador ( veja a demonstração ).



O programador alemão Jonas Strehle no repositório Github descreve um método para instalar um super cookie não removível por meio de favicons: “Os super cookies atribuem IDs exclusivos aos visitantes do site por meio de favicons. Ao contrário dos métodos tradicionais de rastreamento, esse ID é retido quase para sempre e não pode ser removido pelo usuário usando métodos simples. O método de rastreamento funciona mesmo no modo anônimo. Os super cookies não são excluídos quando você limpa o cache, fecha o navegador ou reinicia o sistema, usa VPN ou bloqueadores de anúncios. ”



Como funciona a impressão digital



Para exibir o ícone, o seguinte atributo é inserido no código da página:



<link rel="icon" href="/favicon.ico" type="image/x-icon">
      
      





Os favicons devem ser facilmente acessíveis por meio de um navegador. Portanto, eles são armazenados em cache em um banco de dados local separado, o chamado cache de favicon (F-Cache), onde a URL, o ID do favicon e o tempo de vida são armazenados.



Quando um usuário visita o site, o navegador verifica o F-Cache local em busca de uma entrada contendo a URL do site ativo. Se a entrada for encontrada, o ícone é carregado do cache. Se não houver nenhuma entrada, o navegador enviará uma solicitação GET para baixar o favicon do servidor.



Esse mecanismo permite que o servidor aprenda muito sobre o visitante. Ao combinar o status de favicons entregues e com falha para URLs específicos, o cliente recebe um modelo exclusivo (número de identificação). Em seguida, o ID é salvo:



const N = 4;
const ROUTES = ["/a", "/b", "/c", "/d"];
const ID = generateNewID(); // -> 1010 • (select unassigned decimal number, here ten: 10 -> 1010b in binary)
      
      





const vector = generateVectorFromID(ID); // -> ["/a", "/c"] • (because [a, b, c, d] where [1, 0, 1, 0] is 1 -> a, c)
      
      





Depois de recarregar o site, esse ID pode ser restaurado da lista de solicitações de rede enviadas pelo cliente para os favicons ausentes - e assim identificar o navegador.



const visitedRoutes = [];
Webserver.onvisit = (route) => visitedRoutes.push(route);  // -> ["/b", "/d"]
Webserver.ondone = () => { const ID = getIDFromVector(visitedRoutes) }; // -> 10 • (because "/a" and "/b" are missing -> 1010b)
      
      





O autor lançou um site para demonstrar impressões digitais usando favicons. O código-fonte e uma descrição detalhada do mecanismo foram publicados .



A pior parte dessa vulnerabilidade é como é fácil contornar os métodos tradicionais que as pessoas usam para proteger sua privacidade. A impressão digital rompe o modo "privado" do Chrome, Safari, Edge e Firefox, disse Strehle. Limpeza de cache, VPN ou bloqueador de anúncios - nada atrapalha os favicons maliciosos.



As mesmas conclusões foram alcançadas por pesquisadores da Universidade de Illinois no trabalho científico recentemente publicado "Tales of Favicons and Caches: Persistent Tracking in Modern Browsers""Descobrimos que combinar nossa técnica de rastreamento de favicon com impressão digital por meio de atributos imutáveis ​​do navegador permite que o site recupere uma identificação de rastreamento de 32 bits em dois segundos", disse o estudo. - Devido à gravidade da vulnerabilidade, propomos fazer alterações no cache de favicons do navegador para evitar essa forma de rastreamento. Compartilhamos nossas descobertas com desenvolvedores de fornecedores de navegadores que estão explorando opções de mitigação. ”



A impressão digital via favicons atualmente funciona em todos os principais navegadores, incluindo os móveis (sinal de adição):



Navegador





janelas





Mac OS





Linux





iOS





Android





Notas
Chrome (v 87.0) + + + + + ?
Safari (v 14.0) ? + ? + ? ?
Edge (v 87.0) + + ? ? + ?
Firefox (v 85.0) + + ? ? ? Outra impressão digital no modo anônimo
Corajoso (v 1.19.92) + + + ? ? ?


A tabela a seguir mostra o tempo mínimo necessário para realizar um ataque. O valor real também depende de fatores adicionais, como velocidade de conexão à Internet, localização, desempenho do hardware e tipo de navegador.



Redireciona

(N bits)
Número de clientes distinguíveis Tempo de gravação Tempo de leitura Escala de ataque
2 quatro <300 ms <300 ms Um usuário com quatro navegadores
3 8 <300 ms ~ 300 ms Número aproximado de Kardashians
quatro 16 <1 s ~ 1 s Um bando de seus vizinhos
8 256 <1 s ~ 1 s Todos os seus amigos do Facebook
dez 1024 <1,2 s ~ 1 s Vila muito pequena
20 1.048.576 <1,8 s <1,5 s Pequena cidade (San Jose)
24 16.777.216 <2,4 s <2 s Toda Holanda
32 4 294 967 296 ~ 3 s <3 s Todas as pessoas com acesso à internet
34 17 179 869 184 ~ 4 s ~ 4 s 4



All Articles