Piratage du chiffrement de la médiation AppLovin : l'empreinte numérique des appareils contourne l'ATT

Une analyse approfondie du protocole de médiation publicitaire d'AppLovin a mis en lumière un chiffrement personnalisé qui ne protège pas la vie privée des utilisateurs. Le chercheur a déchiffré plus de 5 000 véritables requêtes d'enchères capturées à partir d'utilisateurs consentants et a constaté que la charge utile chiffrée transmet suffisamment de données sur l'appareil pour identifier de manière unique un iPhone entre des applications de différents éditeurs — même lorsque l'utilisateur a refusé l'autorisation App Tracking Transparency (ATT).
Comment fonctionne le chiffrement
Chaque requête de médiation est un POST HTTPS vers ms4.applovin.com/1.0/mediate. À l'intérieur de la couche TLS, un second chiffrement encapsule la charge utile. Après décodage base64, le format filaire est composé de trois champs séparés par des deux-points + le texte chiffré :
2:8a2387b7dbed018e5e485792eac2b56833ce8a3a:T7NreIR729giTKR-thJPcKeT6JXevACogl57SIFzwKp-1BASwpBT6v:<binaire>
Champs :
- Tag de version (
2) - Identifiant de protocole de 40 caractères —
sha1(salt).hex() - Suffixe de 54 caractères de la clé SDK AppLovin de l'éditeur (stockée en clair dans
Info.plistouAndroidManifest.xml)
Le chiffrement utilise deux ingrédients : un sel constant de 32 octets intégré dans chaque binaire SDK (21 octets significatifs + 11 octets nuls, identique sur plusieurs applications et plateformes) et la clé SDK par éditeur. La clé dérivée est SHA-256(salt || sdk_key[:32]). Le flux de clé est généré en utilisant SplitMix64, un PRNG non cryptographique. Le compteur est System.currentTimeMillis() XORé avec les 8 premiers octets de la clé dérivée — ce qui divulgue l'heure horloge murale sur le fil avant le déchiffrement. Aucun MAC ou authentification n'est appliqué, ce qui signifie qu'un attaquant peut altérer le texte chiffré.
Ce qui est transmis
Le texte clair déchiffré est du JSON compressé en gzip avec environ 30 clés de premier niveau. Les plus critiques :
device_info— la charge utile d'empreinte d'AppLovin avec environ 50 champssignal_data[]— des jetons opaques de chaque SDK partenaire de demande
Un exemple d'une requête où ATT a été refusé (IDFA mis à zéro) :
Champ Valeur Description
revision iPhone14,3 Modèle matériel (iPhone 13 Pro Max)
os 18.6.2 Version du système d'exploitation
tm 5918212096 RAM totale (5,51 Go)
ndx / ndy 1284 × 2778 Pixels d'écran natifs
kb en-US,es-ES Claviers installés
font UICTContentSizeCategoryXXXL Taille du texte d'accessibilité
tz_offset -4 Fuseau horaire
volume 40 Volume audio système
mute_switch 1 Interrupteur physique de sourdine
bt_ms_2 1770745989000 Heure de démarrage de l'appareil (ms epoch)
dnt / idfa true / 00000… ATT refusé
idfv 81E958C3-…-51DE7CE11819 Identifiant du fournisseur (stable entre applications)
Des champs supplémentaires incluent les marges de zone sécurisée, la mémoire libre, le code opérateur, le code pays, la locale, l'orientation, la hauteur de la barre d'état, l'horloge monotone, les indicateurs de batterie et l'état de la connexion sécurisée. Cela équivaut à pratiquement toutes les propriétés système accessibles par un code tiers.
Exposition en aval
Un éditeur typique inclut environ 18 SDK de demande (Meta, Google, Mintegral, Vungle, ironSource, Unity, InMobi, BidMachine, Fyber, Moloco, TikTok, Pangle, Chartboost, Verve, MobileFuse, Bigo, Yandex, plus celui d'AppLovin). À chaque chargement de bannière (environ 30 secondes), le SDK AppLovin transmet la charge utile déchiffrée de l'appareil à chacun de ces réseaux en aval, permettant le suivi inter-applications des utilisateurs sans consentement ATT.
Implications
L'hypothèse selon laquelle ATT seul empêche une identification déterministe est fausse. L'empreinte de l'appareil via les champs divulgués fonctionne tout aussi bien. L'absence d'authentification dans la couche de chiffrement soulève également des préoccupations d'intégrité.
📖 Lire la source complète : HN AI Agents
👀 See Also

Sunder : Un pare-feu de confidentialité locale pour LLM basé sur Rust
Sunder est une extension Chrome qui agit comme un pare-feu de confidentialité local pour les discussions d'IA, construite en Rust et WebAssembly, garantissant que les données sensibles ne quittent jamais votre navigateur.

Vulnérabilités de sécurité exposées dans l'application EdTech présentée par Lovable
Un chercheur en sécurité a découvert 16 vulnérabilités dans une application EdTech présentée sur Lovable, incluant des failles critiques de logique d'authentification qui ont exposé 18 697 enregistrements d'utilisateurs sans authentification. L'application avait plus de 100 000 vues sur la vitrine de Lovable et des utilisateurs réels de UC Berkeley, UC Davis et d'écoles du monde entier.

AviationWeather.gov API Contient une Tentative d'Injection de Prompt 'Stop Claude'
Un utilisateur signale que l'API AviationWeather.gov du gouvernement américain renvoie le texte 'Stop Claude' dans ses réponses lorsqu'il est consulté via Claude CoWork, déclenchant une alerte de sécurité concernant les attaques par injection de prompt.

Vulnérabilité RCE critique dans la bibliothèque protobuf.js
Une vulnérabilité critique d'exécution de code à distance dans les versions 8.0.0/7.5.4 et inférieures de protobuf.js permet l'exécution de code JavaScript via des schémas malveillants. Des correctifs sont disponibles dans les versions 8.0.1 et 7.5.5.