В MAX нашли скрытый ИИ для прослушки во время звонков

И ни слова об этом в политике конфиденциальности

В MAX нашли скрытый ИИ для прослушки во время звонков

Независимый исследователь провел реверс-инжиниринг мессенджера MAX (версия APK 26.12.1) и нашел внутри систему распознавания ключевых слов — KWS (Keyword Spotting). 

Нейросеть работает в реальном времени во время звонков, обрабатывая аудио с микрофона. В политике конфиденциальности и пользовательском соглашении об этом ни слова.

Как это устроено технически

Нейросеть BC-ResNet загружается не из самого приложения, а с серверов VK по URL из конфигурации. 

Сейчас модель обучена только на фразу «не слышу». Официально для определения плохой связи. 

При срабатывании детектора, результат с уровнем уверенности автоматически отправляется на сервер VK через канал vchat.clientStats, привязанный к конкретному пользователю и звонку.

Полную цепочку от микрофона до сервера можно описать так:

Микрофон → WebRTC → BCResNetKWS → KeywordSpotterManagerImpl → ConversationKwsStat → api.ok.ru/api/log/externalLog

Главная проблема — не то, что есть сейчас

Сейчас KWS выключена на сервере ("use": false) и ищет только «не слышу». Но архитектура устроена так, что VK может в любой момент заменить модель на любую другую — без обновления приложения, без уведомления пользователя. 

Достаточно изменить один URL в серверном конфиге. Приложение само скачает новую нейросеть и запустит ее. Никакой проверки того, что именно модель распознает, в коде нет.

Модель доступна публично прямо сейчас — без авторизации:

curl -O https://st.okcdn.ru/static/calls_android/1-0-1/kws_270525.zip

Дополнительные находки

Все звонки в MAX идут через TURN-серверы VK — P2P-соединений исследователь не обнаружил. Шифрование DTLS-SRTP работает только от пользователя до сервера VK, а не между собеседниками напрямую. 

Кроме того, в коде найден серверный флаг calls-sdk-log-audio: если VK его включит, аудио звонка будет записываться в файл на устройстве. Управление тоже происходит с сервера и тоже без уведомления пользователя.

Что это означает

Разница между «детектором плохой связи» и «детектором произвольных слов» — один URL в JSON-конфиге. 

Код, процесс отправки на сервер, архитектура — все одно и то же. Меняется только файл модели на CDN.

Соцсети: Юлия Зубарева
Через год — лучше работа, выше зарплата
В «Яндекс Практикуме» становятся разработчиками с нуля. Выберите язык — веб, Python, Java, C++ — и учитесь. Джуны зарабатывают от 80 000 ₽, мидлы — от 150 000 ₽. Дальше — программы трудоустройства и компенсация, если пойдёте в Яндекс.
Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата
Вам может быть интересно
easy