В этом году специалисты компании Microsoft уже неоднократно выпускали внеплановые патчи для Malware Protection Engine (MsMpEng). Напомню, что это защитное решение лежит «в сердце» таких продуктов, как Windows Defender, Microsoft Security Essentials, Microsoft Endpoint Protection, Microsoft System Center Endpoint Protection, Windows Intune Endpoint Protection, Microsoft Forefront Security for SharePoint Service Pack 3, Microsoft Forefront Endpoint Protection 2010.
Сначала баги в MsMpEng дважды выявляли специалисты Google Project Zero, и среди проблем были как RCE-уязвимости, так и проблемы, позволяющие спровоцировать отказ в обслуживании (denial of service, DoS). Позже, в начале июня 2017 года, к делу также подключился независимый исследователь Джеймс Ли (James Lee). На конференции Zer0con он рассказал о новых RCE-уязвимостях в составе MsMpEng.
Одновременно с информацией, поступившей от Ли, специалист Google Project Zero Тевис Орманди (Tavis Ormandy) анонсировал скорое раскрытие информации о еще нескольких проблемах MsMpEng. Теперь, почти три недели спустя, разработчики Microsoft подготовили патч, и Орманди наконец рассказал о своих новых находках.
I wrote a fuzzer for the unsandboxed x86 emulator in Windows Defender and found arbitrary read/write. https://t.co/t29mYNwiAL
— Tavis Ormandy (@taviso) June 23, 2017
Исследователь открыл доступ к своему отчету, озаглавленному «Повреждение хипа в эмуляторе mpengine x86 в VFS API» и объяснил, что создал фаззер для работающего вне песочницы x86 эмулятора, используемого Windows Defender.
Орманди отмечает, что фаззинг KERNEL32.DLL!VFS_Write API до этого, похоже, никогда не проводился. Ранее специалист уже заметил, что ряд API эмулятора доступны удаленно и активны по умолчанию. Причем инженеры Microsoft сообщили Орманди, что им известно об этом, и это сделано намерено. Когда Орманди изучил проблему внимательнее и подключил к делу фаззинг, стало очевидно, он имеет дело с новыми критическими уязвимостями.
В своем бюллетене безопасности Microsoft классифицировала проблему как RCE (remote code execution) и объяснила, что Malware Protection Engine некорректно сканирует специально созданные файлы, что приводит к нарушению целостности информации в памяти. В итоге удаленный атакующий может выполнить произвольный код в контексте безопасности аккаунта LocalSystem и полностью перехватить контроль над системой.
Орманди приложил к своему отчету proof-of-concept эксплоит, который вынужден был зашифровать. Эксперт предупреждает, что его тестовый вредоносный файл немедленно провоцирует «падение» сервиса MsMpEng в Windows и даже может вызывать крах exchange-сервера.