Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Intel продает эту функцию как бит XD (отключение выполнения). Advanced Micro Devices (AMD) использует маркетинговый термин NX bit . Архитектура ARM относится к функции, которая была представлена ​​в ARMv6 , как XN (никогда не выполнять). [1] Сам термин бит NX иногда используется для описания подобных технологий в других процессорах.

Поддержка архитектуры [ править ]

x86 [ править ]

Процессоры x86 , начиная с 80286 , включают аналогичную возможность, реализованную на уровне сегмента . Однако почти все операционные системы для процессоров 80386 и более поздних версий x86 реализуют модель плоской памяти , поэтому они не могут использовать эту возможность. В этих процессорах не было флага «Исполняемый файл» в записи таблицы страниц (дескриптор страницы) до тех пор, пока, чтобы сделать эту возможность доступной для операционных систем, использующих модель плоской памяти, AMD не добавила на страницу бит «без выполнения» или NX. запись в таблице в архитектуре AMD64 , предоставляя механизм, который может управлять выполнением для каждой страницы, а не для всего сегмента.

Intel реализовала аналогичную функцию в своем процессоре Itanium ( Merced ) с архитектурой IA-64 в 2001 году, но не привнесла ее в более популярные семейства процессоров x86 ( Pentium , Celeron , Xeon и т. Д.). В архитектуре x86 он был впервые реализован AMD как бит NX для использования в линейке процессоров AMD64 , таких как Athlon 64 и Opteron . [2]

После решения AMD включить эту функцию в свой набор инструкций AMD64, Intel реализовала аналогичную функцию битов XD в процессорах x86, начиная с процессоров Pentium 4 , основанных на более поздних итерациях ядра Prescott. [3] Бит NX конкретно относится к биту номер 63 (т. Е. Наиболее значимому биту) 64-битной записи в таблице страниц . Если этот бит установлен в 0, то код может быть выполнен с этой страницы; если установлено значение 1, код не может быть выполнен с этой страницы, и все, что там находится, считается данными. Он доступен только в длинном режиме (64-битный режим) или в устаревшем расширении физического адреса. (PAE) форматы таблиц страниц, но не исходный 32-битный формат таблицы страниц x86, поскольку в записях таблицы страниц в этом формате отсутствует 63-й бит, используемый для отключения и включения выполнения.

Windows XP SP2 и более поздние версии поддерживают предотвращение выполнения данных (DEP).

ARM [ править ]

В ARMv6 был введен новый формат записи таблицы страниц; он включает бит «никогда не выполнять». [1] Для дескрипторов блоков и страниц ARMv8-A , VMSAv8-64 и дескрипторов страниц и блоков с длинными дескрипторами VMSAv8-32 для этапов 1 трансляции имеют биты «никогда не выполнять» для привилегированного и непривилегированного режимов, а также дескрипторы блоков и страниц для трансляций этапа 2 есть один бит «никогда не выполнять» (два бита из-за возможности ARMv8.2-TTS2UXN); Дескрипторы таблицы преобразования коротких дескрипторов VMSAv8-32 на уровне 1 имеют биты «никогда не выполнять» как для привилегированного, так и для непривилегированного режима, а на уровне 2 имеют один бит «никогда не выполнять». [4]

Альфа [ править ]

Начиная с четвертого издания руководства по архитектуре Alpha, DEC (теперь HP) Alpha имеет бит ошибки при выполнении в записях таблицы страниц с OpenVMS , Tru64 UNIX и Alpha Linux PALcode . [5]

SPARC [ править ]

Справочный MMU SPARC для Sun SPARC версии 8 имеет значения разрешений «Только чтение», «Чтение / запись», «Чтение / выполнение» и «Чтение / запись / выполнение» в записях таблицы страниц [6], хотя не все процессоры SPARC имеют справочный MMU SPARC.

MMU SPARC версии 9 может предоставлять, но не обязательно, любую комбинацию разрешений на чтение / запись / выполнение. [7] Запись таблицы трансляции в буфере хранения трансляции в Oracle SPARC Architecture 2011, проект D1.0.0 имеет отдельные биты исполняемой и записываемой информации. [8]

PowerPC / Power ISA [ править ]

