Эксперт Google обнаружил уязвимость 20-летней давности, опасную для всех версий Windows

Специалист Google Project Zero Тевис Орманди (Tavis Ormandy) обнаружил опасную проблему, связанную с MSCTF. Баг появился почти 20 лет назад и затрагивает все версии Windows, начиная с XP и заканчивая новейшими версиями Windows 10. Злоумышленники или малварь, уже закрепившиеся на компьютере пользователя, могут использовать CTF для захвата управления любым приложением (в том числе с высокими привилегиями) или всей ОС в целом.

Фактически, CTF является частью Windows Text Services Framework (TSF), системы, которая управляет текстом, отображаемым в приложениях Windows и самой ОС. Так, когда пользователь запускает какое-либо приложение, вместе с этим Windows запускает и клиент CTF для этого приложения. Клиент получает инструкции от CTF-сервера о языке системы и методах ввода с клавиатуры. Если метод ввода изменяется с одного языка на другой, то сервер уведомляет об этом всех клиентов CTF, которые соответственно изменяют язык в каждом приложении Windows в режиме реального времени.

Орманди обнаружил, что коммуникации между клиентом и сервером не защищены должным образом. Исследователь пишет, что контроль доступа у CTF вообще отсутствует, а значит, любое приложение и пользователь могут подключиться к любому активному сеансу CTF, причем это касается даже процессов из песочницы. Так как аутентификация не требуется, можно просто солгать о HWND, идентификаторе процесса и так далее.

«Таким образом можно подключиться к любому активному сеансу другого пользователя и захватить любое приложение. Или можно дождаться, пока в систему войдет администратор, и скомпрометировать его сессию»,  — пишет Орманди.

Преступники могут использовать эту лазейку для кражи данных из других приложений, или для подачи команд от имени этих приложений. Хуже того, если приложение работает с высокими привилегиями, злоумышленник и вовсе может захватить полный контроль над компьютером жертвы.

Эксперт Google объясняет, что атаковать таким способом можно буквально любое приложение или процесс Windows. Все дело в роли CTF: он показывает текст внутри каждого приложения и службы, то есть сеанс CTF существует в прямом смысле для всего и вся, включая каждый элемент пользовательского интерфейса в Windows.

Так, атакующие могут легко обойти изоляцию привилегий пользовательского интерфейса (UIPI), и это позволит:

  • читать конфиденциальный текст из любого окна других приложений, включая пароли из диалоговых окон;
  • получить привилегии SYSTEM;
  • взять под контроль диалог UAC;
  • посылать команды в консольную сессию администратора;
  • совершить побег из песочницы IL/AppContainer.

В качестве доказательства своих слов Орманди продемонстрировал эксплуатацию проблемы в деле, опубликовав два PoC-видео.


Также исследователь опубликовал на GitHub специальный инструмент CTF Exploration, который был разработан специально для тестирования MSCTF и может пригодиться другим экспертам для дальнейшего поиска уязвимостей.

Представители Microsoft сообщили изданию ZDNet, что уже исправили уязвимость CTF в рамках августовского «вторника обновлений». Проблема получила идентификатор CVE-2019-1162. Однако Орманди сомневается, что этого будет достаточно, так как уязвимость глубоко укоренилась в протоколе и самом его дизайне. В настоящее время эксперт задается вопросом, не придется ли инженерам Microsoft модернизировать CTF в целом.

Напомню, что в целом в рамках «вторника обновлений» в августе были исправлены более 90 различных уязвимостей, 29 из которых оцениваются как критические. Они затрагивают браузеры Microsoft Edge и Internet Explorer, Windows, Outlook и Office. В отличие от предыдущих месяцев, ни одна из устраненных уязвимостей не находилась под атаками, а детали проблем не были публично раскрыты до выхода патчей.

Мария Нефёдова: Блондинка, гик, книжный червь, синефил. Редактор ленты новостей; иногда автор Сцены.