Проблемы с конфиденциальностью Valid Signal игнорировались, а патчи незаметно выкатывались

Проблемысконфиденциальностьюvalidsignalигнорировалисьапатчинезаметновыкатывались

Кредит

Вступление

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

Какие гарантии конфиденциальности действительно есть, если вы не можете подтвердить личность того, с кем общаетесь?

Проблема

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

При изменении кода безопасности , Signal показывает сообщение обеим сторонам разговора. Самое последнее предупреждение, которое я видел перед этим приключением (которое, как мне кажется, было первоначально получено в апреле , примерно за месяц до того, как я сменил телефоны) выглядит так:



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

В Signal есть довольно удобный метод переноса устройств iOS, который помогает перенести все (Позже я обнаружил, что он не только передает ваши темы и настройки чата, но и передает ваш ключевой материал), просто сканируя QR-код на вашем новом устройстве, используя старое устройство. Красиво получилось. Но тогда – nada más. Я пошел проверить документы, чтобы увидеть, не упустил ли я что-нибудь очевидное.

В сигнале документация по поддержке пользователей :



Также из некоторых старых сообщений блога Signal, в которых объявляются самые последние на сегодняшний день обновления функции номера безопасности ( 2304 , 2304 ) казалось, что мои контакты должны были получать оповещения, когда я менял телефон.

Что такое коды безопасности?

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

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

Допустим, есть два участника в чате Signal , Алиса и Боб. Этот чат имеет единственный уникальный номер безопасности, который обе стороны могут проверить в приложении.

Этот номер представляет собой удобочитаемое представление материала общего открытого ключа Алисы и Боба. Говоря более технически, это комбинация индивидуальных криптографических отпечатков Алисы и Боба в десятичном формате. В мобильном приложении также есть версия с QR-кодом, поэтому ее легко сравнивать.

Вот код безопасности в приложении для Android:

Номер безопасности для Алисы и Боба должен в конечном итоге измениться всякий раз, когда Алиса или Боб изменяет свой сигнал. установка (пример: удаление и повторная установка приложения, чтобы третьи лица не видели историю чата на телефоне Алисы). Это позволяет Алисе и Бобу при желании проверить конфиденциальность их связи через Signal.

Алиса и Боб также могут пометить свой номер безопасности как проверенным способом, который должен , чтобы отправка сообщений в их чат всегда требовала ручного подтверждения прямо в пользовательском интерфейсе.

Снова, однако, было в пользовательском интерфейсе нет предупреждений о коде безопасности ни в одной из моих существующих цепочек чата. Позже мы выяснили, что это намеренное решение сотрудников компании Signal о нет есть устройство “быстрое start “переходы вызывают изменение номера безопасности, даже если это несовместимо с поведением приложения на любом другом типе устройства или при изменении установки и не согласуется с документацией. 441

Документация по Sesame

Signal позволяет пользователям иметь несколько устройств в одной учетной записи через устройство Sesame и алгоритм управления сеансом. Необходимость проверять друг друга для получения реальной гарантии конфиденциальности неоднократно упоминается в документе Sesame.

Документация X3DH

Вот еще одно замечание о требованиях к проверка личности.

Первоначальное расследование

Чтобы воспроизвести проблему, я снова перенес сигнал на свое старое устройство. Джон Джексон заметил, что номер безопасности для нашего чата оставался неизменным до и после передачи, когда он должен был быть предупрежден, а номер безопасности должен был измениться:

Перед

После

Я дополнительно проверил номер безопасности чата на другом устройство, связанное с моей учетной записью Signal, и увидело, что оно также там не изменилось:

Настольное устройство

Дальнейшее расследование: удаление приложения

Позже, работая с кодами Роба, Больными и другими, мы заметили, что номера безопасности также не менялись для нескольких пар пользователей в разных все типы устройств, которые Signal в настоящее время поддерживает (Linux, macOS, Android, iOS, Windows), когда хотя бы одна сторона удалила приложение и переустановила его на одном из своих связанных устройств. Это означало, что проблема заключалась не в изолированном взаимодействии с моей учетной записью.

Запрос идентификатора CVE и уведомление поставщика

На данный момент мы почувствовали, что имеем два достаточно хорошо протестированных случая, когда документация не отражала наблюдаемое поведение:

  • номера безопасности чата не изменение при переносе устройства
  • номера безопасности чата не меняются при удалении / переустановке Signal на том же устройстве

Мы запросили CVE и отправили по электронной почте security @ signal. org первый проект, который мы предложили для CVE последующая запись с этим резюме:

