На прошлой неделе исследователь Джонатан Лейтсач опубликовал весьма эмоциональный пост об уязвимостях в клиенте для веб-конференций Zoom для операционной системы macOS. В данном случае не совсем понятно, была ли уязвимость непреднамеренным багом или заранее спланированной фичей. Попробуем разобраться, но если коротко, выходит так: если у вас установлен клиент Zoom, злоумышленник может подключить вас к своей телеконференции без спроса, более того — он может активировать веб-камеру, не спрашивая дополнительных разрешений.
Тот момент, когда вместо поиска пропатченной версии кто-то решит просто удалить клиент из системы. Но в данном случае это не поможет: вместе с клиентом устанавливается веб-сервер, который работает даже после деинсталляции — он даже способен «вернуть» клиентское ПО на место. В опасности, таким образом, оказались даже те, кто когда-то пользовался сервисами Zoom, но потом перестал. К ним на помощь пришла компания Apple, без особых фанфар удалившая веб-сервер апдейтом для ОС. Эта история — настоящая infosec-драма, в которой пользователям остается только наблюдать, как на их компьютерах появляется и исчезает разнообразный софт.
Исследование методов работы клиента Zoom началось с изучения локального веб-сервера: к нему пытается обратиться сайт сервиса при открытии ссылки для подключения к телеконференции. Применен относительно элегантный способ запроса состояния локального сервера — путем передачи изображения определенного формата.
Так сделано для обхода ограничений браузера, следующего правилам Cross-Origin Resource Sharing. Веб-серверу Zoom также можно передать запрос на подключение к конференции. Выглядит этот запрос примерно так:
Можно создать конференцию, поместить подобный запрос на веб-страницу, отправить ссылку жертве, и установленный на компьютере клиент автоматически подключит пользователя. Дальше стоит посмотреть на параметры самой веб-конференции:
У вас есть возможность принудительного включения веб-камеры пользователя. То есть вы можете заманить ничего не подозревающего человека на конференц-звонок и сразу же получить изображение с камеры (но звук с микрофона жертве нужно будет включить вручную). В клиенте Zoom автоматическое включение камеры можно заблокировать, но с настройками по умолчанию камера включается сразу же. Кстати, если отправлять запросы на подключение к конференции непрерывно, приложение Zoom будет постоянно переключать фокус на себя, не давая пользователю возможности как-то отменить это действие. Это классическая атака Denial Of Service.
Наконец, исследователь подтвердил возможность принудительного апгрейда или установки заново клиента Zoom, если на компьютере работает веб-сервер. Реакция вендора поначалу была далека от идеальной. Разработчики Zoom предложили несколько вариантов «заплаток» в логике веб-сервера, чтобы исключить возможность подключения пользователей без спроса. Все они легко обходились или немного усложняли жизнь потенциального злоумышленника. Финальное решение заключалось в добавлении еще одного параметра, передаваемого локальному серверу. Как выяснил исследователь, оно тоже не решало проблему. Единственное, что точно починили — это уязвимость, позволяющую проводить DoS-атаку. А на предложение Джонатана убрать включение веб-камеры по требованию организатора конференции и вовсе был дан ответ, что это фича, «клиентам так удобнее».
Первый раз исследователь пытался выйти на контакт с разработчиками Zoom 8 марта. 8 июля истек общепринятый трехмесячный срок для исправления уязвимости, и Джонатан опубликовал свой пост о том, что он посчитал нерешенной проблемой. Только после публикации статьи Zoom пошел на более радикальные меры: 9 июля был выпущен патч, который полностью удаляет веб-сервер с компьютеров под управлением macOS.
Дорогая редакция регулярно общается по видеоконференц-связи и может на личном опыте заявить: все так делают. Не в том смысле, что все устанавливают локальный веб-сервер вместе с клиентом и потом забывают его удалить. Все или почти все сервисы для конференц-связи требуют больше привилегий в системе, чем им может предоставить страница в браузере. Поэтому в ход идут локальные приложения, расширения для браузеров и прочие инструменты, чтобы в процессе общения работали микрофон и камера, можно было делиться файлами и изображением своего рабочего стола. Откровенно говоря, «уязвимость» (а точнее, намеренная ошибка в логике) Zoom — это не самое страшное, что с такими сервисами происходило.
В 2017 году проблема была обнаружена в браузерном расширении другого сервиса конференц-связи — Cisco Webex. В том случае уязвимость позволяла выполнять в системе произвольный код. В 2016 году в менеджере паролей Trend Micro проблема также была найдена в локальном веб-сервере, что тоже открывало возможность выполнения произвольного кода. В конце прошлого года мы писали про дыру в утилите для клавиатур и мышей Logitech: даже там использовался локальный веб-сервер, обращения к которому были возможны откуда угодно.
Вывод: это довольно распространенная практика, хотя с точки зрения безопасности явно не самая лучшая — уж слишком много потенциальных дыр несет с собой такой веб-сервер. Особенно если он по умолчанию создан для взаимодействия с внешними ресурсами (например, сайтом, инициирующим веб-конференцию). Тем более, если его нельзя удалить. Возможность быстрого восстановления клиента Zoom после удаления была явно сделана то ли для удобства пользователей, то ли для удобства разработчика. Тем не менее, после публикации исследования это принесло дополнительные проблемы. Окей, активные пользователи Zoom получили обновление, и проблема была решена. А что делать с теми, кто когда-то пользовался клиентом Zoom, потом перестал, но локальный веб-сервер у них до сих пор работает? Как оказалось, Apple по-тихому выпустила апдейт, удаляющий веб-сервер даже в таком случае.
Надо отдать должное разработчику сервиса Zoom: после, так сказать, негативной реакции общественности они решили проблему и теперь регулярно делятся обновлениями с пользователями. Это явно не история успеха: тут и разработчик пытался вежливо игнорировать реальные предложения исследователя, и исследователь назвал «зиродеем» то, что им не совсем является. Но в итоге все закончилось хорошо.
Disclaimer: Мнения, изложенные в этом дайджесте, могут не всегда совпадать с официальной позицией «Лаборатории Касперского». Дорогая редакция вообще рекомендует относиться к любым мнениям со здоровым скептицизмом.
Автор: Kaspersky_Lab