Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Свой скрипт линковщика для модуля ядра 
V
    Опции темы
Relkin
Дата 21.6.2010, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 21.12.2006

Репутация: 2
Всего: 2



Цитата(xvr @  21.6.2010,  21:11 Найти цитируемый пост)
Это так, но SKINIT и SL для этого не нужны

Смысл использования инструкции заключается в том, чтобы обнулить значение PCR17 ( при старте компьютера, оно равно -1 ), таким образом отвязав последующую процедуру аттестации от текущего состояния системы, и выполнять только один непрерываемый поток инструкций SL'a.


Цитата(xvr @  21.6.2010,  21:11 Найти цитируемый пост)
На мой взгляд тут есть дыра. Если злоумышленник запустит свой VMM, то он сможет перехватить управление ПОСЛЕ запуска доверенного кернела (хотя с SKINIT в VMM придется покувыркаться  smile ). 

Когда выполняетсчя skinit все AP ядра процессора находятся в состоянии после INIT IPI и ждут STARTUP IPI. Работает только BSP ядро с SL, защищённым от всего, в том числе DMA. SL переинициализирует AP ядра процессора своим кодом. После skinit управление уже никогда не вернётся враждебному гипервизору. Всё это, конечно, если она не была сэмулирована, но в обратном случае аттестация не будет пройдена, т.к. обнулить значение PCR17 другим способом никак нельзя.
PM MAIL   Вверх
xvr
Дата 21.6.2010, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(Relkin @ 21.6.2010,  22:50)
Цитата(xvr @  21.6.2010,  21:11 Найти цитируемый пост)
Это так, но SKINIT и SL для этого не нужны

Смысл использования инструкции заключается в том, чтобы обнулить значение PCR17 ( при старте компьютера, оно равно -1 ), таким образом отвязав последующую процедуру аттестации от текущего состояния системы, и выполнять только один непрерываемый поток инструкций SL'a.

Зачем этот код выполнять именно как SL? Для аутентификации по пользовательскому случайному числу нужен не SL, а не экспортируемый из TPM приватный ключ.

Цитата

Цитата(xvr @  21.6.2010,  21:11 Найти цитируемый пост)
На мой взгляд тут есть дыра. Если злоумышленник запустит свой VMM, то он сможет перехватить управление ПОСЛЕ запуска доверенного кернела (хотя с SKINIT в VMM придется покувыркаться  smile ). 

Когда выполняетсчя skinit все AP ядра процессора находятся в состоянии после INIT IPI и ждут STARTUP IPI. Работает только BSP ядро с SL, защищённым от всего, в том числе DMA. 
Почему оно защищенное? Если злоумышленник залез в BIOS (а это запросто), то он получит управление до SKINIT, и сможет поставить хук на вызов себя позже (например на другом процессоре, который он может для этого разбудить через STARTUP IPI)
Цитата

SL переинициализирует AP ядра процессора своим кодом. После skinit управление уже никогда не вернётся враждебному гипервизору. 
SL же не бесконечного размера. Выполнение в конце концов покинет защищенную область, вот тут он уже и ждет
Цитата

Всё это, конечно, если она не была сэмулирована, но в обратном случае аттестация не будет пройдена, т.к. обнулить значение PCR17 другим способом никак нельзя.
Злоумышленник может сделать и то и другое. Исполнить SL (с последующим перехватом потока исполнения) для извлечения PCR17, и проэмулировать отпатченный SL для запуска (уже не очень trusted) OS

PM MAIL   Вверх
MAKCim
Дата 22.6.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Relkin
xvr
приятно читать умные диалоги, но некоторый оффтоп все же имеется в данном случае  smile 
давайте ближе к linux'у  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Relkin
Дата 22.6.2010, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 21.12.2006

Репутация: 2
Всего: 2



Цитата(xvr @  21.6.2010,  23:42 Найти цитируемый пост)
Почему оно защищенное? Если злоумышленник залез в BIOS (а это запросто), то он получит управление до SKINIT, и сможет поставить хук на вызов себя позже (например на другом процессоре, который он может для этого разбудить через STARTUP IPI)

Обычно в DRT под SK подразумевается VMM (гипервизор), который либо начинает контролировать недоверенную ОС (из неё происходил запуск), путём погружения её в виртуальную машину, либо создаёт полностью новые виртуальные машины. Так как GIF флаг равен нулю после SKINIT у AP ядер и они находятся в halted состоянии, то разбудить их возможно только через STARTUP IPI, что и делается либо SL, либо SK. BIOS не может получить управление после SKINIT, до тех пор, пока либо явно не будет обращение к нему, либо при вхождении в SMM. SK (VMM) вполне в состоянии эмулировать BIOS и сбрасывать попытки перейти в SMM (насколько мне известно эмулировать SMM пока получалось только у AMD процессоров).

Цитата(xvr @  21.6.2010,  23:42 Найти цитируемый пост)
 поставить хук на вызов себя позже 

