Кто решает, какие инструкции должны оставаться привилегированными? Это производитель оборудования или разработчики ОС?

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


person Divyam Bhutani    schedule 22.05.2020    source источник


Ответы (1)


Ядро и пользовательский режим, а также инструкции, запрещенные в пользовательском режиме, являются частью ISA. Это встроено в аппаратное обеспечение.

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


Но это не полная картина: на некоторых ISA, таких как x86, более поздние расширения ISA добавили биты флагов регистра управления, которые позволяют ОС выбирать, являются ли некоторые другие инструкции привилегированными или нет. В x86 это делается для получения инструкций, которые могут привести к утечке информации о ASLR ядра или сделать временные побочные каналы Полегче.

Например, rdpmc (чтение счетчика монитора производительности) можно использовать только из пользовательского пространства, если это специально разрешено ядром. rdtsc (чтение счетчика меток времени) по умолчанию можно считать из пространства пользователя, но TSD ( TimeStamp Disable) в CR4 может ограничить его использование до уровня priv 0 (режим ядра). Недопущение в пользовательском пространстве использования синхронизации с высоким разрешением — это грубый способ защиты от атак по сторонним каналам синхронизации.

Другое расширение x86 защищает от утечки адресов ядра, чтобы сделать ASLR ядра более секретным; CR4.UMIP (предотвращение инструкций пользовательского режима) отключает такие инструкции, как sgdt, которые считывают виртуальный адрес GDT. Эти инструкции в первую очередь были бесполезны для пользовательского пространства и, в отличие от rdtsc, всегда могли быть привилегированными.

Параметр ядра Linux, позволяющий использовать это расширение, описывает его:

Предотвращение инструкций пользовательского режима (UMIP) — это функция безопасности в новых процессорах Intel. Если включено, выдается общий отказ защиты, если инструкции SGDT, SLDT, SIDT, SMSW или STR выполняются в пользовательском режиме. Эти инструкции излишне раскрывают информацию о состоянии оборудования.

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

Установка нового адреса для IDT/GDT/LDT (например, lgdt/lidt), конечно, привилегированная инструкция; те позволяют вам завладеть машиной. Но до тех пор, пока ASLR ядра не появился, не было никаких причин мешать пользовательскому пространству читать адрес. Это может быть страница, запись таблицы страниц которой установлена ​​только на ядро, что не позволяет пользовательскому пространству что-либо делать с этим адресом. (... до тех пор, пока Meltdown не позволил пользовательскому пространству использовать спекулятивный побочный канал для чтения данных со страниц только ядра, которые были горячими в кеше.)

person Peter Cordes    schedule 22.05.2020
comment
Означает, что привилегированные инструкции являются частью ISA. Но ОС может выбрать некоторые другие инструкции в качестве привилегированных. Также ОС может сделать некоторые привилегированные инструкции доступными в пользовательском режиме, если они включены. - person Divyam Bhutani; 23.05.2020
comment
@DivyamBhutani: Только если ISA предоставит ОС такой выбор. Большинство инструкций фиксируются в ISA либо как привилегированные, либо как непривилегированные. - person Peter Cordes; 23.05.2020
comment
Я понимаю это сейчас. Спасибо Петру за помощь. - person Divyam Bhutani; 24.05.2020