Google опубликовала уязвимости Signal, FB Messenger, JioChat

21 января 2021 г. 12:29
 821

В 2019г. была опубликована критическая уязвимость групповых чатов FaceTime от Apple, которая позволяла инициировать видеозвонок FaceTime и подслушивать пользователей

В январе 2019 года была опубликована критическая уязвимость функции групповых чатов FaceTime от Apple, которая позволила пользователям инициировать видеозвонок FaceTime и подслушивать пользователей, добавив свой собственный номер в качестве третьего лица в групповом чате еще до того, как человек на другом конце принял входящий звонок.

Уязвимость была признана настолько серьезной, что производитель iPhone полностью удалил функцию группового чата FaceTime до того момента, пока проблема была не решена в обновлении iOS.

С тех пор ряд аналогичных недостатков был обнаружен в нескольких приложениях для видеочата, таких как Signal, JioChat, Mocha, Google Duo и Facebook Messenger - и все это благодаря работе исследователя Google Project Zero Натальи Сильванович.

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

 

Как работают сигналы в WebRTC?

Хотя большинство приложений для обмена сообщениями сегодня полагаются на WebRTC, сами соединения создаются путем обмена информацией об установке вызова с помощью протокола описания сессии (Session Description Protocol - SDP) между абонентами с помощью сигналов, которые обычно работают путем отправки SDP-предложения со стороны вызывающего абонента, на которое принимающий отвечает SDP-ответом.

Иначе говоря, когда пользователь начинает вызов WebRTC, создается описание сеанса, называемое «offer», содержащее всю информацию, необходимую для установления соединения - вид передаваемого медиа, его формат, используемый протокол передачи, а также IP-адрес и порт конечной точки и др. Затем получатель отвечает «ответом», включающим описание его конечной точки.

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

Также опционально в рамках обмена оффером /ответом включается возможность двух абонентов обмениваться между собой кандидатами SDP с целью договоренности о фактической связи между ними. В нем подробно описаны методы, которые могут быть использованы для связи, независимо от топологии сети - WebRTC фреймворк под названием Interactive Connectivity Establishment (ICE).

После того, как два абонента договорились о взаимно совместимом кандидате, SDP этого кандидата используется каждым абонентом для построения и открытия соединения, через которое затем начинают протекать медиа-данные.

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

В то время как ожидается, что перед передачей аудио- или видеосигнала обеспечивается согласие звонящего, и никакие данные не передаются до тех пор, пока приемник не вступит в контакт с приложением для ответа на звонок (т.е. до добавления каких-либо треков к соединению), Сильванович наблюдала противоположное поведение.

Затронуты многие мессенджеры

Уязвимости в приложениях не только позволяли осуществлять звонки без взаимодействия с вызываемым абонентом, но и потенциально позволяли вызывающему абоненту заставлять вызываемое устройство передавать аудио- или видеофайлы.

  •   (исправлено в сентябре 2019 года) - уязвимость аудио звонка в приложении Signal для Android позволяли вызывающему абоненту услышать окружение вызываемого абонента, поскольку приложение не проверяло, вызываемое устройство тем же, что получало сообщение о подключении от вызывающего абонента.
  • (исправлено в июле 2020 года) и Mocha (исправлено в августе 2020 года) - Добавление кандидатов к офферам, созданным Reliance JioChat и приложениями Viettel Mocha Android, которые позволяли вызывающему абоненту заставлять вызываемое устройство отправлять аудио (и видео) без согласия пользователя. Баг был вызван тем, что одноранговое соединение было установлено еще до того, как вызываемый ответил на звонок, тем самым увеличивая «ландшафт атаки WebRTC».
  • Messenger (исправлено в ноябре 2020 года) - уязвимость, которая могла дать злоумышленнику возможность одновременно инициировать звонок и отправить специально созданное сообщение цели, а также другому клиенту Messenger, например, веб-браузеру, и начать получать звук с устройства вызываемого.
  • Duo (исправлено в декабре 2020 г.) – конкуренция между отключением видео и настройкой соединения, которая в некоторых ситуациях может привести к утечке видео-пакетов из звонков без ответа.

В других приложениях для обмена сообщениями, таких как Telegram и Viber, не было обнаружено ни одного из вышеперечисленных недостатков, хотя Сильванович отметила, что значительные проблемы с реверс-инжинирингом при анализе Viber сделали расследование «менее строгим», чем другие.

«Большинство исследованных мною механизмов состояний вызова имели логические уязвимости, которые позволяли передавать аудио или видео контент от вызываемого к звонящему без его согласия» - подытожила Сильванович. «Очевидно, что эта область часто упускается из виду при защите приложений WebRTC».

«Большинство ошибок не было вызвано непониманием разработчиками возможностей WebRTC. Наоборот, они были вызваны ошибками в том, как реализуются механизмы состояний. Тем не менее, недостаточная осведомленность о такого рода проблемах, скорее всего, была одним из факторов» - добавила она.

«Также меня беспокоит то, что я не рассматривала возможности группового вызова в этих приложениях, и все уязвимости, о которых сообщалось, были обнаружены при одноранговых вызовах. Это область для будущей работы, которая может выявить дополнительные проблемы».

Перевод сделан со статьи: https://thehackernews.com