Международный коллектив исследователей из Швейцарской высшей технической школы Цюриха и группы информационной безопасности Лондонского университета завершил детальный анализ безопасности мессенджера Telegram и выявил несколько слабых мест в системе шифрования на протоколе MTProto 2.0.
Разработчики Telegram прокомментировали уязвимости и уже исправили их.
По оценке исследователей, наиболее значительные уязвимости связаны с возможностью злоумышленника в сети манипулировать последовательностью сообщений, поступающих от клиента на один из облачных серверов Telegram. Например, можно поменять местами ответы жертвы на разные вопросы. Эта уязвимость описана в разделах IV-B1, IV-C6 научной работы.
Вторая уязвимость представляет в основном теоретический интерес: она позволяет атакующему в сети определить, какое из двух сообщений зашифровано клиентом или сервером (приложение F).
Обмен ключами в Telegram
Однако стандартные криптографические протоколы разработаны таким образом, чтобы исключить такие атаки, в отличие от MTProto, пишут авторы.
Исследователи изучили реализацию клиентов Telegram и обнаружили, что клиенты под Android, iOS и Desktop содержат код, который в принципе позволяет злоумышленникам расшифровать сообщения (описание в секции VI). Хотя это очень трудоёмкая работа, которая требует отправки миллионов тщательно подготовленных сообщений — и замера мельчайших различий в том, сколько времени требуется для доставки ответа. К счастью, эту атаку практически невозможно осуществить на практике.
Время обработки
SessionPrivate::handleReceived
с неправильным полем msg_length
(слева), а также с правильным полем msg_length
, но с неправильным MAC-адресом (справа) на десктопном клиенте 2.4.1 под Linux, в микросекундах Четвёртая уязвимость допускает атаку MiTM на начальном этапе согласования ключей между клиентом и сервером, что позволяет злоумышленнику выдать сервер за клиента (секции V-B2, IV-C7). Эту атаку тоже довольно сложно осуществить, поскольку она требует от злоумышленника отправки миллиардов сообщений на сервер Telegram в течение нескольких минут. Однако авторы пишут, что безопасность серверов Telegram и их реализации нельзя принимать на веру.
Научная статья «Четыре уязвимости и доказательство для Telegram» принята для конференции IEEE Symposium on Security and Privacy 2022.
Telegram напоминает, что за информацию о багах готова платить от $100 до $100 000 или больше, в зависимости от серьёзности бага.
Об уязвимостях криптографы сообщили Telegram 16 апреля 2021 года и договорились сохранить информацию в секрете до 16 июля, чтобы разработчики успели всё исправить.
Исследователи пояснили, что непосредственный риск невелик, но эти уязвимости демонстрируют главное — проприетарная криптосистема Telegram не соответствует гарантиям безопасности, предоставляемым стандартными и широко распространёнными криптографическими протоколами. Они отмечают, что указанные задачи «могли бы быть решены лучше, более безопасно и более надёжно при стандартном подходе к криптографии». Например, при использовании стандартного протокола Transport Layer Security (TLS).
Как показал опыт протестов в в Гонконге, протестующие в значительной степени полагались на Telegram для координации своей деятельности, хотя мессенджер не прошёл проверку безопасности. Это и стало главной причиной, по которой учёные обратили своё внимание на коммерческую частную разработку.
Комментарии (18)
gudvinr
19.07.2021 19:31+9Заголовок: Уязвимости
Текст: Несколько слабых мест
Исследователи: непосредственный риск невеликА по факту, в рамках задач, в которых MTProto используется внутри Telegram, уязвимости либо невозможно эксплуатировать, либо они не приводят к нарушению конфиденциальности сообщений
DerRotBaron
19.07.2021 21:09+2По факту don't roll your own crypro, или по крайней мере делайте это, закрывшись от мира TLS т.к. в стандариный протокол и его мейнстримные реализации смотрит чуть побольше глаз, чем в что-то кастомное, тем более настолько извращенное, как MTProto.
Anrikigai
20.07.2021 08:56+1Да-да, юзайте стандарты и opensource, там проблем с криптографией никогда не бывает
И в openssl никогда даже таких мелких ошибок не было...
DerRotBaron
21.07.2021 04:09+1И именно поэтому стоит избегать своей криптографии. Ошибки в реализации MTProto точно есть, и учитывая, что реализации на C++, наверняка серьезные.
А маргинальные протоколы вроде MTProto в здравом уме мало кто пойдёт реализовывать, да и читать код официальных реализаций тоже. Тем более что и протокол и код там прямо очень так себе. И поэтому то, что для openssl находят и исправляют, тут найдут с горяздо меньшей вероятностью. А с пофигистичным отношением разработчика еще и с большей вероятностью выльют в паблик как full disclosure или вовсе продадут налево.
Anrikigai
21.07.2021 08:48В ваших словах, безусловно, рациональное зерно есть. "Самостоятельно" я криптографию писать не буду. И кому-то неизвестному не доверюсь.
Но в данном случае, как мы видим, и проверящие имеются (все-таки Телеграм достаточно популярен), и "пофигистичное отношение разрабочтика" слабо вяжется с этим кейсом (исправили оперативно, баг баунти оплачивают, т.е. о качестве продукта заботятся).
По крайней мере в сравннении с FreeBSD телеграммные разрабы выглядят гораздо более выигрышно.
DerRotBaron
21.07.2021 15:04По качеству протокола и подходу к разработке оставлю это здесь.
Но в данном случае, как мы видим, и проверящие имеются (все-таки Телеграм достаточно популярен), и "пофигистичное отношение разрабочтика" слабо вяжется с этим кейсом (исправили оперативно, баг баунти оплачивают, т.е. о качестве продукта заботятся).
Да, вот только нет
We were informed by the Telegram developers that they do not do security or bugfix releases except for immediate post-release crash fixes. The development team also informed us that they did not wish to issue security advisories at the time of patching, nor commit to release dates for specific fixes. As a consequence, the fixes were rolled out as part of regular Telegram updates.
Вот ещё прекрасное от разработчиков форка android-клиента.
Так что я бы задумался насчет того, включать ли разработчиков Телеграма в тех, кому можно так доверять в вопросах криптографии
Revertis
19.07.2021 21:25+1По факту, это ещё оно доказательство того, что разрабатывалось оно недостаточно компетентным разработчиком :(
nickolas059
19.07.2021 20:08+8Получается, что уязвимостей нет, а что есть нельзя использовать/не возможно на практике. К тому же их исправили. Браво!
h1pp0
19.07.2021 20:28+4Тут, я думаю, надо всегда добавлять, что если уязвимости не нашли, то это не значит, что их нет. Протоколом телеграма хоть и пользуется огромное количество людей, всё-таки его гораздо меньше исследовали, чем стандартные типа TLS, о чём и говорится в посте.
DGN
19.07.2021 20:41+1Я бы даже сказал так - если уязвимость и нашли, это еще не значит что ее обнародовали.
dartraiden
19.07.2021 20:53+3Ошибки (а уязвимости это подмножество ошибок) вообще есть в любой программе. Если кто-то утверждает, что в ПО нет ошибок (не известных ошибок, а ошибок вообще), то это очень наивный человек.
vesper-bot
20.07.2021 10:23Ну да, релизник безглючный вымер в третичном досовом периоде, помним-помним.
riky
19.07.2021 22:08а на сервере (владельцами сервиса) возможно прочитать сообщения?
mrBarabas
19.07.2021 22:55-2Гипотетически сервер знает ключи шифрования обоих собеседников (они передаются через сервер) и поэтому есть ненулевая вероятность, что сервер все же может или осуществляет атаку МИТМ. Пока они в этом замечены не были (не спалились), но если скрывать переписку от жены/начальника/ - секретные чаты это хорошее решение, а вот что-то серьезное - ну тут или верить на слово Дурову или искать что-то другое
Aigir
19.07.2021 22:42На днях обнаружился то ли баг телеграмма, то ли косяк провайдера.
Давно общаюсь через телеграмм с родственником в Голландии (у меня десктопный на винде, у него на андроиде). Аудиозвонки всегда производились без проблем. Но уже несколько дней при звонках происходит затык на этапе обмена ключами шифрования, и соединение установить не удается. При этом текстовые сообщения ходят без проблем.
Я внутри России нормально звоню, он у себя в Голландии тоже нормально звонит. Кроме того, если он звонит через свой домашний вайфай, звонки проходят без проблем, а если он звонит через своего мобильного провайдера, звонки со мной не проходят. Пробовали отключить peer-to-peer - не помогло.
kraidiky
20.07.2021 10:31+1Публикация выглядит как "Пожалуйста, не уклоняйтесь, от принятой нами системы бэкдоров и взломов, на создание которой потрачены лучшие криптографические умы современности. Мы ничего опасного не нашли, но всё равно пожалуйста..."
rombell
Пока что это звучит как «достаточно для любых разумных применений»