Что вы имеете здесь ввиду не знаю, возможно из-за пробелов в знаниях. Вызов на себя позже по прерыванию, по таймеру, или какой-то другой механизм?
В моём понимании BIOS это набор процедур, которые могут быть вызваны программным обеспечением. Соответственно, если SK будет эмулировать все обращения к нему из виртуальных машин, то он не получит управления до перезагрузки.


Цитата(xvr @  21.6.2010,  23:42 Найти цитируемый пост)
Зачем этот код выполнять именно как SL? Для аутентификации по пользовательскому случайному числу нужен не SL, а не экспортируемый из TPM приватный ключ.

Вся проблема в том, что DRT стартует из недоверенной среды. Следовательно, если нет доверенного механизма для старта системы (SKINIT), то с одного кода может быть снята контрольная сумма, а после через DMA, враждебный гипервизор, через обновление кэша у процессора, он может быть подменён другим. Соответственно, итоговое число для аттестации получится правильным, но выполнен будет совсем другой код. Наличие SL в цепи загрузки это аппаратное требование, SKINIT передаёт управление на код ограниченного размера. Возможно совместить роль SK и SL, если хватит 64 килобайт. Насколько я понимаю, роль SL, в основном сводится к закрытию памяти SK от DMA, используя либо DEV (только по записи), либо IOMMU.

Это сообщение отредактировал(а) Relkin - 22.6.2010, 20:55
PM MAIL   Вверх
xvr
Дата 22.6.2010, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(Relkin @  22.6.2010,  20:51 Найти цитируемый пост)
BIOS не может получить управление после SKINIT,
А ему и не надо после, он получает его ДО. Если BIOS модифицирован злоумышленником, то он может сам разбудить AP ДО вызова любого загрузчика и создать там трояна, например переведя AP процессор в PM и перенаправив IDT на приватный кусок памяти с кодом вируса. После чего он может усыпить AP процессор в ожидании STARTUP IPI, который сделает не startup, а запуск вирусного кода.

В любом случае DRT позволяет злоумышленнику получить управление ДО вызова SL, и если найдется дыра в системе защиты, то скомпрометировать всю trusted platform. В случае SRT у злоумышленника такой возможности нет, и системе защиты не придется латать потенциальные дыры.

Цитата(Relkin @  22.6.2010,  20:51 Найти цитируемый пост)
Вся проблема в том, что DRT стартует из недоверенной среды. Следовательно, если нет доверенного механизма для старта системы (SKINIT)
Про старт системы речь не шла. Речь шла про аутентификацию пользователя (или его кода). Вариант, когда SL запускает процедуру аутентификации, а потом возвращается обратно (в незащищенную среду) смысла не имеет (вышеупомянутый flicker делает именно это)

PS. Мы в оффтопике уже по самые уши, предлагаю завязывать  smile 


PM MAIL   Вверх
Relkin
Дата 23.6.2010, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 21.12.2006

Репутация: 2
Всего: 2



Цитата(xvr @  22.6.2010,  21:49 Найти цитируемый пост)
А ему и не надо после, он получает его ДО. Если BIOS модифицирован злоумышленником, то он может сам разбудить AP ДО вызова любого загрузчика и создать там трояна, например переведя AP процессор в PM и перенаправив IDT на приватный кусок памяти с кодом вируса. После чего он может усыпить AP процессор в ожидании STARTUP IPI, который сделает не startup, а запуск вирусного кода.

Все мои комментарии выше написаны с учётом того, что система не доверена(любые виды зловредов + сама ОС с закладками). То есть до, сколько угодно, после - только под контролем гипервизора ( попытки запустить враждебный гипервизор можно либо сбрасывать, либо делать эмуляцию этих команд). skinit атомарна и отключает прерывания, команда startup ipi требует указания ей адреса, по которому расположен код инициализации процессора. То, что вы описали не получится ( то есть изменить IDT можно, но SL или SK всё равно выполнит свой код).

Цитата(xvr @  22.6.2010,  21:49 Найти цитируемый пост)
а потом возвращается обратно (в незащищенную среду) смысла не имеет (вышеупомянутый flicker делает именно это)

Можно и не возвращаться, а, например, если SK - XEN, развёртывать полностью новое окружение поверх текущего. Fliсker позволяет выделить критические части у ПО, выполнить их в изолированной среде, а после аттестовать. После он возвращает управление в недоверенную среду, но цель у него и не ставилась как защитить всю систему.

В конце концов, можно запихнуть в гипервизор антивирус или файрвол, таким образом защитив их от враждебной ОС.

Цитата(xvr @  22.6.2010,  21:49 Найти цитируемый пост)
PS. Мы в оффтопике уже по самые уши, предлагаю завязывать

Согласен.



Это сообщение отредактировал(а) Relkin - 23.6.2010, 07:53
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1244 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.