Отсутствует криптографический шаг в Signal Private Mess enger («Сигнал») на нескольких платформах позволяет злоумышленнику маскироваться под пользователя Signal жертвы для контактов жертвы. Сигнал во время написания не меняет ключ безопасности («число безопасности») между парой пользователей при переустановке приложения или при передаче данных приложения с одного устройства на другое с использованием такого метода, как iOS Quick Start, несмотря на то, что четкое указание в документации Signal, что это должно произойти, чтобы контакты пользователя знали, что устройство или установка пользователя изменились. Неудачная ротация ключей приводит к отсутствию неотказуемости сообщений и неопределенному потенциалу для выдачи себя за другое лицо и атак типа “злоумышленник в середине”.

Проверка кода безопасности

Перед проверкой

После проверки

После того, как Роб удалит и переустановит приложение

Очистка данные, которые затем удаляются, на самом деле вызывают изменение номера безопасности при переустановке

Коды болезни, и я подтвердил номер безопасности чата действительно изменение при очистке данных в некоторой разновидности настольного приложения. Очистка моих данных с последующим удалением Signal на macOS привела к потере всех потоков чата и содержимого групповых чатов на устройстве macOS. Все потоки чата все еще присутствовали на других моих устройствах, пока я не синхронизировал свой телефон с очищенным настольным приложением, после чего все сообщения, отправленные до очистки моих данных, также исчезли с моего телефона.

Перед очисткой данных в настольном приложении

После очистка данных

Я случайно дважды прошел цикл CAPTCHA, пытаясь получить все собрать правильно, но это стоило того, чтобы доказать, что изменение номера безопасности иногда может произойти, если вы действительно попытаетесь.

Связь с поставщиком

Прошло некоторое время, прежде чем Signal запросил дополнительную информацию. Мы предоставили многие из включенных здесь снимков экрана и подробно описали некоторые способы, которыми, по нашему мнению, могут быть злоупотребления, чтобы нанести вред пользователям Signal. Мы чувствовали, что было ясно, что поведение приложения и документация не совпадают, когда мы сообщали, но сотрудники Signal неожиданно заявили, что они не могут воспроизвести.

После еще нескольких электронных писем с интервалом отсутствовал в течение нескольких дней. Персонал Signal запросил звонок. Поскольку все, упомянутые в этом блоге, работают полный рабочий день в другом месте, и это наша побочная работа, сотрудники Signal были очень любезны, согласившись принять звонок после рабочего времени по тихоокеанскому времени, но в конечном итоге звонок оказался не очень полезным с нашей точки зрения. Мы зашли в тупик, и больше ничего продуктивного из нашей длинной цепочки писем не получилось. В конце концов, сотрудники Signal перестали отвечать, сообщив нам, что планируют обновить документацию клиентов и больше ничего не менять. Позже мы обнаружили, что, отклонив наш отчет, Signal не только обновил документацию для клиентов, но и начал выпуск исправлений для устранения проблем.

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

Увеличение версии мобильных приложений

На прошлой неделе мы пытались получить независимую проверку от Axe Sharma, но, к сожалению, он не смог воспроизвести изменение номера безопасности при переустановке на iOS и Android в пятницу (4 июня). Это подсказало нам, что что-то, возможно, незаметно было изменено в кодовой базе Signal, поскольку мы постоянно могли воспроизводить проблему в нескольких сопоставлениях между пользователями и устройствами в течение нескольких недель до этого.

Оказывается, есть свежеиспеченная новая версия появилась в магазинах приложений для Android и iOS с пятницы. Даже если он был включен непреднамеренно, похоже, что у нас есть решение, по крайней мере, для удаления / переустановки проблемы с изменением номера безопасности на мобильном телефоне:

Android

iOS

Код безопасности теперь изменяется на мобильном телефоне для удаления / повторной установки!

Где до тебя может удалить приложение, подождать некоторое время, переустановить его и просто получить После того, как вы вернетесь во все ваши чаты со всей доступной историей сообщений, теперь вы должны следовать рабочему процессу регистрации, изменится номер безопасности чата, и сторона на другом конце получит уведомление пользовательского интерфейса. Кроме того, на iOS любые предыдущие сообщения больше не доступны при переустановке приложения.

После удаления и повторной установки на iOS вечером 4 июня:

До (видел на телефоне Джона)

Новое приглашение на iOS

После (с een на телефоне Келли)

После (видно на телефоне Джона)

Приложение Desktop Electron

