OSDev
http://osdev.su/

Защита
http://osdev.su/viewtopic.php?f=5&t=534
Страница 1 из 2

Автор:  Bargest [ 27 апр 2012, 17:22 ]
Заголовок сообщения:  Защита

Проштудировал спеки на архитектуру AMD64, но так и не нашёл.
Есть ли способ сделать страницы, защищенные от записи с 1, 2 и 3 кольца, но доступные для записи с 0-го?
Была идея выставить бит 16 в CR0 (WP) и запретить всем запись в READ-ONLY страницы; система перед работой с такими страницами будет его сбрасывать, а после завершения ставить снова. Но таким образом, например, нельзя защитить стеки при использовании механизма IST, поскольку если стек, на который переключаемся, защищать таким образом, то прерывание, которое использует IST, слетит с исключением, а если не защищать, то процесс с другого ядра процессора может вмешаться и испортить хранимые данные (тот же адрес возврата или еще чего). Да и вообще способ какой-то извращенский.

Автор:  grindars [ 27 апр 2012, 17:37 ]
Заголовок сообщения:  Re: Защита

Увы, кроме CR0.WP ничего подходящего в IA32e нет.

Автор:  Bargest [ 27 апр 2012, 17:39 ]
Заголовок сообщения:  Re: Защита

Значит все-таки аппаратная дыра? Жаль. Остаётся надеяться на сложность использования этой дыры. Или... Или использовать IST только для ексепшенов, где данные из стека будут носить чисто информативный характер, а сам эксепшен будет "ручками" переключаться на защищенный стек.

Автор:  grindars [ 27 апр 2012, 17:41 ]
Заголовок сообщения:  Re: Защита

А в чем, собственно, дыра? Стеки и прочие структуры ядра же недоступны с CPL3.

Автор:  Bargest [ 27 апр 2012, 17:43 ]
Заголовок сообщения:  Re: Защита

Дыра в том, что с 1 кольца можно влезть в 0. Да, хитро и сложно, но можно. То есть драйвер из 1 кольца может захватить полный контроль над системой (да, я использую 1 кольцо).

Автор:  grindars [ 27 апр 2012, 17:45 ]
Заголовок сообщения:  Re: Защита

В IA-32e 1-2 кольца еще более бесполезны, чем раньше. Я использую только 0 и 3 кольца.

Автор:  Bargest [ 27 апр 2012, 17:46 ]
Заголовок сообщения:  Re: Защита

Ну почему же, WRMSR и mov CRx, rax с них недоступны. Как следствие, драйверу не так просто переделать всю таблицу страниц и перенастроить SYSCALL'ы. Поэтому несколько уменьшаются возможности всякого рода руткитов.

Автор:  grindars [ 27 апр 2012, 17:53 ]
Заголовок сообщения:  Re: Защита

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

И, ЕМНИП, mov в cr - serializing instruction. Если будете часто дергать, то убьете производительность.

Или вот вам еще мысль: есть устройства, поддерживающие DMA память-память (да хоть ISA DMA) прямо или косвенно. Устройствам ваша защита безразлична, и зловредный драйвер может затереть, что захочет.

Автор:  Bargest [ 27 апр 2012, 17:58 ]
Заголовок сообщения:  Re: Защита

grindars писал(а):
Да, но сегментации как таковой нет, а страницы только два уровня привилегий поддерживают - ничего не мешает драйверу просто всю эту таблицу страниц переписать.

Как раз мешают, можно и саму таблицу защитить именно таким образом.
grindars писал(а):
И, ЕМНИП, mov в cr - serializing instruction. Если будете часто дергать, то убьете производительность.

Так и есть. Поэтому я и называю "извращенский метод" и не хочу использовать.:)
grindars писал(а):
Или вот вам еще мысль: есть устройства, поддерживающие DMA память-память (да хоть ISA DMA) прямо или косвенно. Устройствам ваша защита безразлична, и зловредный драйвер может затереть, что захочет.

Не подумал. Действительно. И не только затереть, а еще и осмысленно переписать (отправить в устройство нужное и считать). Увы. Пожалуй, тоже уберу 1 кольцо.

Автор:  DJ PhoeniX [ 02 май 2012, 08:39 ]
Заголовок сообщения:  Re: Защита

grindars писал(а):
зловредный драйвер может затереть, что захочет.

Юзер поставил драйвер из непроверенного источника? Ну дурак, что. А отказываться от таких потенциально полезных вещей из-за чьих-то потенциально кривых рук.. Не совсем логично, не?

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/