WeChat-червь WeWorm показал неприятный сценарий для мессенджеров: аккаунт можно было захватить через VoIP-звонок, который жертва даже не принимала. Исследователи Calif нашли zero-click-уязвимость в VoIP-стеке WeChat для Android и iOS.
Речь не про обычный фишинг с ссылкой и не про вредный файл. Пользователь мог ничего не нажимать, не отвечать на вызов и вообще не трогать смартфон. Сам факт входящего звонка в WeChat запускал атаку.
WeChat — не рядовой чатик на пару рынков. Это суперприложение примерно на 1,4 млрд пользователей, особенно заметное в Китае. Внутри есть переписка, звонки, лента, платежи, заказ еды, такси и доступ к разным сервисам.
WeWorm срабатывал уже на этапе звонка
Calif описывает проблему как ошибку повреждения памяти в VoIP-стеке WeChat. Технические детали исследователи пока не раскрыли, чтобы не дать готовую схему атаки до публичного доклада на конференции.
Для демонстрации команда собрала червя WeWorm. Он звонил контакту через WeChat и начинал работу, когда у жертвы просто шел входящий вызов. Модель смартфона и операционная система роли не играли: атака работала против Android и iPhone.
У атаки было одно ограничение. Злоумышленник должен был находиться в списке контактов WeChat у цели. Для массового червя это всё равно опасная схема: после захвата аккаунта он получает контакты жертвы и может звонить дальше уже от ее имени.
Если человек принимал вызов, он слышал тишину. Если сбрасывал звонок, атака останавливалась. Но это слабое утешение: повторный вызов ночью или во время отсутствия у телефона снова открывал окно для заражения.
По данным Calif, через несколько секунд атакующий получал доступ к аккаунту WeChat. В зоне риска были сообщения, список контактов и другие данные внутри приложения. Платежи выглядят самым чувствительным пунктом, но WeChat Pay использует дополнительную проверку и антифрод-контроли.
Tencent закрыла дыру в версиях 8.0.77 и 8.0.76
Tencent получила отчет от Calif по процедуре responsible disclosure и выпустила исправления для WeChat. Для Android проблему закрыли в версии 8.0.77, для iOS — в 8.0.76.
В описании обновлений Tencent не стала расписывать уязвимость. В changelog попала стандартная формулировка про исправление ошибок. В комментарии для The Hacker News компания заявила, что эксплойт «mitigated for all users», а часть защиты применили на стороне сервера.
Это важная деталь для оценки риска. Публичных признаков эксплуатации в реальных атаках нет. Calif тоже не пишет, что кто-то использовал дыру против пользователей до патча.
Но класс уязвимости неприятный. Zero-click-баги давно считаются самым дорогим и опасным сегментом мобильных атак. Пользователь не делает ошибку, не открывает вложение и не вводит пароль на фейковой странице. Приложение само принимает входящий сетевой поток и падает в уязвимый код.
У WeChat есть версии для HarmonyOS, Windows, macOS и Linux. Calif не заявляла, что проверила эти клиенты. Tencent тоже не указала их в исправлениях, связанных с этим кейсом.
Исследователи прямо называют WeChat только одним примером более широкой проблемы: «This specific WeChat bug is one instance of the many unconventional attack surfaces that are present across many messaging apps». Техническое описание бага Calif обещает раскрыть позже, после дополнительной работы с разработчиками приложений и владельцами платформ. Публичная карточка исследования доступна на сайте Calif, а позицию Tencent цитировала The Hacker News.