I broke AppLovin's mediation cipher protocol

· privacy · Source ↗

TLDR

  • Researcher reversed AppLovin’s custom SplitMix64-based cipher on ms4.applovin.com mediation traffic, decrypting 5,394+ envelopes and confirming deterministic cross-app iPhone re-identification even with ATT denied.

Key Takeaways

  • The cipher uses a 32-byte constant salt baked into every AppLovin SDK binary plus a per-publisher SDK key stored in plaintext in Info.plist or AndroidManifest.xml; derived key is SHA-256(salt || sdk_key[:32]).
  • Keystream is SplitMix64 (Vigna 2014 PRNG), no MAC or AEAD; the counter leaks millisecond-precision wall-clock time before decryption.
  • One outbound request fans device fingerprint data to AppLovin plus ~12 downstream ad networks via server-to-server OpenRTB on every banner load, roughly every 30 seconds.
  • Nine fields alone (hardware model, OS, RAM, screen dims, keyboards, font, locale, timezone, boot time) produced 100% unique SHA-256 fingerprints across 10 physical iPhones; one ATT-denied user matched across 3 apps from 3 publishers.
  • AppLovin’s own api_did sentinel (0xBADD1D prefix) and IDFA handling do respect ATT; the fingerprinting happens at the device-data layer Apple does not gate.

Hacker News Comment Review

  • Commenters flagged device boot time as a surprisingly high-entropy field with no obvious legitimate app use case, especially given how rarely iPhones reboot.

Original | Discuss on HN