13 августа компания Microsoft выпустила очередной апдейт безопасности (обзорная новость) для операционных систем Windows и офисных программ, и на этот раз патч оказался по-настоящему гигантским: кому-то явно не удалось сходить этим летом в отпуск. Всего было закрыто 93 уязвимости, из которых 23 квалифицированы как критические. Закрыты серьезные баги в Remote Desktop Services, в клиенте DHCP, в обработчике .LNK-файлов, две уязвимости в Hyper-V с побегом из песочницы.
Столь монументальная работа над ошибками — это очень хорошая новость. Помимо прочего, несколько уязвимостей интересны сами по себе, а еще у одной интересная история обнаружения. Помимо уже упомянутых проблем в Remote Desktop Services, сегодня мы подробнее рассмотрим уязвимость в сервисе MSCTF. Исследователь Тавис Орманди из Google Project Zero, обнаруживший последнюю, утверждает, что проблема существует уже 20 лет. Ну и заодно оценим уязвимость в Bluetooth, которая затрагивает не только Windows.
WTF is CTF?
Уязвимость в сервисе MSCTF была обнаружена Тависом Орманди почти случайно (новость, пост в блоге Тависа). Все началось с изучения механизмов Windows, позволяющих разным программам взаимодействовать друг с другом. Такое взаимодействие ограничивается системой User Interface Privilege Isolation, которая не позволяет, например, пользовательским процессам вмешиваться в системные. Изучая странные случаи, когда, несмотря на ограничения, сообщения все же проходили, Тавис и наткнулся на модуль MSCTF.
Этот модуль относится к Text Services Framework, который в свою очередь управляет раскладками клавиатуры и подобным. К нему подключаются все запущенные приложения. Зачем? Ну, например, для облегчения процесса ввода текста на китайском или японском языках.
Для таких языков отдельная программа обрабатывает ввод в окне приложения и меняет введенное на иероглифы. По сути MSCTF — это отдельный канал коммуникации между приложениями, который, как выяснилось, недостаточно защищен. Самая ранняя версия MSCTF, которую удалось найти Тавису, входит в комплект офисного пакета Microsoft Office XP, совместимого еще с Windows 98. Начиная с Windows XP, MSCTF является частью операционной системы. Возможности взаимодействия с другими приложениями через MSCTF весьма широкие, а главное — нет никакой авторизации. В итоге Тавис написал утилиту для работы с CTF и занялся поиском уязвимостей:
Уязвимости, пусть и не сразу, были найдены. В «лучшем» случае, на системе с одним из языков, требующих расширенные инструменты ввода (японский, китайский, корейский и некоторые другие), можно подменять текст в приложении, отправлять команды в консоль с правами администратора, не будучи при этом привилегированным пользователем, или красть пароли пользователей. В худшем (правда, вышеперечисленное — уже достаточно плохо) можно получить права системы, то есть повысить свои привилегии до максимальных. Такой Proof of Concept показан на видео:
Уязвимость имеет ограниченное применение, и скорее всего, большинство сценариев доступно только при наличии доступа к системе. Тем не менее, потенциально возможны варианты, когда пользователь без привилегий получает, скажем, права администратора домена на предприятии. Уязвимость закрыта августовским обновлением для всех ОС, начиная с Windows 7.
Bluekeep или не Bluekeep
Проблемы в Remote Desktop Services (новость, бюллетень на сайте Microsoft) отчасти похожи на обнаруженную в мае этого года уязвимость Bluekeep. Дыры в сервисе удаленного доступа (но не в самом протоколе RDP) теоретически позволяют распространять атаку на все компьютеры в сети, без участия пользователей: есть определенный риск повторения ситуации с шифровальщиком WannaCry в 2017 году, когда масштабно эксплуатировалась проблема в реализации протокола SMB.
Впрочем, есть и отличия от BlueKeep. Более ранняя проблема не распространялась на последние версии ОС, сейчас же, наоборот, ей подвержены все ОС от Windows 7 до Windows 10 (но не Windows XP, Server 2003 и 2008). Баги были выявлены в ходе внутреннего аудита Microsoft, реальных атак пока не было замечено. И Bluekeep, и четыре новые проблемы нейтрализуются включением Network Level Authorization. Но NLA на непропатченной системе не до конца спасает от ряда сценариев выполнения кода на удаленной машине. В худшем случае (нет NLA, не установлен августовский патч, включен удаленный доступ) появляется возможность обойти авторизацию и получить контроль над системой путем отправки подготовленного запроса.
Уязвимость в Bluetooth
Проблему, известную как KNOB Attack (Key Negotiation of Bluetooth), обнаружили исследователи из Сингапура, Германии и Великобритании (новость, сайт исследования, научная работа). В отличие от других уязвимостей из набора патчей Microsoft, эта распространяется не только на Windows, но и вообще актуальна почти везде, где используется Bluetooth. Большой список апдейтов от производителей смартфонов, ноутбуков, IP-телефонов, отреагировавших на проблему, есть здесь.
В спецификациях Bluetooth два устройства, устанавливающие между собой защищенное соединение, могут выбирать длину ключа в пределах от 1 до 16 байт. В случае «восьмибитного» ключа взломать его можно достаточно быстро простым перебором: если такое «слегка защищенное» соединение будет по каким-то причинам установлено, атакующий может расшифровать обмен данными. Например, между клавиатурой и настольным компьютером. Вопрос в том, как именно реализовать такую атаку, и исследовательская работа доказывает, что есть как минимум два умеренно реалистичных варианта.
В первом случае находящийся поблизости от двух жертв атакующий может заставить их использовать шифрование с длиной ключа в 1 байт. Дело в том, что в процессе установки соединения отсутствует шифрование и даже контроль целостности данных. Во втором случае исследовался сценарий атаки на цепочку поставок: подмена прошивки устройства обеспечивает слабое шифрование во всех случаях. Вторая атака была проведена на телефон Nexus 5: меняем несколько байт в прошивке, ограничиваем длину ключа, подключаемся к другому смартфону, который вынужден принять условия для установки соединения.
Это серьезная уязвимость, которая существует благодаря изначально слабым спецификациям стандарта Bluetooth. Кроме того, множество устройств будут и дальше подвержены атаке KNOB, так как для них просто не выпустят обновление. С другой стороны, реализация такого сценария на практике достаточно сложна: в первом случае требуется оказаться неподалеку от жертвы в нужное время, во втором — вмешиваться в цепочку поставок и потом, опять же, быть рядом с атакуемым устройством, когда по нему передаются конфиденциальные данные. Во всех случаях патч устанавливает минимальную длину ключа так, чтобы атака стала практически неприменимой.
Disclaimer: Мнения, изложенные в этом дайджесте, могут не всегда совпадать с официальной позицией «Лаборатории Касперского». Дорогая редакция вообще рекомендует относиться к любым мнениям со здоровым скептицизмом.
Автор: Kaspersky_Lab