Компания Microsoft на днях закрыла уязвимость движке антивируса Защитник Windows под названием MsMpEng. Как и прошлую чрезвычайно опасную уязвимость, эту обнаружил инженер проекта Zero компании Google Тавис Орманди. На этот раз он сообщил о ней сначала в Microsoft, так что его критика за публичное раскрытие предыдущей уязвимости не прошла даром.
Уязвимость позволяет выполняемым в эмуляторе MsMpEng приложениям взять над ним контроль и совершать разнообразные действия, включая дистанционное выполнение кода, когда Защитник Windows сканирует присланные в электронных письмах исполняемые файлы. MsMpEng включает в себя полноценный эмулятор x86, который используется для запуска любых подозрительных файлов, похожих на исполняемые файлы PE. Эмулятор работает в разделе NT AUTHORITY\SYSTEM и не в песочнице. Он поддерживает различные интерфейсы прикладного программирования в Win32, в том числе ntdll!NtControlChannel, который позволяет коду получить контроль над эмулятором.
Работа эмулятора заключается в эмуляции клиентского CPU. Однако Microsoft зачем-то дала эмулятору дополнительную инструкцию по вызову API. Неизвестно, для чего Microsoft создала специальные инструкции для эмулятора.
Команда 0x0C позволяет выполнять парсинг произвольных управляемых атакующим регулярных выражений в библиотеке Microsoft GRETA, поддержка которой была прекращена ещё в начале 2000-х годов. Команда 0x12 разрешает дополнительный микрокод. Различные команды позволяют менять параметры выполнения, устанавливать и читать атрибуты и метаданные UFS. Это по меньшей мере напоминает утечку конфиденциальности, поскольку хакеры могут запрашивать атрибуты, которые установил пользователь. Потенциально это крайне опасная уязвимость, однако задействовать её не так просто, как предыдущую уязвимость нулевого дня Microsoft, которая была закрыта две недели назад.
Сторонние эксперты критикуют Microsoft за решение использовать антивирусный движок не в песочнице. Это означает, что возможность использовать его уязвимости распространяется на всю операционную систему.
Проблема была обнаружена 12 мая, патч был выпущен на прошлой неделе. Антивирусный движок регулярно получает автоматические обновления, поэтому у большинства пользователей эта уязвимость уже должна быть закрыта.
Microsoft находится под растущим давлением относительно безопасности своего программного обеспечения. Компания ищет более тесное сотрудничество с различными правительствами и предлагает создать Цифровую Женевскую Конвенцию для обеспечения безопасности пользователей.