AppLovin Mediação Cipher Quebrada: Impressão Digital do Dispositivo Ignora ATT

Uma análise aprofundada do protocolo de mediação de anúncios da AppLovin expôs uma cifra personalizada que falha em proteger a privacidade do usuário. O pesquisador descriptografou mais de 5.000 requisições reais de lances capturadas de usuários consentidos e descobriu que a carga útil criptografada transmite dados suficientes do dispositivo para identificar exclusivamente um iPhone entre aplicativos de diferentes editores — mesmo quando o usuário negou a permissão de Transparência de Rastreamento de Aplicativos (ATT).
Como a Cifra Funciona
Cada requisição de mediação é um HTTPS POST para ms4.applovin.com/1.0/mediate. Dentro da camada TLS, uma segunda cifra envolve a carga útil. Após a decodificação base64, o formato do fio é três campos separados por dois pontos + texto cifrado:
2:8a2387b7dbed018e5e485792eac2b56833ce8a3a:T7NreIR729giTKR-thJPcKeT6JXevACogl57SIFzwKp-1BASwpBT6v:<binário>
Campos:
- Tag de versão (
2) - ID de protocolo de 40 caracteres —
sha1(salt).hex() - Sufixo de 54 caracteres da chave SDK do editor AppLovin (armazenada em texto simples em
Info.plistouAndroidManifest.xml)
A cifra utiliza dois ingredientes: um salt constante de 32 bytes embutido em cada binário SDK (21 bytes significativos + 11 bytes zero, idêntico em vários aplicativos e plataformas) e a chave SDK por editor. A chave derivada é SHA-256(salt || sdk_key[:32]). O fluxo de chave é gerado usando SplitMix64, um gerador pseudoaleatório não criptográfico. O contador é System.currentTimeMillis() XOR com os primeiros 8 bytes da chave derivada — vazando o tempo de relógio de parede no fio antes da descriptografia. Nenhum MAC ou autenticação é aplicado, o que significa que um atacante pode adulterar o texto cifrado.
O Que é Enviado
O texto simples descriptografado é JSON compactado com gzip com ~30 chaves de nível superior. As críticas:
device_info— carga útil de impressão digital própria da AppLovin com ~50 campossignal_data[]— tokens opacos de cada SDK parceiro de demanda
Um exemplo de uma requisição onde o ATT foi negado (IDFA zerado):
Campo Valor O que é
revision iPhone14,3 Modelo de hardware (iPhone 13 Pro Max)
os 18.6.2 Versão do SO
tm 5918212096 RAM total (5,51 GB)
ndx / ndy 1284 × 2778 Pixels nativos da tela
kb en-US,es-ES Teclados instalados
font UICTContentSizeCategoryXXXL Tamanho do texto de acessibilidade
tz_offset -4 Fuso horário
volume 40 Volume do áudio do sistema
mute_switch 1 Interruptor de mudo físico
bt_ms_2 1770745989000 Tempo de inicialização do dispositivo (época em ms)
dnt / idfa true / 00000… ATT negado
idfv 81E958C3-…-51DE7CE11819 ID do fornecedor (estável entre aplicativos)
Campos adicionais incluem insets da área segura, memória livre, código da operadora, código do país, localidade, orientação, altura da barra de status, relógio monotônico, flags de bateria e estado da conexão segura. Isso é efetivamente toda propriedade do sistema acessível a código de terceiros.
Exposição a Jusante
Um editor típico inclui ~18 SDKs de demanda (Meta, Google, Mintegral, Vungle, ironSource, Unity, InMobi, BidMachine, Fyber, Moloco, TikTok, Pangle, Chartboost, Verve, MobileFuse, Bigo, Yandex, além da própria AppLovin). Em cada carregamento de banner (~30 segundos), o SDK da AppLovin passa a carga útil do dispositivo descriptografada para cada uma dessas redes a jusante, permitindo rastreamento do usuário entre aplicativos sem consentimento ATT.
Implicações
A suposição de que o ATT sozinho previne a identificação determinística é falsa. A impressão digital do dispositivo através dos campos vazados funciona igualmente bem. A falta de autenticação na camada de cifra também levanta preocupações de integridade.
📖 Leia a fonte completa: HN AI Agents
👀 See Also

mcp-scan: Scanner de segurança para configurações de servidor MCP
mcp-scan verifica configurações de servidores MCP para problemas de segurança, incluindo segredos em arquivos de configuração, vulnerabilidades conhecidas em pacotes, padrões de permissão suspeitos, vetores de exfiltração e ataques de envenenamento de ferramentas. Ele detecta automaticamente configurações para Claude Desktop, Cursor, VS Code, Windsurf e 6 outros clientes de IA.

Repositório do GitHub documenta 16 técnicas de injeção de prompt e estratégias de defesa para chats públicos de IA
Um desenvolvedor publicou um repositório no GitHub detalhando medidas de segurança para chatbots de IA públicos após usuários tentarem injeção de prompt, ataques de roleplay, truques multilingues e payloads codificados em base64. O guia inclui uma habilidade de código Claude para testar todas as 16 técnicas de injeção documentadas.

OpenObscure: Firewall de Privacidade de Código Aberto para Agentes de IA em Dispositivos
OpenObscure é um firewall de privacidade de código aberto e no dispositivo que fica entre agentes de IA e provedores de LLM. Ele usa Criptografia de Preservação de Formato FF1 com AES-256 para criptografar valores de PII antes que as solicitações saiam do seu dispositivo, mantendo a estrutura dos dados enquanto protege a privacidade.

Lista de Verificação de Segurança para Aplicações Geradas pela IA Claude
Um desenvolvedor compartilha uma lista de verificação de lacunas comuns de segurança e operacionais encontradas em aplicativos construídos com Claude Code, incluindo limitação de taxa, falhas de autenticação, problemas de escalabilidade de banco de dados e vulnerabilidades de manipulação de entrada.