Записи таблицы страниц для таблиц хешированных страниц IBM PowerPC имеют бит страницы без выполнения. [9] Записи в таблицах страниц для таблиц страниц в Power ISA имеют отдельные биты разрешения, предоставляющие доступ для чтения / записи и выполнения. [10]

PA-RISC [ править ]

Записи резервного буфера трансляции (TLB) и записи таблицы страниц в PA-RISC 1.1 и PA-RISC 2.0 поддерживают страницы только для чтения, чтения / записи, чтения / выполнения и чтения / записи / выполнения. [11] [12]

Itanium [ править ]

Записи TLB в Itanium поддерживают страницы только для чтения, чтения / записи, чтения / выполнения и чтения / записи / выполнения. [13]

z / Архитектура [ править ]

На двенадцатом издании г / Архитектура Принципы работы, процессоры Z / Архитектура может поддерживать объект защиты Instruction-Execution, который добавляет немного в записи таблицы страниц, определяет , будут ли инструкции из данного региона, сегмента или страницы могут быть выполнен. [14]

См. Также [ править ]

  • Исполняемая защита пространства

Ссылки [ править ]

  1. ^ a b «Справочное руководство по архитектуре ARM» (PDF) . ARM Limited . С. B4-8, B4-27. Архивировано из оригинального (PDF) 06.02.2009. Биты APX и XN (никогда не выполнять) были добавлены в VMSAv6 [Архитектура системы виртуальной памяти]
  2. ^ Тед Симпсон; Джейсон Новак (24 мая 2017 г.). Руки по виртуальным вычислениям . Cengage Learning. С. 8–9. ISBN 978-1-337-10193-6.
  3. ^ «Предотвращение выполнения данных» (PDF) . Hewlett Packard. 2005 . Проверено 23 марта 2014 .
  4. ^ "Справочное руководство по архитектуре ARM, ARMv8, для профиля архитектуры ARMv8-A" . ARM Limited. стр. D4-1779, D4-1780, D4-1781, G4-4042, G4-4043, G4-4044, G4-4054, G4-4055.
  5. ^ Справочное руководство по архитектуре Alpha (PDF) (Четвертое издание). Compaq Computer . Январь 2002. С. 11-5,17-5,22-5.
  6. ^ "Руководство по архитектуре SPARC, версия 8" . SPARC International . п. 244.
  7. ^ "Руководство по архитектуре SPARC, версия 9" (PDF) . SPARC International. 1994. F.3.2 Атрибуты MMU, ассоциированные с каждым отображением, стр. 284. ISBN  0-13-825001-4. Архивировано из оригинального (PDF) 18 января 2012 года.
  8. ^ «Oracle SPARC Architecture 2011, Draft D1.0.0» (PDF) . Корпорация Oracle . 12 января 2016 г. с. 452.
  9. ^ Книга III по архитектуре операционной среды PowerPC, версия 2.01 . IBM . Декабрь 2003. с. 31.
  10. ^ "Power ISA Version 3.0" . IBM. 30 ноября 2015 г. с. 1003.
  11. ^ "Справочное руководство по архитектуре и набору команд PA-RISC 1.1, третье издание" (PDF) . Hewlett-Packard . Февраль 1994. с. 3-13. Архивировано из оригинального (PDF) 7 июня 2011 года.
  12. ^ Джерри Кейн. «Архитектура PA-RISC 2.0, Глава 3: Адресация и контроль доступа» (PDF) . Hewlett Packard. п. 3-14.
  13. ^ "Руководство разработчика программного обеспечения архитектуры Intel Itanium, том 2: Архитектура системы, версия 2.0" . Intel. Декабрь 2001. с. 2:46.
  14. ^ z / Принципы работы архитектуры (PDF) . IBM. Сентябрь 2017. с. 3-14.

Внешние ссылки [ править ]

  • AMD и Intel внедрили антивирусные технологии в чипы
  • Интервью Microsoft о надежных вычислениях и NX
  • Объявление LKML NX
  • Изменения функциональности в Microsoft Windows XP с пакетом обновления 2 (SP2), часть 3: Технологии защиты памяти
  • Центр разработчиков безопасности Microsoft: Windows XP SP 2: защита выполнения