NX-биты
( Бит NX без выполнения) — это технология, используемая в процессорах для разделения областей виртуального адресного пространства для хранения данных или инструкций процессора. Операционная система с поддержкой бита NX может помечать определенные области адресного пространства как неисполняемые. В этом случае процессор откажется выполнять любой код, находящийся в этих областях адресного пространства. Общий метод, известный как защита исполняемого пространства , также называемый Write XOR Execute , используется для предотвращения захвата компьютеров определенными типами вредоносного программного обеспечения путем вставки их кода в область хранения данных другой программы и запуска собственного кода из этого раздела; один класс таких атак известен как атака переполнения буфера .
Термин «бит NX» возник в компании Advanced Micro Devices в качестве маркетингового термина (AMD). Intel позиционирует эту функцию как бит XD (отключение выполнения). В архитектуре MIPS эта функция называется битом XI (запрет выполнения). В архитектуре ARM эта функция, представленная в ARMv6 , называется XN (никогда не выполнять). [ 1 ] Сам термин бит NX иногда используется для описания аналогичных технологий в других процессорах.
Поддержка архитектуры
[ редактировать ]х86
[ редактировать ]Процессоры x86 , начиная с 80286 , включали аналогичную возможность, реализованную на уровне сегмента . Однако почти все операционные системы для процессоров x86 80386 и более поздних версий реализуют модель плоской памяти , поэтому они не могут использовать эту возможность. В этих процессорах не было флага «Исполняемый файл» в записи таблицы страниц (дескрипторе страницы), пока, чтобы сделать эту возможность доступной для операционных систем, использующих модель плоской памяти, 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, поскольку в записях таблицы страниц в этом формате отсутствует 64-й бит, используемый для отключить и включить выполнение.
Windows XP SP2 и более поздние версии поддерживают предотвращение выполнения данных (DEP).
РУКА
[ редактировать ]В ARMv6 был представлен новый формат записи таблицы страниц; он включает бит «никогда не выполнять». [ 1 ] Для дескрипторов блоков и страниц ARMv8-A , VMSAv8-64, а также дескрипторов блоков и страниц с длинными дескрипторами VMSAv8-32 для этапа 1 трансляции имеют биты «не выполнять никогда» как для привилегированных, так и для непривилегированных режимов, а также дескрипторы блоков и страниц для этапа 2. трансляции имеют один бит «не выполнять никогда» (два бита из-за функции ARMv8.2-TTS2UXN); Дескрипторы таблицы перевода коротких дескрипторов VMSAv8-32 на уровне 1 имеют биты «никогда не выполнять» как для привилегированного, так и непривилегированного режима, а на уровне 2 имеют один бит «никогда не выполнять». [ 4 ]
Альфа
[ редактировать ]Начиная с четвертого издания руководства по архитектуре Alpha, DEC (теперь HP) Alpha имеет бит Fault on Execute в записях таблицы страниц с OpenVMS , Tru64 UNIX и Alpha Linux PALcode . [ 5 ]
СПАРК
[ редактировать ]Эталонный MMU SPARC для Sun SPARC версии 8 имеет значения разрешений «Только чтение», «Чтение/запись», «Чтение/выполнение» и «Чтение/запись/выполнение» в записях таблицы страниц. [ 6 ] хотя не все процессоры SPARC имеют эталонный MMU SPARC.
MMU SPARC версии 9 может предоставлять, но не обязан предоставлять любую комбинацию разрешений на чтение/запись/выполнение. [ 7 ] Запись таблицы перевода в буфере хранилища переводов в архитектуре Oracle SPARC 2011, проект D1.0.0 имеет отдельные биты исполняемого и записываемого файлов. [ 8 ]
PowerPC/Power ISA
[ редактировать ]Записи таблицы страниц для хешированных таблиц страниц IBM PowerPC имеют бит страницы, запрещающий выполнение. [ 9 ] Записи таблицы страниц для таблиц страниц с базовым деревом в Power ISA имеют отдельные биты разрешений, предоставляющие доступ на чтение/запись и выполнение. [ 10 ]
ПА-РИСК
[ редактировать ]Записи резервного буфера трансляции (TLB) и записи таблицы страниц в PA-RISC 1.1 и PA-RISC 2.0 поддерживают страницы только для чтения, чтения/записи, чтения/выполнения и чтения/записи/выполнения. [ 11 ] [ 12 ]
Итаний
[ редактировать ]Записи TLB в Itanium поддерживают страницы только для чтения, чтения/записи, чтения/выполнения и чтения/записи/выполнения. [ 13 ]
з/Архитектура
[ редактировать ]Начиная с двенадцатого издания « Принципов работы z/Architecture» , процессоры z/Architecture могут поддерживать функцию защиты от выполнения инструкций, которая добавляет в записи таблицы страниц бит, определяющий, могут ли инструкции из данного региона, сегмента или страницы быть казнен. [ 14 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б «Справочное руководство по архитектуре ARM» (PDF) . АРМ Лимитед . стр. В4-8,В4-27. Архивировано из оригинала (PDF) 6 февраля 2009 г.
Биты APX и XN (никогда не выполнять) были добавлены в VMSAv6 [архитектура системы виртуальной памяти].
- ^ Тед Симпсон; Джейсон Новак (24 мая 2017 г.). Практические занятия по виртуальным вычислениям . Cengage Обучение. стр. 8–9. ISBN 978-1-337-10193-6 .
- ^ «Предотвращение выполнения данных» (PDF) . Хьюлетт Паккард. 2005 . Проверено 23 марта 2014 г.
- ^ «Справочное руководство по архитектуре ARM, ARMv8, для профиля архитектуры ARMv8-A» . АРМ Лимитед. стр. Д4-1779,Д4-1780,Д4-1781,Г4-4042,Г4-4043,Г4-4044,Г4-4054,Г4-4055.
- ^ Справочное руководство по архитектуре Alpha (PDF) (Четвертое изд.). Компьютер Компак . Январь 2002 г., стр. 11-5,17-5,22-5.
- ^ «Руководство по архитектуре SPARC, версия 8» . СПАРК Интернэшнл . п. 244.
- ^ Руководство по архитектуре SPARC, версия 9 (PDF) . СПАРК Интернэшнл. 1994. F.3.2 Атрибутирует ассоциированные MMU при каждом сопоставлении, стр. 284. ИСБН 0-13-825001-4 . Архивировано из оригинала (PDF) 18 января 2012 г.
- ^ «Архитектура Oracle SPARC 2011, проект D1.0.0» (PDF) . Корпорация Оракл . 12 января 2016. с. 452.
- ^ Книга III «Архитектура операционной среды PowerPC», версия 2.01 . ИБМ . Декабрь 2003. с. 31.
- ^ «Power ISA версии 3.0» . ИБМ. 30 ноября 2015 г. с. 1003.
- ^ «Справочное руководство по архитектуре и набору команд PA-RISC 1.1, третье издание» (PDF) . Хьюлетт-Паккард . Февраль 1994 г. с. 3-13. Архивировано из оригинала (PDF) 7 июня 2011 года.
- ^ Джерри Кейн. «Архитектура PA-RISC 2.0, Глава 3: Адресация и контроль доступа» (PDF) . Хьюлетт-Паккард. п. 3-14. Архивировано из оригинала (PDF) 9 января 2017 г.
- ^ «Руководство разработчика программного обеспечения для архитектуры Intel Itanium, том 2: Архитектура системы, версия 2.0» . Интел. Декабрь 2001. с. 2:46. Архивировано из оригинала 9 января 2017 года.
- ^ z/Принципы работы архитектуры (PDF) . ИБМ. Сентябрь 2017. с. 3-14.
Внешние ссылки
[ редактировать ]- AMD и Intel внедрили антивирусную технологию в чипы
- Интервью Microsoft о надежных вычислениях и NX
- Объявление о LKML NX
- Изменения в функциональности Microsoft Windows XP с пакетом обновления 2, часть 3: Технологии защиты памяти
- Центр разработчиков безопасности Microsoft: Windows XP SP 2: Защита выполнения