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.

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 исключения.

Способность запрещать выполнение кода поддерживается только в режимах 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 = 1 означает, что execute-disable поддерживается. Если execute-disable поддерживается, программа может включить ее поддержку установкой IA32_EFER.NXE в 1-цу.
IA32_EFER доступен, если CPUID.80000001H.EDX = 1. Если execute-disable не поддерживается, запись на установку IA32_EFER.NXE вызывает #GP исключение. См. таблицу 5-4.

Защита страниц с помощью 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 бит

  • IA32_EFER.NXE = 1.
  • The instruction translation look-aside buffer (ITLB) is loaded with a page that is
    not already present in the ITLB.

Продолжая тему рассмотрения и изучения настроек BIOS сегодня мы детально расскажем о такой опции, как No execute memory protect. Вы узнаете за что она отвечает, какие аналоги у нее есть и когда нужно ее включать или отключать.

За что отвечает No execute memory protect?

Для начала вам стоит знать, что No execute memory protect это тоже самое что:

  • Execute Disable Bit;
  • Execute Disable Function;
  • Intel XD Bit;
  • NX BIOS Control;
  • NX Technology;
  • XD Technology.

Переведем название опции на русский язык. Он звучит так — «защита не выполнения памяти». Что это значит?

Память компьютера представлена двумя разделами. Первый из них нужен для хранения данных, а второй — для выполнения команд.

Суть No execute memory protect заключается в том, что она запрещает процессору использовать информацию из раздела данных для исполнения команд.

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

Таким образом выставляя No execute memory protect или ее аналог в положение «Enabled» вы активируете своеобразную защиту от вирусов. Конечно она не является универсальной, а лишь защищает от некоторых видов вирусов.

No execute memory protect включена в биосе

Также стоит знать, что некоторые нормальные программы и игры могут выполняться из раздела с данными. И активировав функцию No execute memory protect вы попросту не сможете их запустить.

Стоит ли включать No execute memory protect?

Если ваш компьютер оснащен антивирусом и вы периодически проводите его полную проверку, то активировать No execute memory protect не стоит. В этом случае вы избавите себя от возможных проблем с запуском некоторых программ и игр.


Лучший способ отблагодарить автора статьи- сделать репост к себе на страничку

Аппаратная технология обеспечения безопасности Execute Disable Bit (EDB) обеспечивает выделение для каждого запущенного процесса своей области системной памяти, в которой выполняется весь код запущенного приложения.

Блокируя, тем самым, исполнение вредоносного кода вируса или трояна.

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

Драйвер AMD Radeon Software Adrenalin Edition 19.9.2 Optional

Новая версия драйвера AMD Radeon Software Adrenalin Edition 19.9.2 Optional повышает производительность в игре «Borderlands 3» и добавляет поддержку технологии коррекции изображения Radeon Image Sharpening.

Накопительное обновление Windows 10 1903 KB4515384 (добавлено)

10 сентября 2019 г. Microsoft выпустила накопительное обновление для Windows 10 версии 1903 - KB4515384 с рядом улучшений безопасности и исправлением ошибки, которая нарушила работу Windows Search и вызвала высокую загрузку ЦП.

Драйвер Game Ready GeForce 436.30 WHQL

Компания NVIDIA выпустила пакет драйверов Game Ready GeForce 436.30 WHQL, который предназначен для оптимизации в играх: «Gears 5», «Borderlands 3» и «Call of Duty: Modern Warfare», «FIFA 20», «The Surge 2» и «Code Vein», исправляет ряд ошибок, замеченных в предыдущих релизах, и расширяет перечень дисплеев категории G-Sync Compatible.

Драйвер AMD Radeon Software Adrenalin 19.9.1 Edition

Первый сентябрьский выпуск графических драйверов AMD Radeon Software Adrenalin 19.9.1 Edition оптимизирован для игры Gears 5.

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 предусмотрен механизм белого списка приложений, этот метод не всегда корректно работает.

Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png