Кнопка “Mute” не выключает микрофон

5uxteoophrf-fmmjue5jjcowi7g.png

Среди простых пользователей распространено заблуждение, что микрофон можно выключить нажатием кнопки в программе. Конечно, это не так. Единственный способ надёжного отключения — разъединение физической электроцепи, по которой передаётся сигнал или подаётся питание. Например, это может быть тумблер на материнской плате или кнопка на самом микрофоне.

Однако нативной программе ничто не мешает даже после нажатия кнопки «Mute» снимать звук с микрофона и передавать его на сервер. Некоторые программы так и делают.
В Windows 10 звукозаписывающий тракт VCA выглядит следующим образом.

op0kwryftyeafor02l7zbovdg2y.png
Рис. 1. Конвейер звуковых данных VCA в Windows

В прошлом году инженеры из Висконсинского университета в Мадисоне совместно с коллегами из Чикагского университета экспериментально подтвердили гипотезу, что программы телеконференций могут записывать звук после нажатия «Mute».

Специалисты проверили десять различных приложений для видеоконференций. Все они делятся на две большие группы:

  • нативные клиенты (Windows, Linux, macOS)
  • веб-клиенты


Вот список изученных клиентов, в том числе нативных версий (+/−) и веб-версии (в). Как видим, один из клиентов под Linux проверить не удалось, все остальные проверены:
На одном компьютере была установлена веб-камера Logitech QuickCam Pro 9000, на другом — Logitech C920S Pro HD 1080p.
Авторы работы пишут, что перехват обращений из основного процесса к проприетарной DLL инструментами типа IDA Pro и x64dbg работает не очень надёжно, потому что из-за них приложение часто крашится. А поскольку у каждой VCA свой набор DLL, то невозможно наладить стандартный конвейер для проверки всех приложений. Существующие инструменты вроде TaintDroid способны это сделать на старых версиях Android, но в нативных клиентах под Windows и macOS надёжный трейсинг затруднителен.

Поэтому хуки для сбора данных подключались к двум частям конвейера данных, которые выделены жирным на рис. 1 (в нативных программах Windows). Если мы видим, что после нажатия кнопки «Mute» данные 1) пришли с микрофона и 2) отправляются на сервер, этого достаточно для подтверждения исходной гипотезы.


Результаты исследования:

  1. Абсолютно все нативные клиенты для видеоконференций после нажатия кнопки «Mute» сохраняют доступ к оригинальному аудиопотоку.
  2. У веб-клиентов нет такого доступа из-за реализации «программного mute» в Chromium и WebRTC.
  3. За исключением программы Webex, ни одна VCA не злоупотребляет доступом к аудиоданным с микрофона и не передаёт их на сервер. В режиме Mute они только проверяют флаги состояния микрофона, такие как silent, data discontinuity и timestamp error. После публикации научной работы представители Cisco пояснили, что снимают данные с микрофона для удобства пользователя (функция «Mute notification»), а в январе 2022 года программа Webex была исправлена.


Исследователи также сумели доказать, что непроизвольный периодический трафик с микрофона после нажатия кнопки «Mute» можно считать утечкой данных.

Во-первых, большинство пользователей после нажатия кнопки «Mute» в режиме фоновой активности занимаются личными делами, что сопровождается характерными звуками. Чаще всего это приготовление/приём пищи (71%), разговор (42%), просмотр ТВ (38%), игры (22%). Поскольку сумма ответов больше 100%, то возможны два и больше одновременных занятий. Полные результаты опроса здесь.

Во-вторых, экспериментаторы смогли распознать род занятий человека по фрагментам данных, полученным со звукозаписывающего тракта VCA после нажатия кнопки «Mute». На рис. 2 показано, что разные виды деятельности чётко отличаются на 3D-пространстве, по осям которого отложены показатели audioMaxGain, audioMeanGain и audioMinGain.

9vdva7tkftp-5lcjihtwj4bj3hg.png
Рис. 2

В связи с этой темой можно вспомнить слова бывшего подрядчика АНБ Сноудена: после покупки нового смартфона он всегда разбирает его и выпаивает крошечные микрофоны на материнской плате (на КДПВ фотография, которую сделал Эдвард).

Конечно, такие меры безопасности необходимы не каждому человеку. Но всем пользователям стоит держать в уме, что микрофон смартфона, ноутбука или веб-камеры на десктопе невозможно отключить программными средствами.

Наиболее простым техническим решением авторы считают «программный mute», аналогичный тому, что реализован в Chromium и WebRTC. Например, индикатор в углу экрана с перечёркнутым значком микрофона, означающий блокировку трафика от драйвера микрофона к VCA на уровне операционной системы. В этом случае несанкционированная прослушка возможна только после взлома ОС, а не штатными средствами VCA, как сейчас.

© Habrahabr.ru