Наступивший 2010 год принес новости от компании Microsoft планомерно внедряющую технологию предотвращения выполнения данных (Data Execution Prevention или DEP) в рамках изменений в системе обеспечения безопасности программного пакета Microsoft Office 2010 для Microsoft Windows.
В частности опубликована статья менеджера проекта по обеспечению безопасности команды Office Trustworthy Computer (TWC) Викаса Малхорта (Vikas Malhotra) где он подробно расказывает о внедрении технологии DEP в новом пакете Microsoft Offiсe 2010.
Прежде чем перейти к описанию нововедений в системе безопасности Microsoft Office 2010 стоит вспомнить, а для тех кто не знает - узнать, что же это за технология Data Execution Prevention или сокращенно DEP ?
При запуске программы система выделяет определенные страницы памяти для работы этой программы. Каждой странице присваивается так называемый маркер, который явно указывает на свойство страницы - может ли код программы размещенный на этой странице быть выполнен или нет. При наличии маркера разрешающего выполнение кода, в пределах адресного пространства этой страницы код будет разрешен для исполнения. Соответствие наличие "запрещающего" маркера страницы памяти код для запуска запрещен. Технология DEP как раз и служит для определения маркера страницы и в случае попытки исполнения кода внутри страницы с маркером запрещающим это, блокирует запущенный процесс выдавая исключение.
Различаю две реализации DEP - аппаратную и программную. В случае аппаратной реализации функция DEP взаимодействует с процессором, чтобы отметить определенные области памяти маркером, показывающим, что из этих областей не может запускаться код. DEP отмечает какую-либо страницу памяти, изменяя один бит элемента таблицы страниц (PTE). На сегодняшний момент только компании AMD и Intel выпускают процессоры с архитектурой поддерживающей функцию DEP.
Программно технология DEP была реализована в ОС Windows XP SP2 и в Windows 2003 Server SP1 Эта технология разработана для предотвращения работы вредоносных программ, использующих некоторые особенности механизма обработки исключений в Windows. При программной реализации функция DEP может работать на компьютере с любым процессором, поддерживающим Windows XP с пакетом обновления SP2. Программно реализованная DEP не зависит от поддержки процессором аппаратной реализации и по умолчанию защищала только отдельные системные файлы.
Теперь очередь дошла до Microsoft Office. В версии пакета Microsoft Office 2010 технология DEP взаимодействуя с программами Office предотвращает многие виды атак и выполнения вредоносных программ. Многие вредоносные программы проникающие на компьютер используют возможность прописать свой исполняемый код в область памяти в которм разрешена запись и исполнение, для дальнейшего запуска. Теперь пользователь работая в Microsoft Office 2010, естественно при запущенной DEP,может быть спокоен, выполнение потенциально вредоносной программы будет остановлено, а Office аварийно завершит работу приложений, в целях безопасности.
Проконтролировать использует программа технологию DEP очень просто. Необходимо всем знакомый открыть диспетчер задач и убедившись в наличие колонки DEP посмотреть значение для интересующего процесса. Соответственно для процесса взаимодействующего с технологией DEP значение будет "Enabled".
Теперь разберем поподробней каким образом приложения Office работают с DEP. После загрузки приложения вызывается функция API - GetSystemDEPPolicy определяющая политики DEP вашего компьютера. Результат возвращенный этой функцией и определит поведение запущенного приложения.
* AlwaysOn - "Всегда включено", приложения Office всегда будут запускаться с разрешенным DEP. Изменить это без модификации конфигурационного файла загрузки системы и перезапуска вашего компьютера нет никакого способа.
* AlwaysOff - "Всегда выключено", приложения Office всегда будут запускаться без поддержки DEP. Изменить это без модификации конфигурационного файла загрузки системы и перезапуска вашего компьютера нет никакого способа.
* OptIn - разрешена конфигурация приложения Office в Trust Center, может ли оно быть запущено с разрешенным DEP.
* OptOut - разрешена конфигурация приложения Office в Trust Center, может ли оно быть запущено без поддержки DEP.
Если пользователем назначается поддержка DEP определенного приложение Office, тогда это приложение вызывает
SetProcessDEPPolicy для того чтоб в течении продолжительности жизни процесса обеспечивалась постоянная работа DEP.
При 64-битной установки DEP для приложений Office будет всегда доступен. Для 32-битной установки существует возможность конфигурации DEP на уровне приложений в рамках Trust Center. Те приложения которые поддерживают режим защищенного просмотра имеют опцию настройки DEP во вкладке Protected View, для других настройки находятся на вкладке DEP. В случае отсутствии опции DEP в Trust Center необходимо проверить установки политик AlwaysOn или AlwaysOff.

Чаще всего DEP не оказывает никакого влияния на код написанный пользователем, конечно же если код не требует записи в области памяти без маркера на исполнение, а потом не пытается его исполнить ( так в частности происходит при использовании компиляторов JIT). В этом случае рекомендуется переписать код. В случае невозможности или отсутствии доступа к исходникам можно отключить временно DEP и используя функцию VirtualProtect записать код в память страницы, отмеченную атрибутами Write и Execute. После записи атрибут Write может быть изменен и появится возможность запуска кода позднее, при этом DEP исключение выдавать не будет. Изменения атрибута Write, гарантирует, что вредоносные программы не смогут заразить область памяти.
Отказ DEP, так называемое исключение, чаще всего происходит для установленных вновь дополнений, не затрагивая самого приложения Office. Приложение лишь завершает работу в режиме аварийного отказа. После перезапуска пользователю выдается диалоговое окно с возможностью выбора - либо заблокировать дополнение, либо попытаться его перезагрузить. Специалисты компании Microsoft рекомендуют блокировать дополнение и пытаться найти причину в его коде, либо подождать выхода версии дополнения не конфликтующего с DEP.
Итак, пользователи нового пакета Office 2010 получили еще одну возможность сохранения данных и защиты своего компьютера путем технологии Data Execution Prevention (DEP). Осталось лишь упомянуть, что данная технология не единственная новинка в системе обеспечения безопасности программного пакета Microsoft Office 2010 для Microsoft Windows, об остальных специалисты компании обещали рассказать позднее.