Как работает флаг NX? - PullRequest
7 голосов
/ 30 января 2010

Не могли бы вы объяснить, что такое флаг NX и как он работает (пожалуйста, технический)?

Ответы [ 3 ]

4 голосов
/ 30 января 2010

Он отмечает страницу памяти как неисполняемую в системе виртуальной памяти и в TLB (структура, используемая ЦП для разрешения сопоставлений виртуальной памяти). Если какой-либо программный код будет выполняться с такой страницы, ЦП сбоит и передаст управление операционной системе для обработки ошибок.

Программы обычно имеют свой двоичный код и статические данные в разделе «только для чтения», и если они когда-либо попытаются записать туда, произойдет сбой ЦП, а затем операционная система обычно убивает приложение (это известно как ошибка сегментации или нарушение доступа).

По соображениям безопасности память данных для чтения / записи программы обычно по умолчанию защищена NX. Это препятствует тому, чтобы злоумышленник предоставил некоторому приложению свой вредоносный код в качестве данных, заставил приложение записать его в свою область данных и затем каким-то образом выполнил этот код, обычно из-за уязвимости переполнения буфера / переполнения в приложении, перезаписывая адрес возврата функции в стеке с расположением вредоносного кода в области данных.

Некоторым законным приложениям (особенно высокопроизводительным эмуляторам и JIT-компиляторам) также необходимо выполнять свои данные, поскольку они компилируют код во время выполнения, но они специально выделяют память без установленного для этого флага NX.

2 голосов
/ 30 января 2010

С Википедия

Бит NX, который обозначает Нет eXecute, это технология, используемая в процессорах выделить области памяти для использования любым хранилищем процессора инструкции (или код) или для хранения данных, функция обычно только найдена в архитектуре гарвардских процессоров. Тем не менее, бит NX в настоящее время все чаще используется в обычных фон Процессоры архитектуры Neumann, для соображения безопасности.

Операционная система с поддержкой бит NX может отмечать определенные области память как неисполняемая. Затем процессор откажется выполнить любой код, расположенный в этих областях объем памяти. Общая методика, известная в качестве исполняемого пространства защиты, есть используется для предотвращения определенных типов вредоносное программное обеспечение от захвата компьютеры, вставив их код в область хранения данных другой программы и запустить свой собственный код изнутри эта секция; это известно как атака переполнения буфера.

0 голосов
/ 30 января 2010

Посмотрите на этот ' DEP ', найденный в википедии, который использует бит NX.Что касается предоставления технического ответа, извините, я не знаю достаточно об этом, но процитирую:

Предотвращение выполнения данных (DEP) - это функция безопасности, включенная в современные операционные системы Microsoft Windows, которая предназначена длязапретить приложению или службе выполнять код из неисполняемой области памяти.....

DEP был представлен в Windows XP с пакетом обновления 2 (SP2) и включен в Windows XP Tablet PC Edition 2005, Windows Server 2003 с пакетом обновления 1 (SP1) и более поздние версии, Windows Vista и Windows Server 2008, а также все более новыеверсии Windows....

Аппаратно-принудительный DEP позволяет использовать бит NX на совместимых процессорах благодаря автоматическому использованию ядра PAE в 32-битной Windows и встроенной поддержке 64-битных ядер.Функция Windows Vista DEP помечает определенные части памяти как предназначенные для хранения только данных, которые процессор с поддержкой битов NX или XD считает неисполнимыми.Это помогает предотвратить успешные атаки переполнения буфера.В Windows Vista состояние DEP для процесса, то есть включен или отключен DEP для определенного процесса, можно увидеть на вкладке «Процессы» в диспетчере задач Windows.

См. Также здесь из базы знаний MSDN о DEP.Здесь есть очень подробное объяснение о том, как это работает.

Надеюсь, это поможет, С уважением, Том.

...