Você tranca a porta de casa, coloca senha no celular, ativa o Face ID, nega permissão de localização para aquele app suspeito. Mas enquanto você faz tudo isso, seus apps já sabem seu fuso horário, o nível da bateria, quais teclados você instalou, qual calendário usa, o tamanho exato da tela, e mais umas 40 coisas que jamais passaram pela sua cabeça. Sem pedir. Sem notificar. Sem aquele popup irritante do “Permitir” ou “Não Permitir”.
A equipe de pesquisa canadense Mysk — conhecida por expor práticas de tracking em apps populares — acaba de lançar o Loupe, um app open source para iOS que mostra, de forma crua e direta, tudo que qualquer app nativo consegue ler do seu dispositivo usando APIs públicas da Apple. O projeto explodiu no Hacker News com quase 500 pontos e já tem mais de 1.000 estrelas no GitHub. E o motivo é simples: ele revela que a privacidade do iPhone é, em grande parte, teatro.
O que é fingerprinting e por que você deveria se preocupar
Fingerprinting de dispositivo é uma técnica de rastreamento que não depende de cookies, IDs de publicidade ou qualquer dado pessoal tradicional. Em vez de perguntar “quem é você?”, o tracker pergunta “como é o seu dispositivo?” — e a combinação de respostas é tão única que funciona como uma impressão digital.
Pense assim: sozinho, o fato de você usar o calendário gregoriano não diz muita coisa. Mas combine isso com fuso horário America/Sao_Paulo, idioma pt-BR, teclado Portuguese (Brazil), tela de 6.7 polegadas a 460 PPI, brilho em 78%, bateria em 63% carregando via cabo, e modo escuro ativado. Quantas pessoas no planeta têm exatamente essa combinação? Provavelmente só você.
É isso que o Loupe mostra. Não em teoria — na prática. Valores reais, lidos ao vivo do seu dispositivo.
As 3 camadas de exposição
O Loupe organiza os dados em três níveis, baseados no custo de acesso para o app. E é aqui que a coisa fica desconfortável.
Camada 1: Sinais passivos (sem permissão nenhuma)
Essa é a mais assustadora. São dados que qualquer app acessa no instante em que você abre ele, sem trigger nenhum, sem popup, sem rastro no painel de privacidade do iOS. A Apple simplesmente expõe essas informações via APIs públicas e qualquer desenvolvedor pode ler.
O que entra aqui:
| Dado | Por que importa | |
|---|---|---|
| —— | —————– | |
| Locale e idioma preferido | Identifica país, cultura, possível origem | |
| Fuso horário | Localização geográfica aproximada | |
| Calendário (gregoriano, islâmico, japonês) | Cultura e religião | |
| Teclados instalados | Idiomas que você fala | |
| Modelo do dispositivo | iPhone 16 Pro Max vs iPhone SE diz muito sobre renda | |
| Tamanho e escala da tela | Identificação precisa do modelo | |
| Nível de bateria e estado de carga | Sinal temporário, mas combinável | |
| Espaço de armazenamento disponível | Assinatura única do dispositivo | |
| Modo de interface (claro/escuro) | Preferência pessoal | |
| Acessibilidade (VoiceOver, texto em negrito, reduzir movimento) | Perfil comportamental | |
| Nome do dispositivo | Muita gente deixa “iPhone de João” |
Eu já vi muita coisa em segurança, mas o “nome do dispositivo” me pega toda vez. Quantas pessoas ainda usam o padrão “iPhone de [Nome]”? É literalmente seu nome completo, disponível para qualquer app, sem permissão alguma.
E o armazenamento disponível é outro caso curioso. O número exato de bytes livres no seu telefone muda constantemente — o que paradoxalmente o torna um identificador mais único. É como um número de série que se atualiza a cada segundo, mas mantém um padrão reconhecível.
Camada 2: Dados que pedem permissão
Esses são os que você conhece — o popup aparece, você toca em “Permitir” ou “Não Permitir”, e segue a vida. Entram aqui:
- Localização (GPS, Wi-Fi, cell tower)
- Contatos (nome, telefone, email de todo mundo)
- Fotos (acesso à galeria completa)
- Calendário (seus eventos, reuniões, compromissos)
- Câmera e microfone
- Bluetooth (scan de dispositivos próximos)
O problema não é que eles pedem — é que a maioria das pessoas diz sim sem pensar. E uma vez concedida, a permissão fica ativa indefinidamente até você ir lá em Ajustes > Privacidade e revogar manualmente. Levanta a mão quem faz isso periodicamente.
Camada 3: Técnicas avançadas (o lado criativo da coisa)
Aqui é onde fica realmente interessante — e onde os devs que estão lendo vão levantar a sobrancelha. São usos criativos (ou abusivos, depende do ponto de vista) de APIs públicas para extrair informação que não deveria ser acessível.
URL Scheme Probing via canOpenURL
O iOS tem uma API chamada canOpenURL() que permite a um app verificar se outro app está instalado no dispositivo. A ideia original era simples: “antes de abrir o WhatsApp, deixa eu checar se o usuário tem o WhatsApp instalado”.
Só que trackers usam isso para escanear dezenas ou centenas de URL schemes conhecidos. Se whatsapp://, telegram://, signal://, tiktok://, bumble://, grindr:// respondem true ou false, o tracker sabe quais apps você tem instalados. E essa lista de apps é um retrato absurdamente detalhado da sua vida.
// Exemplo simplificado - qualquer app pode fazer isso
let schemes = ["whatsapp", "telegram", "signal", "tiktok", "instagram", "spotify"]
for scheme in schemes {
if UIApplication.shared.canOpenURL(URL(string: "\(scheme)://")!) {
print("\(scheme) está instalado")
}
}
A Apple limitou isso no iOS 9, exigindo que o app declare no Info.plist quais schemes quer verificar. Mas o limite é de 50 schemes — o que é mais que suficiente para criar um perfil detalhado.
Keychain Persistence
Essa é sinistra. O Keychain do iOS persiste dados mesmo após o app ser desinstalado e reinstalado. Isso significa que um tracker pode salvar um identificador único no Keychain, e quando você reinstala o app (achando que está começando do zero), ele lê o Keychain e sabe que é você de novo.
// Salva um ID único no Keychain
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "tracker_id",
kSecValueData as String: UUID().uuidString.data(using: .utf8)!
]
SecItemAdd(query as CFDictionary, nil)
// Após desinstalar e reinstalar, esse ID ainda está lá
Ou seja: deletar e reinstalar o app não reseta seu rastreamento. O tracker te reconhece de volta na hora.
A matemática da unicidade
Cada sinal individual não identifica ninguém. Mas a combinação é onde a mágica negra acontece.
Pense em entropia de informação. Se um sinal tem 10 valores possíveis, ele carrega ~3.3 bits de entropia. Combine 15 sinais com essa entropia média e você tem ~50 bits. Com 50 bits de entropia, é possível identificar de forma única mais de 1 quatrilhão de dispositivos. No planeta inteiro existem cerca de 7 bilhões de smartphones.
Pesquisadores já demonstraram que com apenas 7-10 sinais passivos do iOS, é possível atingir taxas de identificação acima de 90%. O Loupe mostra mais de 50 sinais. Faça as contas.
E o pior: diferente de um cookie que você pode apagar, ou um Advertising ID que você pode resetar, fingerprinting não tem botão de “desligar”. Não existe uma configuração em Ajustes > Privacidade > Impedir Fingerprinting. A Apple simplesmente não oferece essa opção.
A ironia suprema: o Loupe foi escrito por IA
O README do projeto traz uma nota que é quase poética na sua ironia:
“Loupe was written almost entirely by AI coding tools.”
Um app sobre privacidade e rastreamento — um dos temas mais sensíveis em segurança da informação — foi construído quase inteiramente por ferramentas de IA que, por sua vez, são alimentadas por dados de treinamento que frequentemente incluem código sem consentimento explícito dos autores originais.
Mas vamos ao que interessa: o app é open source sob licença MIT. Qualquer pessoa pode auditar o código, verificar que ele não envia dados para lugar nenhum, e confirmar que faz exatamente o que promete. Código aberto é o grande equalizador — não importa quem (ou o quê) escreveu, o que importa é que qualquer um pode verificar.
O que a Apple faz (e não faz) sobre isso
A Apple gosta de se posicionar como a campeã da privacidade. “What happens on your iPhone stays on your iPhone” virou slogan de campanha. E, para ser justo, eles fizeram movimentos importantes:
- App Tracking Transparency (ATT) no iOS 14.5 — o popup “Allow Tracking” que destruiu ~$10 bilhões em receita do Facebook
- Intelligent Tracking Prevention no Safari
- Private Relay (iCloud+) para esconder IP
- Nutrition Labels de privacidade na App Store
Mas nenhuma dessas medidas toca no fingerprinting passivo. O ATT é sobre o IDFA (Identifier for Advertisers), não sobre APIs de sistema. O Private Relay esconde seu IP, mas não impede um app local de ler seu fuso horário. As nutrition labels dependem de autodeclaração do desenvolvedor — e ninguém declara “eu uso fingerprinting”.
O resultado é uma falsa sensação de segurança. Você nega tracking no popup do ATT, acha que está protegido, e enquanto isso 50 sinais passivos continuam sendo lidos em silêncio.
A Apple poderia mitigar isso. Poderia adicionar ruído aos valores retornados pelas APIs (retornar bateria como “entre 60% e 70%” em vez de “63%”). Poderia randomizar o nome do dispositivo para apps de terceiros. Poderia exigir permissão para ler teclados instalados. Mas até agora, nada.
Na prática: o que você pode fazer hoje
Eu não vou te dizer para parar de usar iPhone. Mas existem ações concretas que reduzem sua superfície de fingerprinting:
- Mude o nome do dispositivo — Vá em Ajustes > Geral > Sobre > Nome. Troque “iPhone de Maria” por algo genérico como “iPhone” ou algo aleatório.
- Remova teclados extras — Se você adicionou um teclado em inglês por conveniência mas nunca usa, remova. Cada teclado é um sinal.
- Use o modo Restrito de USB — Ajustes > Face ID e Código > Acessórios USB. Impede conexões USB quando bloqueado.
- Revise permissões periodicamente — Ajustes > Privacidade e Segurança. Revogue permissões de apps que não precisam delas.
- Instale o Loupe — Sério. Veja com os próprios olhos o que seus apps enxergam. O app é gratuito na App Store e não coleta nenhum dado.
- Limite URL Schemes — Se você é desenvolvedor, declare apenas os schemes que realmente precisa no
Info.plist. Não contribua para o problema.
Para devs: o que isso significa para seus apps
Se você desenvolve para iOS, o Loupe é uma chamada para reflexão. Pergunte-se:
- Meu app acessa algum dado passivo que não precisa?
- Meu SDK de analytics usa fingerprinting sem eu saber?
- Eu auditei os SDKs de terceiros integrados no meu app?
Muitos SDKs de analytics e monetização fazem fingerprinting “por baixo dos panos”. O Firebase, o Adjust, o AppsFlyer — todos coletam sinais de dispositivo. Alguns são transparentes sobre isso, outros nem tanto.
Uma boa prática é rodar o Loupe em um dispositivo de teste e depois rodar seu app. Compare os valores. Se seu app (ou um SDK dentro dele) está lendo dados que não deveria, é hora de uma auditoria séria.
Mysk e o histórico de expor big techs
Essa não é a primeira vez que o Mysk incomoda gente grande. A equipe canadense já:
- Provou que o TikTok lia a área de transferência do iPhone a cada keystroke
- Demonstrou que apps como LinkedIn, Reddit e outros faziam o mesmo
- Revelou que o YouTube rastreava usuários mesmo no modo anônimo
- Criou o Psylo, um browser focado em privacidade
O Loupe é a evolução natural desse trabalho: em vez de publicar um paper que 5.000 pessoas leem, criaram um app que qualquer pessoa pode instalar e ver com os próprios olhos. Privacidade deixou de ser um conceito abstrato e virou uma tela com dados ao vivo.
O elefante na sala: Android é pior
Antes que alguém diga “por isso eu uso Android” — a situação no Android é significativamente pior. O modelo de permissões do Android historicamente foi mais permissivo, o ecossistema de apps é menos curado, e o Google (que vive de publicidade) tem incentivos alinhados com tracking, não contra ele.
O Loupe por enquanto é exclusivo do iOS. Mas o conceito se aplica — e seria fascinante ver uma versão Android que expusesse o mesmo tipo de dado. Provavelmente a lista seria ainda mais longa.
A versão desktop vem aí
O repositório no GitHub indica que uma versão macOS está em desenvolvimento. Isso é relevante porque desktop fingerprinting é um campo ainda mais maduro — fontes instaladas, extensões do navegador, resolução de tela, GPU, e centenas de outros sinais que sites acessam via JavaScript sem qualquer permissão.
Se o Loupe para Mac tiver o mesmo impacto que a versão iOS, vai ser um banho de água fria para quem acha que usar Safari com “Prevent Cross-Site Tracking” é suficiente.
—
Privacidade digital virou uma corrida armamentista. De um lado, Apple, Google e Mozilla adicionam proteções. Do outro, a indústria de tracking encontra novos vetores. O Loupe não resolve o problema — mas tira o véu. E às vezes, saber que está sendo observado já muda o comportamento.
O código está no GitHub, o app é gratuito na App Store, e os dados não saem do seu dispositivo. Qual é sua desculpa para não instalar?
—
Fonte de inspiração: Loupe — A iOS app that raises awareness about what native apps can see — Hacker News #1 trending













