Обнаружены 8 серьезных уязвимостей в VoIP-компонентах Android

Группа исследователей из OPPO ZIWU Cyber Security Lab в Шэньчжэне, Китайского университета Гонконга и Сингапурского университета управления обнаружила восемь уязвимостей в VoIP-компонентах Android. Баги могут использоваться для несанкционированных вызовов, подделки ID абонентов, запрета голосовых вызовов и даже для выполнения вредоносного кода на устройствах пользователей.

Интересно, что до настоящего времени ИБ-эксперты изучали Voice-over-IP (VoIP) только в контексте оборудования, серверов и мобильных приложений, но не проверяли VoIP-компоненты внутри самой ОС Android.

Для изучения компонентов Android исследователи разработали три метода анализа VoIP-бэкэнда и систематически проверяли компоненты на предмет уязвимостей. В основном аналитики полагались в этом вопросе на фаззинг.

Для взаимодействия с компонентами были разработаны Android Intent и System API. Затем эксперты установили испытательный стенд VoIP в своей лаборатории и применили фаззинг к различным протоколам VoIP, в том числе SIP (Session Initiation Protocol), SDP (Session Description Protocol) и RTP (Real-time Transport Protocol). После аналитики дополнительно просмотрели полученные логи вручную и выполнили дополнительный аудит кода.

Тестированию подверглись только последние версии Android, от Android 7.0 (Nougat) до прошлогодней 9.0 (Pie). В результате были выявлены девять уязвимостей, некоторые из которых инженеры Google уже исправили. Из девяти багов восемь затрагивают VoIP-бэкэнд Android, но девятый баг (V1 в таблице ниже) влияет на стороннее приложение.

V1

Проблема заключается в том, как API Android Intent взаимодействует с официальным приложением «ВКонтакте». Уязвимость позволяет вредоносному приложению, установленному на устройстве, осуществить VoIP-вызов через приложение VK и прослушивать разговоры владельца телефона, находящиеся поблизости.

Для использования бага не требуется никакого взаимодействия с пользователем, и хотя эксплуатация уязвимости требует локального доступа, баг идеально подходит для интеграции в шпионское ПО, трояны удаленного доступа (RAT) и другие вредоносные программы.

V2

Вредоносные приложения на устройстве могут неправильно использовать два локальных привилегированных API (в компоненте QtilMS VoIP) для передачи входящих вызовов без авторизации на устройство злоумышленника.

Баг был исправлен еще в 2017 году, когда проблема была впервые обнаружена, а затем получила идентификатор CVE-2017-11042.

V3

Первая из шести удаленно используемых проблем. Злоумышленники могут инициировать звонки на телефон жертвы, используя длинное (1043 символа) имя SIP.

Имя SIP заполняет собой буквально весь экран телефона жертвы и не позволяет ответить или отклонить вызов. Если злоумышленники совершают несколько вызовов, один за другим, они могут эффективно помешает пользователю использовать телефон вообще. Это может использоваться, например, как подспорье при выполнении другой атаки, такой как захват учетной записи электронной почты или обход 2FA.

Эксперты пишут, что этот DoS-баг аналогичен SMS-бомбе, но называют его VoIP-бомбой. В текущих версиях Android Google ограничивает размер имени SIP в вызовах VoIP, чтобы предотвратить злоупотребления.

V4

Четвертая проблема также может быть использована удаленно. Злоумышленники могут использовать неправильно сформированные SDP-пакеты для провоцирования сбоя устройства жертвы при приеме входящего вызова (см. изображение выше).

Как и две предыдущие ошибки, этот баг был исправлен в 2017 году, после предупреждения исследователей.

V5

Наиболее опасная ошибка из всех, обнаруженных исследователями. Она получила идентификатор CVE-2018-9475 и была исправлена в составе Android Oreo в 2018 году.

Это проблема удаленного выполнения кода (RCE), которая позволяет злоумышленникам запускать вредоносный код на удаленном устройстве с помощью вызова VoIP.

Исследователи заметили, что они могут спровоцировать переполнение буфера стека, если имя пользователя (или номер вызывающего абонента) в VoIP-вызове насчитывает более 513 байт. «Эта уязвимость позволяет злоумышленнику перезаписать адрес возврата функции ClccResponse, что приведет к удаленному выполнению кода», — говорят исследователи.

Эта ошибка затронула все версии Android вплоть до 9.0 (Pie) включительно.

V6

Баг V6 похож на V5 и также является уязвимостью, которую можно использовать, совершая VoIP-звонки с длинными номерами. Но этот баг вызывает только сбой в работе устройства, но не позволяет злоумышленникам удаленно выполнить код.

V7

Седьмая уязвимость не может использоваться удаленно, но ее могут эксплуатировать вредоносные приложения, уже установленные на устройстве. Это классическая проблема обхода каталога, которая возникает из-за того, что протокол SIP и Android по-разному обрабатывают символы «..» и «/».

V8

Уязвимость связана с форматом номеров PSTN (Public Switched Telephone Network), которые не учитывают символ «&». Входящие вызовы VoIP, содержащие символы «&», приводят к тому, что Android считывает только цифры перед этим символом, но не после него, что позволяет легко подделать идентификатор вызывающего абонента.

V9

Девятая и последняя уязвимость также связана с форматом номера PSTN, но на этот раз с параметром «phone-context».

Источник: https://xakep.ru/2019/10/03/voip-android-bugs/