AppLovin Mediation Cipher Broken: Device Fingerprinting Bypasses ATT

Глубокий анализ протокола рекламной медиации AppLovin выявил собственный шифр, который не защищает конфиденциальность пользователей. Исследователь расшифровал более 5000 реальных бид-запросов, полученных от согласившихся пользователей, и обнаружил, что зашифрованный полезная нагрузка передает достаточно данных об устройстве, чтобы однозначно идентифицировать iPhone в приложениях от разных издателей — даже если пользователь запретил отслеживание через App Tracking Transparency (ATT).
Как работает шифр
Каждый запрос медиации — это HTTPS POST на ms4.applovin.com/1.0/mediate. Поверх TLS второй шифр оборачивает полезную нагрузку. После декодирования base64 формат передачи состоит из трех разделенных двоеточием полей + зашифрованного текста:
2:8a2387b7dbed018e5e485792eac2b56833ce8a3a:T7NreIR729giTKR-thJPcKeT6JXevACogl57SIFzwKp-1BASwpBT6v:<binary>
Поля:
- Тег версии (
2) - 40-символьный идентификатор протокола —
sha1(salt).hex() - 54-символьный суффикс ключа SDK издателя AppLovin (хранится в открытом виде в
Info.plistилиAndroidManifest.xml)
Шифр использует два ингредиента: 32-байтовую постоянную соль, вшитую в каждый бинарник SDK (21 значимый байт + 11 нулевых, одинаковая для нескольких приложений и платформ), и ключ SDK каждого издателя. Полученный ключ — SHA-256(salt || sdk_key[:32]). Поток ключей генерируется с помощью SplitMix64, некриптографического ГПСЧ. Счетчик — System.currentTimeMillis(), XOR с первыми 8 байтами производного ключа — раскрывает метку времени на проводе до расшифровки. MAC или аутентификация не применяются, поэтому злоумышленник может подделать зашифрованный текст.
Что передается
Расшифрованный открытый текст — это JSON, сжатый gzip, с примерно 30 ключами верхнего уровня. Критически важные:
device_info— собственный fingerprint-набор AppLovin с ~50 полямиsignal_data[]— непрозрачные токены от каждого SDK партнера по спросу
Пример из запроса, где ATT отклонено (IDFA обнулен):
Поле Значение Что это
revision iPhone14,3 Модель (iPhone 13 Pro Max)
os 18.6.2 Версия ОС
tm 5918212096 Общий объем RAM (5,51 ГБ)
ndx / ndy 1284 × 2778 Разрешение экрана
kb en-US,es-ES Установленные клавиатуры
font UICTContentSizeCategoryXXXL Размер текста доступности
tz_offset -4 Часовой пояс
volume 40 Громкость системы
mute_switch 1 Физический переключатель беззвучного режима
bt_ms_2 1770745989000 Время загрузки устройства (мс эпохи)
dnt / idfa true / 00000… ATT отклонено
idfv 81E958C3-…-51DE7CE11819 ID поставщика (стабильный во всех приложениях)
Дополнительные поля включают отступы safe-area, свободную память, код оператора, код страны, локаль, ориентацию, высоту строки состояния, монотонные часы, флаги батареи и состояние защищенного подключения. Это практически все системные свойства, доступные стороннему коду.
Распространение
Типичный издатель включает около 18 SDK спроса (Meta, Google, Mintegral, Vungle, ironSource, Unity, InMobi, BidMachine, Fyber, Moloco, TikTok, Pangle, Chartboost, Verve, MobileFuse, Bigo, Yandex, плюс собственный AppLovin). При каждой загрузке баннера (~ каждые 30 секунд) SDK AppLovin передает расшифрованную полезную нагрузку устройства каждому из этих сетей, что позволяет отслеживать пользователя между приложениями без согласия ATT.
Последствия
Предположение, что одного ATT достаточно для предотвращения детерминированной идентификации, неверно. Фингерпринтинг устройства через утекшие поля работает так же хорошо. Отсутствие аутентификации в шифре также вызывает проблемы с целостностью.
📖 Источник: HN AI Agents
👀 Смотрите также

Критическая ошибка в совместной работе: ИИ-агент удалил файлы без согласия пользователя
Критическая ошибка в режиме Cowork у Claude позволила ИИ выполнять деструктивные действия без согласия пользователя. Инструмент ExitPlanMode ложно сообщил об одобрении пользователя, что запустило автономного агента, который удалил 12 файлов из кодовой базы на React/TypeScript.

Ward: Инструмент с открытым исходным кодом перехватывает команды npm install, чтобы блокировать атаки через цепочку поставок для пользователей Claude Code.
Ward — это инструмент с открытым исходным кодом, который подключается к менеджерам пакетов и проверяет каждый пакет до запуска скриптов установки. Когда Claude Code выполняет npm install, Ward автоматически проверяет пакеты на наличие вредоносного ПО, тайпсквоттинга, подозрительных скриптов и аномалий версий.

Поддельный сайт Claude Code распространял троян — обнаружен Windows Defender как Trojan:Win32/Kepavll!rfn
Мошеннический сайт, копирующий официальный сайт Claude Code, распространял троян, обнаруженный Windows Defender как Trojan:Win32/Kepavll!rfn. Пользователь Reddit предупреждает: проверяйте URL перед запуском команд PowerShell.

Обновления безопасности OpenClaw устраняют уязвимости, связанные с раскрытием учетных данных через QR-коды и автоматической загрузкой плагинов.
OpenClaw выпустил два патча безопасности для устранения критических уязвимостей: QR-коды содержали постоянные учетные данные шлюза без срока действия, а плагины автоматически загружались из клонированных репозиториев без подтверждения пользователя. Версия 2026.3.12 исправляет обе проблемы.