O que é fingerprinting de navegador

Fingerprinting de navegador e uma técnica que permite identificar um usuário com base nas características únicas do seu dispositivo e ambiente, sem usar cookies. Sites maliciosos e até legítimos usam essa técnica para rastrear visitantes mesmo depois de limpar o histórico.

As informações coletadas vao desde resolução de tela e fontes instaladas até detalhes mais sutis, como o comportamento de operações matemáticas. E e exatamente ai que entra a novidade do Chromium 148.

A surpresa não e que fingerprinting exista, mas que uma função matemática básica como Math.tanh agora seja um vetor confavel para detectar o sistema operacional sem qualquer interação do usuário.

Como funciona a diferença em Math.tanh

Math.tanh e a função tangente hiperbólica do JavaScript. Em teoria, deveria retornar o mesmo resultado para a mesma entrada em qualquer máquina. Na prática, isso nunca foi totalmente verdade porque diferentes processadores e compiladores introduzem variações minúsculas nos últimos bits do resultado.

No Chromium 148, mudanças internas na forma como o motor V8 compila operações de ponto flutuante fizeram com que essas diferenças de implementação entre sistemas operacionais ficassem estáveis e reproduzíveis o suficiente para serem usadas como sinal de fingerprinting.

Ou seja: chame Math.tanh(1) no Chrome em Windows, no Chrome em Linux e no Chrome em macOS, e você pode obter resultados que diferem nos últimos dígitos significativos. Esses dígitos são suficientes para classificar o SÓ com alta precisão.

⚠️
Atenção

Isso não e um bug no JavaScript. E uma consequência das diferenças entre implementações de ponto flutuante em diferentes sistemas operacionais e arquiteturas de CPU.

Por que ficou mais exploitavel no Chromium 148

O time de pesquisa da Scrapfly identificou que a versão 148 do Chromium introduziu mudanças de otimização no V8 que tornaram as diferenças de Math.tanh mais consistentes entre sessões. Antes disso, as variações eram mais ruidosas e menos confiáveis como sinal.

Com a versão 148, foi possível construir um classificador simples que, com apenas algumas chamadas a Math.tanh com entradas específicas, identifica corretamente se o navegador esta rodando em Windows, Linux ou macOS.

O vetor e praticamente invisível porque não requer permissões, não acessa hardware e não usa APIs que bloqueadores possam detectar facilmente. E só JavaScript puro, executado em qualquer página.

💡
Dica

Para testar se seu navegador e afetado, você pode rodar Math.tanh(1e-300) e comparar o resultado com os valores de referência publicados no artigo original da Scrapfly.

Como explorar isso na prática

O processo de detecção e surpreendentemente simples. Um script de fingerprinting chama Math.tanh com uma serie de valores de entrada cuidadosamente escolhidos e registra os resultados. Esses resultados formam uma assinatura que pode ser comparada com um banco de dados de assinaturas conhecidas por SÓ.

Passo a passo típico de um script de detecção:

const inputs = [1e-300, 1e-200, 1e-100, 0.5, 1, 10];
const signature = inputs.map(x => Math.tanh(x).toString());
console.log(signature.join("|"));

Com o resultado em mãos, o site compara com os padrões conhecidos de cada SÓ. A precisão reportada no estudo foi alta o suficiente para uso prático em scripts de fingerprinting reais.

🚀
Pro tip

Se você desenvolve ferramentas de scraping ou automação, este vetor já esta sendo usado para detectar e bloquear bots. Considere adicionar variação artificial aos resultados de Math.tanh para evitar detecção.

Comparação com outros vetores de fingerprinting

Math.tanh não e o único vetor desse tipo. Outros exemplos conhecidos incluem diferenças em Math.sin, Math.cos e operações de ponto flutuante em geral. O que mudou e a confiabilidade e a estabilidade do sinal no Chromium 148.

  • Canvas fingerprinting: renderiza texto e formas e compara pixels. Bloqueavel com extensões.
  • WebGL fingerprinting: usa a GPU para gerar uma assinatura. Também bloqueavel.
  • AudioContext fingerprinting: analisa diferenças no processamento de áudio. Menos comum.
  • Math API fingerprinting: usa diferenças de ponto flutuante. Muito difícil de bloquear sem impacto.

A grande diferença do Math.tanh e que bloquear essa técnica sem quebrar código legítimo e extremamente difícil. Qualquer site que precise de Math.tanh para cálculos reais seria afetado por uma proteção ingénua.

Pontos positivos e limitações

Do ponto de vista de quem quer detectar bots e fraudes, Math.tanh como vetor tem vantagens claras: e JavaScript puro, não depende de APIs especiais, funciona mesmo em navegadores endurecidos e e muito difícil de falsificar.

Do ponto de vista de privacidade, a limitação e que não ha forma simples de o usuário se proteger sem usar um navegador que modifique ativamente os resultados de operações de ponto flutuante, como o Tor Browser faz com algumas APIs.

🔴
Cuidado

Extensões de bloqueio de fingerprinting populares como Privacy Badger ou uBlock Origin não bloqueiam vetores baseados em Math. Para isso é necessário um navegador que normalize ativamente os resultados de ponto flutuante.

Casos de uso reais

Empresas de segurança e antifraude como Arkose Labs, DataDome e Akamai já incorporam vetores de ponto flutuante nos seus sistemas de detecção de bots. O Math.tanh do Chromium 148 se torna mais um sinal confavel nesse arsenal.

Desenvolvedores de scraping e automação precisam estar atentos porque seus scripts baseados em Playwright ou Puppeteer podem ser detectados com mais precisão. Ferramentas como o rebrowser-patches já trabalham para neutralizar esse tipo de detecção.

Devs de extensões de privacidade precisam atualizar suas estratégias: simplesmente bloquear APIs não funciona aqui. A proteção real exige interceptar e normalizar Math.tanh, o que tem custo e complexidade.

Dicas e boas práticas

💡
Dica

Se você mantem um sistema antifraude, adicione Math.tanh como sinal de SÓ ao seu perfil de fingerprinting. E um dado estável e difícil de falsificar.

🚀
Pro tip

Para automação em Chromium, use ferramentas que aplicam patches no V8 para normalizar resultados de ponto flutuante, como o rebrowser-patches ou camoufox.

⚠️
Atenção

Se você desenvolve sites e usa bibliotecas de fingerprinting de terceiros, revise se elas já incorporaram esse vetor. Pode haver implicações de LGPD dependendo do uso.

Vale a pena se preocupar?

Para a maioria dos usuários finais, a resposta honesta e: depende do seu modelo de ameaça. Se você usa o browser para navegação comum, a detecção do seu SÓ via Math.tanh não e uma ameaça direta.

Para desenvolvedores que trabalham com automação, scraping ou sistemas antifraude, esse e um sinal relevante que merece atenção imediata. Leia o artigo original da Scrapfly com os valores de referência e adicione ao seu kit de detecção ou evasão conforme o caso.

A tendência e que o time do Chromium trabalhe para normalizar esse comportamento em versões futuras. Mas por enquanto, no Chromium 148, Math.tanh e um vetor real e confavel.