Security Week 2222: уязвимость в приложении Zoom

6090f6b92a3cb4a639a494dd980ec157.jpeg

На прошлой неделе разработчики клиента для веб-конференций Zoom закрыли серьезную уязвимость, которая при некоторых обстоятельствах могла приводить к выполнению произвольного кода. Уязвимость получила идентификатор CVE-2022–22787, ее особенности кратко описаны в статье издания The Register и в бюллетене компании Zoom. Обнаружил проблему эксперт из команды Google Project Zero, и вот их подробный отчет представляет большой интерес.

Исследователь Иван Фратрич (Ivan Fratric) по сути смог построить атаку на далеко не самой очевидной основе. Для пересылки сообщений в Zoom используется собственная реализация открытого протокола XMPP. Проблема заключалась в том, что код, отвечающий за разбор содержимого сообщений в формате XML, различается на сервере и на клиенте. Минимальные различия в парсинге удалось превратить в полноценную атаку, которая при этом не требует никаких действий от жертвы, если передача сообщений от атакующего в принципе разрешена.

Исследователь назвал свою атаку XMPP Stanza Smuggling. Stanza или «строфы» — это стандартные элементы в формате XML, пересылаемые от отправителя на сервер и далее к получателю. Фратрич нашел способ протаскивания незаконных строф контрабандой в теле сообщения. Причина была в том, что на сервере Zoom (по предположению исследователя) используется модифицированное открытое ПО ejabberd. Для парсинга XML в нем применяется библиотека fast_xml, в которой, в свою очередь, использован код парсера Expat. На клиенте для того же самого используется библиотека Gloox. Как оказалось, библиотека Expat не проверяет пару символов, если использовать идентификатор трехбайтовой кодировки UTF. Gloox, в свою очередь, игнорирует идентификатор, проверяет ввод посимвольно, а значит, в ту самую пару символов можно протащить троянского коня.

Дальше эксперт строил цепь атаки, и оказалось, что его возможности тут достаточно велики — он ведь способен передавать без проверки на сервере служебные сообщения. Можно, например, изменить домен, на который пользователь направляется, когда он хочет приложить файл из облачного сервиса. Но в этом же наборе функций была найдена возможность изменить адреса серверов Zoom. После подмены доменного имени не обязательно пытаться имитировать работу настоящего сервера Zoom, достаточно пересылать сообщения между клиентом и сервером. А в нужный момент, когда клиент в очередной раз пойдет проверять наличие обновлений, подсунуть ему вредоносный исполняемый файл.

Помимо этой проблемы, Фратрич нашел еще пару уязвимостей в механизме парсинга XML. Хотя проблема в обработке входящих данных технически была на сервере, Zoom, судя по всему, в первую очередь пропатчил клиент, заблокировав возможность подмены сервера, то есть исключил атаку типа Man-in-the-Middle. Помимо этого, информация об ошибке парсинга была отправлена разработчикам библиотеки Expat.

Что еще произошло:

Компания Microsoft публикует подробный отчет об эволюции вредоносного ПО, крадущего данные кредитных карт на сайтах с функциональностью интернет-магазина. Среди приведенных примеров успешных атак — интересный вариант стеганографии, когда вредоносный код на языке PHP скрывается в картинке, которая подбрасывается на взломанный сервер. В целом главный вывод отчета — злоумышленники пытаются сделать работу веб-скиммеров более скрытной.

Издание ArsTechnica пишет об уязвимости в цифровых водительских правах, которые некоторое время выдаются в Австралии (и вместо карточки позволяют показать удостоверение личности на смартфоне). Ранее их особенности уже обсуждались, но в контексте очень грубой подделки. Например, тинейджер может притвориться, что он старше, чем на самом деле, просто изменив скриншот цифровых прав в фотошопе и показав его на входе в питейное заведение. Но в данном случае проблема сложнее: как выяснилось, достаточно легко создать поддельные виртуальные права, которые проходят инструментальную проверку. То есть при считывании QR-кода на терминале проверяющего (в полиции или там, где требуется проверять возраст) будет «зеленый сигнал».

© Habrahabr.ru