Участники Google Project Zero предали гласности уязвимость в графическом интерфейсе Windows, открывающую возможность для кражи конфиденциальных данных из памяти программы. Microsoft закрыла эту брешь в июне, однако патч, по свидетельству Google, оказался неполным.

Июньский бюллетень, посвященный уязвимостям в GDI Windows (MS16-074), Microsoft оценила как «важный», а саму брешь классифицировала как повышение привилегий. «Как часть MS16-074, некоторые из этих багов действительно были устранены, например запись EMR_STRETCHBLT, на которую полагалось изначальное PoC-изображение, — пишет в новом отчете инженер Google Матеуш Юрчик (Mateusz Jurczyk). — Тем не менее мы обнаружили, что не все связанные с DIB проблемы исчезли».

По словам Юрчика, неисправленная ошибка связана с работой библиотеки gdi32.dll. Описанная им PoC-атака использует множественные баги, проявляющиеся при обработке DIB (Device Independent Bitmap, аппаратно-независимых растров) в метафайлах EMF (Enhanced Metafile Format). Наличие багов создает условия, благоприятные для «получения из динамически распределяемой памяти 255 пикселей на основании мусорных данных, которые могут включать конфиденциальную информацию, такую как закрытые данные пользователя или информация о виртуальном адресном пространстве».

«В Internet Explorer и других GDI-клиентах существует возможность раскрытия байтов неинициализированной области памяти или области за пределами допустимого диапазона через цвета пикселей, что позволяет автору атаки извлечь данные воспроизводимого изображения, — поясняет Юрчик. — Я убедился, что уязвимость можно воспроизвести как локально, в Internet Explorer, так и удаленно в Office Online, с помощью документа .docx, содержащего специально созданный EMF-файл».

Баг-хантеры из Google Project Zero сообщили в Microsoft о наличии бреши 16 ноября. В соответствии с политикой проекта детали уязвимости публикуются через 90 дней после отправки отчета разработчику, независимо от того, вышел патч или нет.

Согласно описанию, внесенному в базу данных MITRE, уязвимость CVE-2017-0038 является результатом «неполного устранения CVE-2016-3216, CVE-2016-3219 и/или CVE-2016-3220». Данная уязвимость затрагивает Windows Vista SP2, Windows Server 2008 SP2 и R2 SP1, Windows 7 SP1, Windows 8.1, Windows Server 2012 Gold и R2, Windows RT 8.1, Windows 10 Gold, 1511 и 1607, а также Windows Server 2016.

«Настоятельно рекомендуется провести тщательный аудит всех обработчиков EMF, ответственных за работу с DIB, чтобы убедиться, что каждый из них обеспечивает корректное соблюдение всех четырех условий, необходимых для предотвращения недопустимого доступа к памяти (и, как следствие, раскрытия данных), при обработке растров», — отметил в заключение Юрчик.

Microsoft на запросы Threatpost о комментарии не ответила. Очередной выпуск плановых обновлений разработчик перенес на март; возможно, тогда и появится патч для CVE-2017-0038, а также будет наконец закрыта уязвимость нулевого дня в SMB, которую участники Google Project Zero предали гласности в начале февраля.

Категории: Аналитика, Главное, Уязвимости