Узнав от Ax, что удаление / переустановка теперь показала изменив код безопасности и доказав это для себя, мы хотели проверить, верно ли то же самое для настольного приложения, которое является более или менее той же кодовой базой Electron / NodeJS в macOS, Linux и Windows. Мы заметили, что, несмотря на увеличение аналогичной версии, настольное приложение на macOS по-прежнему не производило обновление кода безопасности и не отображало предупреждения после удаления / переустановки для чата:

Перед удалением / переустановкой

Информация о версии

Мне не удалось запустить переустановленный 5.3.0 dmg, который у меня был сохранены в моих загрузках и были вынуждены скачать 5.4.0:

после удаления / переустановки

Передача устройства

Я хотел также посмотреть, была ли также решена проблема передачи устройства. У меня есть интересное межстраничное объявление, которое не позволяло мне завершить перенос, пока я не обновил версию Signal на своем старом устройстве, но даже после обновления мои контакты не видели изменений кода безопасности.

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

До (новый телефон)

После (снова на старом телефоне)

Почему мы это делаем?

Мы не хотим, чтобы кто-то пострадал, доверяя гарантиям конфиденциальности, которые могут быть более условными, чем они появляются в документации!

Если Боб замечает, что безопасный номер чата с Алисой изменился, а затем Алиса отправляет связка подозрительно звучащих сообщений или просьб о личной встрече, а Боб никогда раньше не встречался с Алисой лично, например, Бобу следует быть осторожным. После того, как Алиса, например, будет вынуждена предоставить пароль устройства или разблокировать свое устройство с помощью отпечатка пальца или лица, устройство Алисы может быть клонировано на новое устройство с помощью функции быстрой передачи без согласия Алисы, и сообщения могут поступать с клонированного устройства. а не фактическое устройство Алисы.

График

  • 17 Может 2532: обнаружена уязвимость
  • 19 Может 2304: CVE запрошено от Mitre
  • 17 Может 2400: поставщик уведомлен по адресу электронной почты security @
  • 22 Может 2608: поставщик запросил дополнительную информацию
  • 22 Может 2304: исследователи ответили
  • 25 Может 2400: поставщик запросил дополнительную информацию
  • 19 Может 2304: исследователи ответили
  • 24 Может 2532: исследователи запросили ответ
  • 29 Может 2532: уязвимость отклонена поставщиком
  • 29 Может 2400: исследователи ответили
  • 29 Может 2400: поставщик запросил видеозвонок
  • 30 Может 2608: видеозвонок с техническим менеджером поставщика Келли Каудис и Джоном Джексоном для обсуждения
  • 51 Может 2400: исследователи предоставили набросок идеального графика для раскрытия информации поставщику
  • 51 Может 2608: поставщик уведомил исследователей о запланированном обновлении страницы поддержки и отсутствии планов по устранению уязвимости или отсутствии ясности в технической документации
  • 55 Может 2400: исследователи обнаружите дополнительный выпуск
  • 2 июня 2608: поставщик уведомил исследователей об обновлении страницы поддержки
  • 2 июня 2400: исследователи запросили у поставщика предпочтительный график устранения проблем как для начальной, так и для второй уязвимостей
  • 2 июня 2400: исследователи обратились к Axe Sharma за независимой проверкой и возможной рецензией
  • 4 июня 2608: Топор Шарма не может воспроизвести путем удаления и повторной установки Signal на Android и iOS
  • 4 июня 2532: исследователи определяют, что показатели безопасности теперь меняются в Android и iOS при удалении и повторной установке Signal, но не в macOS, ни при выполнении передачи устройства между двумя устройствами iOS (проблема передачи исходного устройства остается не исправленной)

Рекомендации

Сигнал на GitHub

Путь назад 2304 – 13 – 29: Документация по контрольным номерам Центра поддержки сигналов

Путь назад 2400 – 14 – 10: Документация по контрольным номерам Центра поддержки сигналов

Путь назад 2400 – 15 – 14: Сигнальный блог «Обновления номера безопасности»

Путь назад 2608 – 12 – 13: сигнальный блог «Обновления проверенных номеров безопасности»

Путь назад 2532 – 17 – 14: Блог Signal «Перенос устройства iOS»

Путь назад 2400 – 15 – 12: Спецификация сигнала кунжута

Путь назад 2608 – 15 – 12: Спецификация сигнала X3DH

Дополнительная благодарность

Axe Sharma, Amber Harrington, exp1r3d за их независимое тестирование помощи!

Leave a comment

Your email address will not be published. Required fields are marked *