Google нашёл 16 уязвимостей в ядре Windows при помощи фаззинга

Google нашёл 16 уязвимостей в ядре Windows при помощи фаззинга

Google нашёл 16 уязвимостей в ядре Windows при помощи фаззинга

Специалисты Google протестировали компонент ядра Windows и обнаружили в нём шестнадцать опасных уязвимостей. Впоследствии оказалось, что таким образом они, сами того не зная, перебежали дорогу Hacking Team. Хакеры знали об одной из этих уязвимостей и хотели выпустить эксплойт, но не успели.

Все уязвимости скрывались в подсистеме, которая отвечает за визуализацию шрифтов. В большинстве версий Windows она по историческим причинам включена в состав ядра. Это делает её изъяны особенно опасными. Рассказ об охоте на них, которую предпринял Google, опубликован в блоге Project Zero.

В растеризаторах шрифтов всегда полно уязвимостей, и не без причины. Во-первых, они, как правило, написаны на Си или Си++, а сложные программы на этих языках почти всегда подвержены ошибкам из-за переполнения буфера или нарушения безопасности памяти. Во-вторых, шрифты в форматах TrueType и OpenType могут содержать код, исполняемый в специальных виртуальных машинах. Это делает их настоящим кладом для хакеров, передает xakep.ru.

Специалисты Google занимались поиском уязвимостей в растеризаторе Windows с начала 2015 года. Он оказался непростым объектом для изучения. Его исходники, в отличие от исходников FreeType, недоступны, и даже отладочной информации во многих случаях нет. Задача усложняется тем, что код растеризатора исполняется на уровне ядра операционной системы.

В мае 2015 года в Google попробовали подвергнуть этот компонент фаззингу. Так называется метод автоматизированного поиска уязвимостей, при котором тестируемой программе скармливают неверные, неожиданные или случайные данные, а потом смотрят на её реакцию.

Идея оказалась продуктивной. 21 мая в течение одного дня Google выявил одиннадцать уязвимостей в растеризаторе шрифтов Windows. 18 августа тесты указали пару новых уязвимостй, а 22 декабря их список пополнился ещё тремя пунктами.

Десять из шестнадцати уязвимостей объяснялись ошибками, которые ведут к переполнению буфера. Одна уязвимость была связана с переполнением области, занимаемой стеком, а остальные оказались вызваны попытками растеризатора обратиться к неинициализированной или уже освобождённой памяти.

Подавляющее большинство уязвимостей, которые обнаружили специалисты Google, подходило для расширения прав, с которыми исполняется вредоносный код. В некоторых случаях они допускали даже удалённое исполнение кода. Правда, не везде, а лишь в приложениях, которые позволяют графической подсистеме Windows (GDI) работать с непроверенными файлами пользователя.

Пара уязвимостей, которые фаззинг выявил в самом начале тестирования, срабатывала от самых мизерных изменений в файлах с шрифтами. Позже в Google узнали, что их уже отыскали другие хакеры. Одну из уязвимостей обнаружили во время соревнования pwn2own в марте 2015 года, то есть за два месяца до Google. Другая упоминалась в архивах Hacking Team, похищенных в июле 2015 года.

Обо всех найденных дырах компания сообщала в Microsoft, и та не очень быстро, но всё же реагировала на жалобы. Первой была побеждена уязвимость, известная Hacking Team. Это произошло в прошлом июле. А последний пункт из списка Google был закрыт относительно недавно — 12 апреля 2016 года.

Подпишитесь на новости

Однотонные обои заставляли Windows 7 тормозить при входе

Казалось бы, что может быть проще для компьютера, чем показать рабочий стол, залитый одним цветом? Но ранняя Windows 7 умудрялась превратить даже эту задачу в 30-секундную медитацию на экране «Добро пожаловать». Проблема возникала, если пользователь выбирал вместо картинки однотонные синие, зелёные, чёрные или другие обои.

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

Дело оказалось не в том, что Windows надрывалась, рисуя синий фон. Как объяснил инженер Microsoft Рэймонд Чен, при входе операционная система ждала от компонентов рабочего стола подтверждения готовности. Код, отвечавший за обои, отправлял такой сигнал только после загрузки изображения.

Если пользователь выбирал сплошной цвет, картинка не загружалась — а значит, нужная ветка кода вообще не запускалась. Сигнал WallpaperReady бесследно пропадал, и система ждала его до срабатывания 30-секундного тайм-аута. После этого Windows махала рукой и наконец показывала рабочий стол.

Похожий фокус возникал при одновременном включении групповых политик Normal Wallpaper и Hide all icons on Desktop. Инициализация значков отключалась, но сообщение о её завершении также не отправлялось. Снова ожидание, снова 30 секунд созерцания экрана приветствия.

Microsoft официально подтвердила баг для Windows 7 и Windows Server 2008 R2 и подготовила исправление в ноябре 2009 года. До установки патча пользователям предлагали гениальный по простоте костыль: создать крошечную картинку нужного цвета и поставить её на фон.

Визуально ничего не менялось, зато Windows видела изображение, получала долгожданный сигнал и переставала задумываться при каждом входе.

RSS: Новости на портале Anti-Malware.ru