Что такое no execute memory protect в BIOS? Защита страничного уровня и бит запрета выполнения Что такое execute disable bit.

Другие идентичные названия опции: No-Execute Memory Protect, Execute Disable Function.

В BIOS существует несколько опций, предназначенных для обеспечения безопасности компьютера. Одной из таких опций является функция Execute Disable Bit (бит запрета исполнения кода). Ее назначение – включение режима работы , обеспечивающего пользователю защиту от некоторых распространенных уязвимостей программного кода и угроз информационной безопасности. Опция имеет два значения – Enabled (Включено) и Disabled (Выключено).

Опция тесно связана с таким понятием, как DEP (Data Execution Prevention, предотвращение выполнения данных). Суть данной технологии заключается в следующем В памяти компьютера существует два отдельных раздела, один из которых предназначен для данных, а другой – для исполняемых команд. При этом в процессоре присутствует особый бит состояния (бит NX, No Execution Bit), установка которого позволит процессору не использовать информацию из раздела данных в качестве исполняемых команд. Именно для установки этого бита и служит опция Execute Disable Bit.

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

Большинство современных операционных систем поддерживают технологию DEP. К числу этих ОС относятся Windows XP, Vista, Windows 7 и 8. Кроме того, технологию поддерживают современные ОС семейства UNIX и Linux. В семействе операционных систем Windows поддержку DEP можно отрегулировать в разделе «Система» Панели Управления.

На уровне процессоров технология DEP впервые получила поддержку в процессорах AMD Athlon, а затем была внедрена в процессорах Intel – начиная с линейки Pentium 4 и Celeron. Именно AMD ввела в обиход термин «NX-бит», а в процессорах Intel данный бит носит названия XD-бита.

Стоит ли включать опцию?

В большинстве случаев опцию Execute Disable Bit необходимо включить, чтобы обезопасить компьютер от хакерских атак, троянских программ, вирусов и «червей», использующих метод переполнения буфера. Разумеется, включение бита запрета исполнения кода процессора не является панацеей, защищающей пользователя от всех возможных информационных угроз, но оно может стать серьезным подспорьем для других средств защиты компьютера, прежде всего программных.

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

Тем не менее, встречается программное обеспечение, которое не совместимо с технологией DEP и при этом не относится к категории вредоносных программ. Для того, чтобы позволить функционировать подобному ПО, в BIOS и предусмотрена возможность отключения опции. Таким образом, опцию следует установить в значение Disabled только в том случае, если вы используете подобное ПО.

Основные сведения

Данная технология может работать только при соблюдении следующих условий:

  • Процессор , поддерживающий данную технологию на аппаратном уровне (начиная с Intel Pentium 4 серии 6xx и всех модификаций AMD Athlon 64).
  • Операционная система с поддержкой данной технологии (например Windows XP Service Pack 2 или выше).
  • Используется PAE или архитектура x86-64 (в этих режимах доступен бит запрета исполнения в таблице страниц).

Данная технология иногда вызывает программные конфликты с некоторыми видами ПО , поэтому в BIOS материнских плат, предусматривающих установку процессоров с поддержкой EDB, есть возможность отключения данной технологии.

Описание

NX (XD ) - атрибут страницы памяти в архитектурах x86 и x86-64 , который может применяться для более надежной защиты системы от программных ошибок, а также использующих их вирусов , троянских коней и прочих вредоносных программ. NX (N o eX ecute) - терминология AMD . Intel называет этот атрибут XD-бит (eX ecution D isable).

Поскольку в современных компьютерных системах память разделяется на страницы, имеющие определенные атрибуты, разработчики процессоров добавили еще один: запрет исполнения кода на странице. То есть, такая страница может быть использована для хранения данных, но не программного кода. При попытке передать управление на такую страницу процессор сформирует особый случай ошибки страницы и программа (чаще всего) будет завершена аварийно. Атрибут защиты от исполнения давно присутствовал в других микропроцессорных архитектурах, однако в x86-системах такая защита реализовывалась только на уровне программных сегментов, механизм которых давно не используется современными ОС. Теперь она добавлена еще и на уровне отдельных страниц.

Современные программы четко разделяют на сегменты кода («text»), данных («data»), неинициализированных данных («bss»), а также динамически распределяемую область памяти, которая подразделяется на кучу («heap») и программный стек («stack»). Если программа написана без ошибок, указатель команд никогда не выйдет за пределы сегментов кода, однако, в результате программных ошибок, управление может быть передано в другие области памяти. При этом процессор перестанет выполнять какие-то запрограммированные действия, а будет выполнять случайную последовательность команд, за которые он будет принимать хранящиеся в этих областях данные, до тех пор, пока не встретит недопустимую последовательность, или попытается выполнить операцию, нарушающую целостность системы, которая вызовет срабатывание системы защиты. В обоих случаях программа завершится аварийно. Также процессор может встретить последовательность, интерпретируемую как команды перехода к уже пройденному адресу. В таком случае процессор войдет в бесконечный цикл, и программа «зависнет», забрав 100 % процессорного времени. Для предотвращения подобных случаев и был введен этот дополнительный атрибут: если некоторая область памяти не предназначена для хранения программного кода, то все ее страницы должны помечаться NX-битом, и в случае попытки передать туда управление процессор сформирует особый случай и ОС тут же аварийно завершит программу, сигнализировав выход за пределы сегмента (SIGSEGV).

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

Один из сценариев атак состоит в том, что воспользовавшись переполнением буфера в программе (зачастую это демон , предоставляющий некоторый сетевой сервис), специально написанная вредоносная программа (эксплоит) может записать некоторый код в область данных уязвимой программы таким образом, что в результате ошибки этот код получит управление и выполнит действия, запрограммированные злоумышленником (зачастую это запрос выполнить программу-оболочку ОС , с помощью которой злоумышленник получит контроль над уязвимой системой с правами владельца уязвимой программы, очень часто это root).

Технические детали

Переполнение буфера часто возникает, когда разработчик программы выделяет некоторую область данных (буфер) фиксированной длины, считая, что этого будет достаточно, но потом, манипулируя данными никак не проверяет выход за ее границы. В результате поступающие данные займут области памяти им не предназначенные, уничтожив имеющуюся там информацию. Очень часто временные буферы выделяются внутри процедур (подпрограмм), память для которых выделяется в программном стеке, в котором также хранятся адреса возвратов в вызывающую подпрограмму. Тщательно изучив код программы, злоумышленник может обнаружить такую ошибку, и теперь ему достаточно передать в программу такую последовательность данных, обработав которую программа ошибочно заменит адрес возврата в стеке на адрес, требуемый злоумышленнику, который также передал под видом данных некоторый программный код. После завершения подпрограммы инструкция возврата (RET) вытолкнет из стека в указатель команд адрес входа в процедуру злоумышленника. Контроль над компьютером получен.

Благодаря атрибуту NX такое становится невозможным. Область стека помечается NX-битом и любое выполнение кода в нём запрещено. Теперь же, если передать управление стеку, то сработает защита. Хоть программу и можно заставить аварийно завершиться, но использовать её для выполнения произвольного кода становится очень сложно (для этого потребуется ошибочное снятие программой NX-защиты).

Однако, некоторые программы используют выполнение кода в стеке или куче. Такое решение может быть связано с оптимизацией , динамической компиляцией или просто оригинальным техническим решением. Обычно, операционные системы предоставляют системные вызовы для запроса памяти с разрешенной функцией исполнения как раз для таких целей, однако многие старые программы всегда считают всю память исполнимой. Для запуска таких программ под Windows приходится отключать функцию NX на весь сеанс работы, и чтобы включить ее вновь, требуется перезагрузка. Примером такой программы может служить Iris .

NX-бит является самым старшим разрядом элемента 64-битных таблиц страниц , используемых процессором для распределения памяти в адресном пространстве. 64-разрядные таблицы страниц используются операционными системами, работающими в 64-битном режиме, либо с включенным расширением физических адресов (PAE). Если ОС использует 32-разрядные таблицы, то возможности использовать защиту страниц от исполнения нет.

Ссылки


Wikimedia Foundation . 2010 .

Смотреть что такое "NX-бит" в других словарях:

    - (англ. The Beat Generation, иногда переводится как «Разбитое поколение») название группы американских авторов, работавших над прозой и поэзией. Бит поколение оказывало влияние на культурное сознание своих современников с середины … Википедия

    БИТ - «Беспроводные информационные технологии» ООО Москва, организация, техн. Источник: http://www.vedomosti.ru/newspaper/article.shtml?2004/10/29/82849 БИТ безопасные информационые технологии кафедра СПбГИТМО образование и наука, Санкт Петербург, техн … Словарь сокращений и аббревиатур

    А; мн. род. бит и ов; м. [от англ. сокращения BInary digiT двоичный знак] Минимальная единица измерения количества информации и объёма памяти компьютера (равна одной ячейке или одному двоичному знаку типа да нет). * * * бит (англ. bit, от… … Энциклопедический словарь

    Бит в секунду, бит/с (англ. bits per second, bps) базовая единица измерения скорости передачи информации, используемая на физическом уровне сетевой модели OSI или TCP/IP. На более высоких уровнях сетевых моделей, как правило, используется более… … Википедия

    Бит в секунду, бит/с (англ. bits per second, bps) базовая единица измерения скорости передачи информации, используемая на физическом уровне сетевой модели OSI или TCP/IP. На более высоких уровнях сетевых моделей, как правило,… … Википедия

    - (исп.). То же, что реал, монета ценностью в 16 1/2 коп. Словарь иностранных слов, вошедших в состав русского языка. Чудинов А.Н., 1910. БИТ 1 [англ. beat бить] муз. выдержанная в равномерном темпе танцевальная и легкая музыка в размере 4/4 с… … Словарь иностранных слов русского языка

    бит контроля на четность - бит четности контрольный бит Контрольный бит, добавляемый к данным для контроля их верности таким образом, чтобы сумма двоичных единиц, составляющих данное, включая и единицу контрольного бита, всегда была четной (либо всегда нечетной). [Домарев… … Справочник технического переводчика

    Бит (англ. beat удар) англоязычный перевод значения слова доля (музыкальная). Многим пользователям музыкальных компьютерных программ это слово встречается в обозначении скорости воспроизведения BPM (англ. beat per minute, bpm ударов в минуту),… … Википедия

NX-Bit (No eXecute Bit - в AMD), или XD-Bit (Execute Disable Bit - в Intel) — антивирус, способный предотвратить «заражение» ПК некоторыми типами вредоносного ПО. Борется с искусственно-вызванной ошибкой переполнения буфера. С данным антивирусом имеет тесную связь технология Microsoft DEP .

Технология может работать только если:

  • Имеется поддержка процессора на аппаратном уровне (от Intel Pentium 4 серии 6xx и выше, а также все модификации AMD Athlon 64);
  • Установлена ОС с поддержкой данной технологии (Linux с ядром, начиная от версии 2.3.23; Windows XP Service Pack 2 и выше);
  • Применяется PAE или архитектура x86-64.

Иногда технология способна вызвать конфликт программного характера с некоторыми видами программного обеспечения. Так, в BIOS ’е материнских плат, поддерживающих процессоры с EDB, имеется возможность отключения этой технологии.

NX (XD ) — атрибут страницы памяти, употребляемый в архитектурах x86 и x86-64, предназначенный для укрепления защиты системы от программных ошибок, вирусов, троянских коней и других вредоносных программ.

  • NX (N o eX ecute) — терминология AMD;
  • XD (eX ecution D isable) — терминология Intel.

NX-bit - самый старший разряд элемента 64-битных таблиц страниц, которые применяются процессором для распределения памяти в адресном пространстве. 64-разрядные таблицы страниц используются только в ОС, работающих в 64-битном режиме, либо с включенным расширением физических адресов (PAE).

В настоящее время, компьютерные системы обладают памятью, разделенной на страницы с определенными атрибутами. Так, в новые серии продуктов разработчики процессоров добавили еще один атрибут - запрет исполнения кода на странице (страница может быть использована для хранения данных, но не для хранения программного кода) . В случае возникновения попытки передать управление на подобного рода страницу, процессор генерирует специальную ошибку страницы, и программа прекращает свою работу в аварийном порядке.

Атрибут защиты от исполнения внедряли и в другие микропроцессорные архитектуры, но только в x86-системах эта защита реализовывалась на уровне программных сегментов. Сегодня такая защита внедрена и на уровне отдельных страниц.

В современных ПО наблюдается четкое разделение на сегменты кода («text»), данных («data») и неинициализированных данных («bss»). Кроме того, имеется и динамически-распределяемый сегмент памяти, который, в свою очередь, делится на:

  • кучу («heap»);
  • программный стек («stack»).

Если при написании программы не было допущено никаких ошибок, указатель команд не выйдет за пределы сегментов кода. Но в случае программных ошибок, управление может быть передано в другие области памяти. Это повлечет за собой блокирование процессора перед операциями по запрограммированным действиям, и начало произвольного выполнения случайной последовательности команд. Так будет продолжаться до тех пор, пока процессор не идентифицирует недопустимую последовательность, тогда сработает внутренняя система защиты. Так или иначе, программа завершится аварийно. Кроме того, процессору может попасться последовательность, которая интерпретируется как команда перехода к пройденному адресу. В этом случае, процессор попадет в бесконечный цикл, а программа «зависнет». Чтобы предотвратить подобные случаи, специалисты ввели дополнительный атрибут, который определяет следующее условие: если какая-то область памяти не предназначена для хранения программного кода, то все ее страницы должны помечаться NX-битом, а в случае возникновения попытки передать управление, процессор сформирует команду, и операционная система мгновенно завершит программу. Ключевой причиной введения данного атрибута было не столько обеспечение быстрой реакции на такие ошибки, сколько распространенность подобных ошибок среди злоумышленников, которые использовали их для несанкционированного доступа к ПК. Написанные ими всевозможные вирусы и черви искали уязвимые места в распространенных ПО.

Тех. детали

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

Нередко временные буферы выделяются внутри подпрограмм, память для которых определена в программном стеке. В нем, помимо всего прочего, расположены адреса возвратов в вызывающую подпрограмму. Изучив код программы, злоумышленник может обнаружить подобную ошибку, и после передать в программу определенную последовательность данных, при обработке которой программа по ошибке заменит адрес возврата в стеке на адрес, требуемый злоумышленнику. По завершению подпрограммы, инструкция возврата (RET) вытолкнет из стека в указатель команд адрес входа в процедуру злоумышленника, и он получит контроль над компьютером. Атрибут NX делает такую манипуляцию невозможной. Область стека отмечается NX-битом, а любое выполнение кода - запрещается. Так, если передать управление стеку, то сработает защита.

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

Common Options: Enabled, Disabled

Execute Disable Bit Quick Review

Execute Disable Bit XD is short for Execute Disable NX , short for No Execute .

When enabled

When disabled

enable

Execute Disable Bit Execute Disable Bit

Execute Disable Bit

  • SUSE Linux 9.2, or later.

Incidentally, some applications and device drivers attempt to execute code from the kernel stack for improved performance. This will cause a page-fault error if Execute Disable Bit is enabled. In such cases, you will need to disable this BIOS feature.

Execute Disable Bit Details

Buffer overflow attacks are a major threat to networked computers. For example, a worm may infect a computer and flood the processor with code, bringing the system down to a halt. The worm will also propagate throughout the network, paralyzing each and every system it infects.

Due to the prevalence of such attacks, Intel enhanced their processor architecture with a feature called Execute Disable Bit , which is designed to protect the computer against certain buffer overflow attacks. First released for the 64-bit Intel Itanium processor in 2001, this feature only appeared in Intel desktop and workstation processors from November 2004 onwards. Intel mobile processors with Execute Disable Bit only started shipping in February, 2005.

Processors that come with this feature can restrict memory areas in which application code can be executed. When paired with an operating system that supports the Execute Disable Bit feature, the processor adds a new attribute bit (the Execute Disable Bit ) in the paging structures used for address translation.

If the Execute Disable Bit of a memory page is set to 1, that page can only be used to store data. It will not be used to store executable code. But if the Execute Disable Bit of a memory page is set to 0, that page can be used to store data or executable code.

The processor will henceforth check the Execute Disable Bit whenever it executes code. It will not execute code in a memory page with the Execute Disable Bit set to 1. Any attempt to execute code in such a protected memory page will result in a page-fault exception.

So, if a worm or virus inserts code into the buffer, the processor prevents the code from being executed and the attack fails. This also prevents the worm or virus from propagating to other computers on the network.

This BIOS feature is a toggle for the processor’s Execute Disable Bit option. In fact, the acronym XD is short for Execute Disable and is specific to Intel’s implementation. AMD’s implementation is called NX , short for No Execute .

When enabled , the processor prevents the execution of code in data-only memory pages. This provides some protection against buffer overflow attacks.

When disabled , the processor will not restrict code execution in any memory area. This makes the processor more vulnerable to buffer overflow attacks.

It is highly recommended that you enable this BIOS feature for increased protection against buffer overflow attacks.

However, please note that the Execute Disable Bit feature is a hardware feature present only in newer Intel processors. If your processor does not support Execute Disable Bit , then this BIOS feature will have no effect.

In addition, you must use an operating system that supports the Execute Disable Bit feature. Currently, that includes the following operating systems:

  • Microsoft Windows Server 2003 with Service Pack 1, or later.
  • Microsoft Windows XP with Service Pack 2, or later.
  • Microsoft Windows XP Tablet PC Edition 2005, or later.
  • SUSE Linux 9.2, or later.
  • Red Hat Enterprise Linux 3 Update 3, or later.

Incidentally, some applications and device drivers attempt to execute code from the kernel stack for improved performance. This will cause a page-fault error if Execute Disable Bit is enabled. In such cases, you will need to disable this BIOS feature.

(англ.) ) для реализации возможности предотвращения выполнения данных как кода. Используется для предотвращения уязвимости типа «переполнение буфера », позволяющей выполнять произвольный код на атакуемой системе локально или удалённо. Технология требует программной поддержки (см. DEP) со стороны ядра операционной системы .

Основные сведения

Технология NX-bit может работать только при соблюдении следующих условий:

  • наличие поддержки NX-bit со стороны процессора . NX-bit поддерживают процессоры фирмы Intel , начиная с Pentium 4 серии 6xx, и процессоры фирмы AMD , начиная с Athlon 64 ;
  • наличие поддержки NX-bit со стороны операционной системы. NX-bit поддерживают ОС Linux , начиная с ядра версии 2.3.23, и ОС Windows, начиная с Windows XP SP2 ;
  • использование PAE для процессоров архитектуры x86 или использование процессоров архитектуры x86-64 (бит запрета исполнения доступен в таблице страниц).

Технические детали

Переполнение буфера часто возникает, когда разработчик программы выделяет некоторую область данных (буфер) фиксированной длины, считая, что этого будет достаточно, но потом, манипулируя данными, никак не проверяет выход за её границы. В результате поступающие данные займут области памяти, им не предназначенные, уничтожив имеющуюся там информацию. Очень часто временные буферы выделяются внутри процедур (подпрограмм), память для которых выделяется в программном стеке, в котором также хранятся адреса возвратов в вызывающую подпрограмму. Тщательно исследовав код программы, злоумышленник может обнаружить такой баг , и теперь ему достаточно передать в программу такую последовательность данных, обработав которую программа ошибочно заменит адрес возврата в стеке на адрес, нужный злоумышленнику, который также передал под видом данных некоторый программный код. После завершения подпрограммы команда возврата (RET) из процедуры передаст управление не вызывающей процедуре, а процедуре злоумышленника, - контроль над компьютером получен.

Благодаря атрибуту NX такое становится невозможным. Область стека помечается NX-битом и любое выполнение кода в нём запрещено. Теперь же, если передать управление стеку, то сработает защита. Хоть программу и можно заставить аварийно завершиться, но использовать её для выполнения произвольного кода становится очень сложно (для этого потребуется ошибочное снятие программой NX-защиты).

Однако, некоторые программы используют выполнение кода в стеке или куче. Такое решение может быть связано с оптимизацией , динамической компиляцией или просто оригинальным техническим решением. Обычно, операционные системы предоставляют системные вызовы для запроса памяти с разрешённой функцией исполнения как раз для таких целей, однако многие старые программы всегда считают всю память исполнимой. Для запуска таких программ под Windows приходится отключать функцию NX на весь сеанс работы, и чтобы включить её вновь, требуется перезагрузка. Хотя в Windows и предусмотрен механизм белого списка программ, для которых отключён DEP, тем не менее данный метод не всегда работает корректно [ ] . Примером такой программы может служить Iris .

NX-бит является самым старшим разрядом элемента 64-битных таблиц страниц , используемых процессором для распределения памяти в адресном пространстве. 64-разрядные таблицы страниц используются операционными системами, работающими в 64-битном режиме, либо с включённым расширением физических адресов (PAE). Если ОС использует 32-разрядные таблицы, то возможности использовать защиту страниц от исполнения нет.

См. также

Ссылки

  • intel.com. Execute disable bit functionality blocks malware «Code execution» (недоступная ссылка) .