Хакер #305. Многошаговые SQL-инъекции
Специалисты CitizenLab обнаружили, что китайская платформа WeChat использует кастомный протокол шифрования, который порождает проблемы с безопасностью. Протокол называется MMTLS и представляет собой модифицированную версию TLS 1.3.
Исследователи пишут, что MMTLS основан на TLS 1.3, и китайские разработчики, по сути, изменили стандартный TLS. Однако в результате приложение получило шифрование, которое «не соответствует уровню криптографии, которого можно было бы ожидать от приложения, используемого миллиардом пользователей (например, детерминированные IV и отсутствие прямой секретности)».
Хотя MMTLS был обнаружен некоторое время назад, лишь более тщательный анализ протокола показал, что WeChat предлагает два уровня шифрования, а не один, как считалось ранее. Так, обычный текст обертывается так называемым «шифрованием бизнес-уровня», а полученный в результате шифрованный текст — шифрованием MMTLS, после чего передается по сети WeChat.
По словам исследователей, в Китае разработчики нередко создают свои собственные криптографические системы, и, как правило, ни одна из них не является столь же надежной, как стандартные реализации TLS 1.3 или QUIC.
Так, большинство обнаруженных криптографических проблем связано с упомянутым «шифрованием бизнес-уровня», основанном на AES-CBC, которое до внедрения MMTLS в 2016 году было единственным уровнем шифрования для сетевых запросов.
Фактически, единственная причина, по которой исследователям не удалось успешно атаковать WeChat, заключается в том, что теперь он защищен еще и MMTLS.
Одной из наиболее серьезных проблем, обнаруженных CitizenLab, является тот факт, что «шифрование бизнес-уровня» не шифрует метаданные, такие как идентификаторы пользователей и URI запросов, передавая их открытым текстом.
Из-за этого исследователи предполагают, что, к примеру, при прослушивании внутренней сети WeChat, где данные уже не шифруются повторно и не защищены MMTLS, можно атаковать «шифрование бизнес-уровня». Отмечается, что эта проблема, очевидно, волнует и разработчиков Tencent, так как они постепенно переходят от не слишком надежного AES-CBC к AES-GCM.
Хотя в конечном итоге, благодаря обертыванию шифротекста в MMTLS, в протоколе WeChat нет фактических уязвимостей, которые можно эксплуатировать прямо сегодня, исследователи пишут, что обнаружили ряд проблем, которые отсутствуют в стандартной, немодифицированной версии TLS.
Так, сообщения, отправленные с помощью WeChat, защищены от перехвата. Однако компания Tencent все обязана выполнять любые запросы властей Китая, в соответствии с местными законам, а переписка в WeChat не защищена end-to-end шифрованием: серверы приложения расшифровывают и читают каждое сообщение.
Эксперты пишут, что могли бы узнать больше, если бы имели доступ к версии WeChat, которая используется в Китае. Однако, учитывая сложность получения доступа к китайским телефонным номерам (они обязательно должны иметь привязку к внутренним ID), пришлось использовать некитайские номера, а из-за этого приложение действует по-другому.
Также в отчете отмечается, что китайские разработчики нередко внедряют собственные системы domain lookup, чтобы смягчить влияние недобросовестных интернет-провайдеров. Они часто занимаются перехватом DNS для показа рекламы или мошеннического перенаправления трафика.
И часть кода WeChat взята прямо из Tencent Mars — опенсорсного компонента инфраструктуры, который обеспечивает приложения общей базовой функциональностью, такой как работа с сетями и логирование. И в Mars существует функция под названием NewDNS, представляющая собой именно такую систему domain lookup, как описано выше, присутствующую в WeChat.
Исследователи пишут, что Mars широко применяется и в приложениях за пределами WeChat, и это является проблемой, поскольку компонент не обеспечивает никакого транспортного шифрования. А MMTLS не является частью Mars, так как разработан специально для WeChat. В сочетании с отсутствием официальной документации для разработчиков Mars, все это повышает вероятность возникновения ошибок, а это приводит к потенциальному ослаблению безопасности.
В конце отчета специалисты Citizen Lab резюмируют, что Tencent лучше перейти на стандарт TLS или сочетание QUIC и TLS для повышения безопасности приложений.