Execute disable bit linux

Execute Disable Bit – The BIOS Optimization Guide

share

Execute Disable Bit

Common Options : Enabled, Disabled

Execute Disable Bit Quick Review

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.

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.

Читайте также:  Логи запуска приложений windows

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.

Go Back To > The BIOS Optimization Guide | Home

Support Tech ARP!

If you like our work, you can help support our work by visiting our sponsors, participating in the Tech ARP Forums, or even donating to our fund. Any help you can render is greatly appreciated!

Источник

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.

Читайте также:  Создание файлового сервера для windows

Использование технологии 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 только в том случае, если вы используете подобное ПО.

Источник

dev64

Programming

Защита страничного уровня и бит запрета выполнения

Галерея

5.13 PAGE-LEVEL PROTECTION AND EXECUTE-DISABLE BIT

В дополнение к защите, предоставленной флагами U/S (user/supervisor) и R/W (readable/writable), страничные структуры, используемые с PAE paging или IA-32e paging (см. главу 4), предоставляют бит запрета выполнения (executedisable). Этот бит даёт дополнительную защиту для страниц данных. Способность запрета выполнения страниц данных может защитить от вредоносного программного обеспечения пытающегося запустить код со страницы с данными. Такая возможность предоставлена в:

  • 32-битном защищенном режиме с включенным PAE
  • в режиме IA-32e (64 битном режиме)

Хотя execute-disable бит не требует никаких дополнительных процессорных инструкций, чтобы он работал, требуется чтобы операционные системы включали режим PAE и контролировали установку этого бита на страничном уровне. Если бит execute-disable для страницы установлен, такая страница может быть использована только для данных. Попытка выполнения кода со страницы в памяти с установленным execute-disable битом, приводит к генерации page-fault исключения.

Читайте также:  Сколько тестов памяти у windows

Способность запрещать выполнение кода поддерживается только в режимах PAE и IA-32e и не поддерживается в обычном 32-битном страничном режиме. Существующие механизмы защиты памяти (см. секцию 5.11, “Page-Level Protection”) продолжают работать независимо от установки бита execute-disable.

Детектирование и включение поддержки execute-disable бита
5.13.1 Detecting and Enabling the Execute-Disable Capability

Программно можно определить присутствие поддержики execute-disable бита используя CPUID инструкцию. CPUID.80000001H:EDX.NX [bit 20] = 1 означает, что execute-disable поддерживается. Если execute-disable поддерживается, программа может включить ее поддержку установкой IA32_EFER.NXE[bit 11] в 1-цу.
IA32_EFER доступен, если CPUID.80000001H.EDX[bit 20 or 29] = 1. Если execute-disable не поддерживается, запись на установку IA32_EFER.NXE вызывает #GP исключение. См. таблицу 5-4.


(Таблица из руководства Intel)

Защита страниц с помощью Execute-Disable
5.13.2 Execute-Disable Page Protection

Бит execute-disable в страничных структурах улучшает защиту страниц данных. Процессорные инструкции не могут быть загружены из памяти, если IA32_EFER.NXE =1 и бит execute-disable установлен у любой страничной структуры, использованной для отображения страницы. Таблица 5-5 перечисляет разрешенное использование страницы в зависимости от значения executedisable бита (бит 63) соответствующей записи на каждом уровне страничных структур. Запрет выполнения может быть активирован используя execute-disable бит на любом уровне страничных структур, независимо от значения соответствующего бита на других уровнях. Когда execute-disable не активирован, страница может быть использована и как страница данных и как кодовая.


(Таблица из руководства Intel)

Для 32-битного режима с включенным PAE эффект установки execute-disable бита для страниц кода и данных показан таблицами 5-6, 5-7.


(Таблицы из руководства Intel)

Проверка резервных битов
5.13.3 Reserved Bit Checking

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

Таблица 5-8 показывает резервные биты проверяемые когда бит execute-disable проверка включена в процессоре (CR4.PAE = 1 и IA32_EFER.NXE = 1). Таблицы 5-8 и 5-9 показывают проверки для следующих страничных режимов:

    Non-PAE 4-KByte paging: 4-KByte-page only paging (CR4.PAE = 0,
    CR4.PSE = 0).

  • PSE36: 4-KByte and 4-MByte pages (CR4.PAE = 0, CR4.PSE = 1).
  • PAE: 4-KByte and 2-MByte pages (CR4.PAE = 1, CR4.PSE = X).
  • Проверка резервных битов зависит от размеров физического адресного пространства поддерживаемого конкретной версией процессора, определяемой с помощью CPUID.80000008H. См. замечания в таблицах.


    (Таблица из руководства Intel)

    Если проверка execute disable не включена или не доступна, проверка в 64-битном режиме включает в том числе проверку 63 бита. Проверка этого и других зарезервированных битов для устаревших (legacy) 32-битных режимов показана в таблице 5-10.


    (Таблица из руководства Intel)

    Обработка исключений
    5.13.4 Exception Handling

    Когда execute disable бит включен (IA32_EFER.NXE = 1), условия для возникновения page fault включают те же условия которые применяются в 64 битном или 32-битном режиме с выключенной execute disable способностью. Плюс добавляется новое условие: загрузка инструкции по линейному адресу, который транслируется в физический адрес в памяти на странице с выставленным флагом execute-disable.

    Execute-disable page fault может возникнуть на любых уровнях привелегий. Он может возникать при загрузки любой инструкции включая (но не ограничиваясь): ближние ветвления, дальние переходы, CALL/RET/INT/IRET, sequential instruction featches и переключение задач. Execute-disable бит

    Источник

    Оцените статью