OSDev

для всех
Текущее время: 20 окт 2018, 07:22

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Защита
СообщениеДобавлено: 27 апр 2012, 17:22 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Защита
СообщениеДобавлено: 27 апр 2012, 17:37 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 290
Увы, кроме CR0.WP ничего подходящего в IA32e нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Защита
СообщениеДобавлено: 27 апр 2012, 17:39 

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


Последний раз редактировалось Bargest 27 апр 2012, 17:42, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Защита
СообщениеДобавлено: 27 апр 2012, 17:41 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 290
А в чем, собственно, дыра? Стеки и прочие структуры ядра же недоступны с CPL3.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Защита
СообщениеДобавлено: 27 апр 2012, 17:43 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Дыра в том, что с 1 кольца можно влезть в 0. Да, хитро и сложно, но можно. То есть драйвер из 1 кольца может захватить полный контроль над системой (да, я использую 1 кольцо).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Защита
СообщениеДобавлено: 27 апр 2012, 17:45 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 290
В IA-32e 1-2 кольца еще более бесполезны, чем раньше. Я использую только 0 и 3 кольца.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Защита
СообщениеДобавлено: 27 апр 2012, 17:46 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Защита
СообщениеДобавлено: 27 апр 2012, 17:53 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 290
Да, но сегментации как таковой нет, а страницы только два уровня привилегий поддерживают - ничего не мешает драйверу просто всю эту таблицу страниц переписать.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Защита
СообщениеДобавлено: 27 апр 2012, 17:58 

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Защита
СообщениеДобавлено: 02 май 2012, 08:39 
Аватара пользователя

Зарегистрирован: 06 мар 2012, 20:05
Сообщения: 130
Откуда: Санкт-Петербург
grindars писал(а):
зловредный драйвер может затереть, что захочет.

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

_________________
We are back with a hard even better than before [D-Block & S-Te-Fan – Evolutionz {Ran-D remix}]


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB