Специалист Google обнаружил проблему в Telegram для macOS. Уязвимость позволяет обойти контроль доступа приложений к файлам и получить несанкционированный доступ к микрофону и камере пользователя. Разработчики уже подтвердили наличие бага и сообщили, что исправление находится на рассмотрении Apple.
Уязвимость CVE-2023-26818 обнаружил и детально описал инженер Google Дэн Рева (Dan Revah). По его словам, проблема была найдена еще в феврале, однако связаться с разработчиками Telegram ему не удалось, и поэтому теперь информация о баге была опубликована в открытом доступе до выхода патчей.
В своем блоге Рева объясняет, что уязвимость позволяет внедрить в Telegram для macOS динамическую библиотеку, осуществить локальное повышение привилегий и получить доступ к камере и микрофону через разрешения, которые ранее уже были установлены в Telegram. Он подчеркивает, что даже пользователь root в macOS не имеет разрешения на доступ к микрофону, записи экрана и так далее, если предварительно не было получено прямое согласие на такие действия от пользователя.
Проблема связана с механизмом контроля доступа приложений к файлам (Transparency, Consent, and Control или TCC), который используется в macOS. Этот механизм управляет доступом к защищенным конфиденциальным областям в ОС, и приложения могут получить к ним доступ только путем получения разрешения от пользователя или после обнаружения намерений пользователя через определенное действие.
Также важными защитными механизмами являются Entitlements и Hardened Runtime. Первый из них отвечает за разрешения, предоставляемые конкретному бинарнику для получения определенных привилегий, а второй защищает целостность ПО во время выполнения, предотвращая определенные типы атак, такие как инжекты, DLL hijacking и вмешательство в пространство памяти процессов, наряду с System Integrity Protection (SIP).
Интересно, что iOS требует, чтобы приложения, загружаемые в App Store, использовали права Hardened Runtime, а вот для macOS таких требований нет.
Рева выяснил, что приложение Telegram из AppStore не использует эти защитные механизмы должным образом, что позволяет использовать переменную среды DYLD_INSERT_LIBRARIES, которая содержит список библиотек, загружаемых перед запуском приложения. В итоге отсутствие Hardened Runtime позволяет внедрить вредоносную динамическую библиотеку и не заботится о правах. В результате библиотека будет запущена еще до запуска самого Telegram, предоставляя доступ к запрещенным в противном случае функциям.
В качестве демонстрации эксперт создал динамическую библиотеку dylib на Objective-C, которая захватывала видео с камеры жертвы и сохраняла запись в отдельный файл (исследователю пришлось обойти песочницу терминала с помощью LaunchAgents). Разумеется, все это происходило без ведома пользователя.
Теперь, когда эта проблема привлекла внимание ИБ-сообщества и СМИ, разработчики Telegram наконец ответили специалисту.
Официальный аккаунт Telegram в Twitter сообщает, что уязвимость актуальна только для устройств Apple уже зараженных малварью с root-доступом, а также присутствует только в версии Telegram, загруженной из AppStore. То есть если в приложении с официального сайта уязвимости уже нет. В компании сообщают, что патч уже находится на рассмотрении Apple, так что версия в AppStore тоже скоро будет исправлена.