Уязвимости в Threema, или Где переписка наиболее защищена

Что делать, если ваш секретный мессенджер недостаточно секретен.

Насколько опасны уязвимости в Threema

Threema, один из наиболее популярных защищенных мессенджеров, на этой неделе оказался в эпицентре скандала. Исследователи из университета ETH Zurich нашли 7 (!) уязвимостей в протоколах Threema, а разработчики мессенджера, не отрицая этого факта, сказали, что «все исправлено, и вообще, проблема высосана из пальца». Нужно ли срочно переходить на Signal, и где правда?

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

Тем, кого интересуют только практические выводы, предлагаем сразу перейти к ним.

Уязвимости Threema

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

Сосредоточимся на заключениях, которые можно сделать из внимательного чтения цюрихского исследования, блогпоста Threema, а также других публично доступных исследований протокола и приложений Threema. Во-первых, в приложении использованы сильные алгоритмы криптографии и их стандартизованная и надежная реализация NaCl. Во-вторых, вокруг этого «обернут» собственный протокол обмена информацией, реализация которого несовершенна. Это делает возможными различные теоретические атаки (такие как отправка в групповом чате сообщения, которое будет выглядеть по-разному у разных получателей), а также вполне практические. Например, при наличии физического доступа к смартфону чтение на нем баз данных Threema и резервных копий будет очень несложным — если для защиты приложения не была задана парольная фраза. Также возможно «клонирование» Threema ID, что позволит в дальнейшем переписываться от имени жертвы (но не одновременно с ней). Разумеется, все сценарии с физическим доступом к смартфону являются одними из самых негативных для любого приложения, и защититься от них невероятно сложно.

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

Среди недостатков самого протокола коммуникации наиболее сложным для починки является отсутствие в старом протоколе Threema свойства будущей секретности. То есть расшифровав одно сообщение, можно расшифровывать и следующие. Об этом известно достаточно давно, и видимо, поэтому в декабре Threema анонсировала принципиально новую, более защищенную версию своего протокола, который, по словам авторов, они разрабатывали последние полтора года. Этот новый протокол, который называется Ibex, пока не успел пройти никаких независимых аудитов безопасности. Остается только верить разработчикам на слово, что там учтены все нюансы современной практической криптографии. Хотелось бы, чтобы в Threema вняли совету авторов из ETH Zurich — проводить внешний аудит протоколов на ранних этапах разработки, а не после выпуска «в поле».

Эксплуатация многих описанных уязвимостей предполагает, что сервер Threema скомпрометирован и кто-то на стороне оператора сознательно пытается похитить данные переписки или нарушить общение. Это важно для организаций, которые эксплуатируют Threema Work. Если данные компании нельзя подвергать даже гипотетическому риску, стоит перейти на Threema OnPrem, в которой у организации будет собственный сервер Threema. В этом случае администраторам надо изучить возможные опции усиления защиты сервера (hardening).

Разработчикам приложений тоже нужно извлечь из этой ситуации уроки. «Не придумывайте свои криптоалгоритмы!» — тысячу раз повторяли криптографы (а Telegram не послушал). Но авторы Threema использовали многократно проверенные криптоалгоритмы и их корректную стандартную реализацию! Ряд ошибок был допущен из-за того, что стандартная криптография применяется в оригинальном протоколе общения клиента с сервером, который используется вместо стандартного TLS. Видимо, эксперты по криптографии теперь будут говорить: «Не придумывайте свои криптоалгоритмы и криптопротоколы!»

Практические следствия

Если вы самостоятельно выбрали Threema как «самый зашифрованный мессенджер», согласны использовать для работы мессенджера номер своего телефона и не хотите вникать в технические тонкости, то лучше перейдите на Signal. Его криптография и принципы хранения данных лучше выверены в различных деталях и, как доказано реальными взломами и судебными ордерами, устойчивы ко всему перечисленному. Если вам обязательно использовать Threema, потому что так принято на работе, или вам нравится то, что Threema ID не связаны с номерами телефонов, можете продолжать это делать — но знайте о рисках. Они скорее гипотетические, но совсем сбрасывать их со счетов нельзя. Обязательно перепроверяйте и верифицируйте в офлайне Threema ID своих новых собеседников и используйте парольные фразы для защиты входа в приложение.

Организациям среднего и большого размера, которые используют Threema в бизнес-процессах, стоит всерьез изучить переход на Threema OnPrem, чтобы полностью контролировать серверы мессенджера.

Советы