В десктопном приложении Telegram для Windows устранили уязвимость нулевого дня, которая могла использоваться для обхода предупреждений безопасности и автоматического запуска Python-скриптов.
Издание Bleeping Computer сообщает, что на прошлой неделе в социальных сетях и на хакерских форумах появились слухи о некой уязвимости в Telegram, которая позволяет выполнять произвольный код на машине жертвы.
Хотя некоторые утверждали, что речь идет об уязвимости, которая вообще не требует взаимодействия с пользователем, видеоролики, демонстрирующие проблему, показывали, что кто-то нажимает на полученный файл в Telegram, чтобы запустить калькулятор в Windows.
На тот момент представители Telegram оперативно опровергли слухи об уязвимости, заявив, что они «не могут подтвердить существование такой проблемы», а видео, скорее всего, является фейком.
Однако вскоре после этого на хакерском форуме XSS был опубликован POC-эксплоит, в котором объяснялось, что из-за опечатки в исходном коде Telegram для Windows можно отправлять пользователям Python-файлы .pyzw, при нажатии на которые можно обойти предупреждения.
В итоге файл .pyzw автоматически выполнялся, а Telegram не показывал никаких предупреждений, как это происходит с другими исполняемыми файлами и должно было происходить в этом случае. В нормальных обстоятельствах, при запуске файла с потенциально опасным расширением (список можно найти здесь), мессенджер отображает предупреждение, сообщая, что файл может нанести вред компьютеру пользователя.
Однако файлы неизвестных типов, которыми пользователи делятся через Telegram, могут автоматически запускаться в Windows, позволяя ОС самостоятельно решать, какую программу использовать для их запуска.
Хуже того, в опубликованном на XSS эксплоите Python-файл был замаскирован под видео с превью, то есть эту тактику можно было использовать для обмана пользователей, вынуждая их кликнуть на фальшивку.
В беседе с Bleeping Computer разработчики отметили, что уже исправили проблему в Telegram, и теперь автоматический запуск Python-скриптов при клике на файл не срабатывает. Также в компании еще раз подчеркнули, что это была не zero-click уязвимость, то есть проблема все равно требовала взаимодействия с человеком.
«Слухи о существовании zero-click уязвимости в Telegram Desktop не соответствуют действительности. Некоторые “эксперты” рекомендовали “отключить автоматические загрузки” в Telegram, но не существовало никаких проблем, которые автоматические загрузки могли бы спровоцировать.
Однако в Telegram Desktop была обнаружена проблема, которая требовала от пользователя кликнуть на вредоносный файл при наличии на компьютере установленного интерпретатора Python. Вопреки предыдущим сообщениям, это не zero-click уязвимость, и она могла затронуть лишь небольшую часть нашей пользовательской базы: менее 0,01% наших пользователей имеют установленный Python и используют соответствующую версию Telegram для десктопов.
Нами было применено исправление на стороне сервера, чтобы гарантировать, что даже эта проблема больше не воспроизводится, поэтому все версии Telegram Desktop (включая старые) больше не имеют этой уязвимости», — сообщили в компании.
Как объясняет Bleeping Computer, разработчики, конечно, знали о том, что файлы .pyzw, предназначенные для Python zipapps, могут представлять угрозу. Однако в упомянутый выше список расширений было включено расширение .pywz, а не .pyzw. То есть проблема заключалась в банальной опечатке.
Журналисты отмечают, что об ошибке разработчиков уведомили 10 апреля, и они устранили ее, исправив опечатку в файле data_document_resolver.cpp. Однако пока это исправление не работает, и после клика по файлу все еще не показывается предупреждение.
Вместо этого авторы Telegram пока решили проблему на стороне сервера, добавляя расширение .untrusted ко всем файлам .pyzw. То есть при клике на них Windows будет спрашивать человека, какую программу нужно использовать и не станет автоматически запускать их посредством Python.
В будущих версиях десктопного приложения Telegram должны заработать обычные предупреждения о потенциальной опасности файлов, и нужда в расширениях .untrusted отпадет.