Рубрика:
Разработка /
OS DAY – 2015
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
НИКОЛАЙ ПАКУЛИН, старший научный сотрудник ИСП РАН
Разработка гипервизоров для обеспечения информационной безопасности
В этой работе мы представляем проект Севигатор – опыт разработки гипервизора, который обеспечивает конфиденциальность данных приложений в условиях потенциально скомпрометированной ОС
Современные популярные ОС (прежде всего Linux и Windows) основаны на монолитных ядрах, в которых все компоненты ядра имеют одинаковые высокие привилегии. Такая архитектура позволяет добиться максимальной производительности, но приводит к существенным рискам безопасности: если злонамеренный код проникнет внутрь ядра, он потенциально получит доступ ко всем ресурсам компьютерной системы, включая данные в памяти приложений и на диске, и т.д. Целостность и конфиденциальность данных, передаваемых по сети, также оказываются под угрозой даже в случае использования криптографии.
Вопрос заключается в том, возможно ли защитить приложение, выполняющееся под управлением популярной ОС (прежде всего Linux и Windows), на широко распространенных процессорах семейства x86 без внесения изменений в код приложений, ядра ОС или аппаратных расширений? Системы защиты, расположенные в ядре, такие как антивирусы, межсетевые экраны, средства выявления вторжений, очевидно, не могут справиться с этой задачей, так как сами могут быть атакованы проникшими «зловредами».
Возможный ответ на вопрос, поставленный в предыдущем абзаце, заключается в том, чтобы перенести средства защиты на более высокий уровень привилегий, чем ядро ОС.
Практически все современные процессоры семейства x86 включают подсистему аппаратной поддержки виртуализации, которая позволяет запускать операционную систему в правдоподобном эмулированном окружении виртуальной машины. Система управления виртуальными машинами, гипервизор, может перехватывать практически любой аспект выполнения ОС: привилегированные инструкции, обращения к оборудованию, прерывания и системные вызовы. Таким образом, уровень привилегий гипервизора выше, чем у ядра ОС, он полностью изолирован от операционной системы и, как правило, гораздо меньше ядра ОС.
Мы предполагаем, что у злоумышленника есть возможность через уязвимость или закладку получить уровень привилегий ядра, но все оборудование, к которому предоставляется доступ ОС, является доверенным – мы не рассматриваем атаки через прямой доступ в память.
Идея использовать гипервизоры для обеспечения безопасности сравнительно не нова. Можно упомянуть такие проекты, как Overshadow [1], где был реализован подход к конфиденциальности данных приложений через шифрование страниц в оперативной памяти, BitVisor [2], в котором реализовали прозрачное шифрование запросов к диску и сетевого трафика, Barrier [3], в нем отслеживается целостность структур данных ядра и выявляются руткиты.
Севигатор обеспечивает изоляцию потенциально скомпрометированной ОС от сети, но при этом поддерживает функционирование доверенных приложений. Для них, и только для них, предоставляется доступ к сети. Важно, что для достижения этого результата не требуется модификация или пересборка приложений, библиотек и ядра.
Севигатор реализует следующий набор функций.
Конфиденциальность «в целом». Для минимизации затрат CPU при переключении контекста память приложений не шифруется. Поэтому недоверенные приложения и скомпрометированное ядро ОС, вообще говоря, имеют доступ на чтение (и даже на запись) в память защищаемых доверенных приложений. О какой защите мы в этом случае говорим? Основная идея Севигатора заключается в том, что недоверенные приложения и ядро ОС физически отключены от каналов связи: в виртуальной машине просто нет сетевой карты. Несмотря на то что недоверенные приложения могут прочитать конфиденциальные данные, они никому не смогут это «рассказать».
Рисунок 1. Обработка сетевых вызовов в Севигаторе. Сетевые запросы доверенных приложений перехватываются гипервизором и обрабатываются в выделенном сетевом стеке. Сетевые запросы ядра ОС и недоверенных приложений блокируются
Для выявления искажений данных доверенных приложений принадлежащие им страницы памяти индексируются при переключении контекста – с них снимается криптографическая контрольная сумма. При возвращении управления в доверенное приложение контрольная сумма проверяется: если обнаруживается расхождение, это трактуется как атака на доверенное приложение, и оно теряет соединение с сетью.
Удаленное обслуживание системных вызовов. Несмотря на то что в виртуальной машине нет сетевой карты, доверенные приложения могут отправлять и получать данные через сеть. Для этого гипервизор перехватывает системные вызовы доверенного приложения, анализирует их и в том случае, когда они имеют отношение к сетевым операциям, выполняет их вне виртуальной машины.
В настоящее время Севигатор построен на основе микроядерного гипервизора NOVA [4]. Этот гипервизор представляет собой небольшую операционную систему, в которой высшими привилегиями обладает только микроядро (7 тыс. строк), а все остальные задачи, включая менеджер виртуальной машины, сетевой стек и драйверы, вынесены в приложения, находящиеся в третьем кольце защиты.
Сетевые системные вызовы (socket, bind, send, sento, recv и т.д.) перехватываются менеджером виртуальной машины и перенаправляются в приложение над ядром гипервизора, которое реализует сетевой стек. В нашей работе мы используем известный стек для встроенных систем lwIP [5]. В доверенном приложении работают операции сетевого ввода-вывода, включая отправку и получение сообщений UDP и потоки TCP.
Все сетевые операции выполняются вне ядра ОС, и тем самым недоверенные приложения и скомпрометированное ядро не могут нарушить конфиденциальность и целостность сетевого трафика доверенных приложений.
Аттестация приложений. Перед запуском доверенного приложения его необходимо аттестовать, то есть убедиться, что образ, загруженный в оперативную память, соответствует двоичному образу приложения, которое получило статус доверенного.
Для аттестации в гипервизор загружены паспорта доверенных приложений. Паспорт содержит криптографические контрольные суммы всех заголовков и секций исполняемого файла, образов всех страниц памяти загруженного приложения перед запуском, динамически загружаемых библиотек и конфигурационных файлов. При загрузке приложения гипервизор проверяет, что (1) исполняемые файлы приложения и библиотек не искажены, (2) загрузчик размещает страницы приложения в памяти без искажений, (3) конфигурационные файлы, которые читает приложение, не искажены. В случае, когда проверка завершается неуспешно, приложение теряет статус доверенного, и гипервизор не предоставляет ему доступ в сеть.
При обновлении приложения в виртуальной машине необходимо обновить его паспорт.
Обсуждение
Наши измерения показали, что накладные расходы на вызовы между процессами в гипервизоре составляют порядка 1-2% от общего времени обработки сетевого запроса, поэтому нет существенного проигрыша в производительности по сравнению с монолитными гипервизорами. При этом у микроядерной архитектуры есть существенные плюсы в плане защищенности: микроядерная архитектура гипервизора позволяет значительно сократить доверенную кодовую базу. Безусловная компрометация гипервизора возможна только в случае уязвимостей в микроядре. Небольшой размер микроядра делает возможным более-менее полную верификацию кода и минимизирует риск ошибки. Компрометация отдельных компонентов – менеджера виртуальных машин или сетевого стека – не приводит к компрометации гипервизора, так как они выполняются как процессы в выделенных адресных пространствах.
В работе представлен подход к обеспечению безопасности приложений в условиях скомпрометированного ядра ОС. В нашем подходе ОС заключена в виртуальную машину, а система защиты вынесена в гипервизор. Гипервизор предоставляет средства для изоляции недоверенных приложений от сети и предотвращения утечки данных, средства для обеспечения целостности кода и данных доверенного приложения, механизм обслуживания сетевого трафика вне виртуальной машины.
- Xiaoxin Chen, Tal Garfinkel, E. Christopher Lewis, Pratap Subrahmanyam, Carl A. Waldspurger, Dan Boneh, Jeffrey Dwoskin, and Dan R.K. Ports. 2008. Overshadow: a virtualization-based approach to retrofitting protection in commodity operating systems. SIGOPS Oper. Syst. Rev. 42, 2 (March 2008), 2-13. DOI=10.1145/1353535.1346284 – http://doi.acm.org/10.1145/1353535.1346284.
- T. Shinagawa, H. Eiraku, K. Tanimoto, K. Omote, S. Hasegawa, T. Horie, M. Hirano, K. Kourai, Y. Oyama, E. Kawai, K. Kono, S. Chiba, Y. Shinjo, and K. Kato. 2009. BitVisor: a thin hypervisor for enforcing i/o device security. In Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments (VEE '09). ACM, New York, NY, USA, 121-130.
- Jingyu Hua and Kouichi Sakurai. 2012. Barrier: a lightweight hypervisor for protecting kernel integrity via memory isolation. In Proceedings of the 27th Annual ACM Symposium on Applied Computing (SAC '12). ACM, New York, NY, USA, 1470-1477. DOI=10.1145/2245276.2232011 – http://doi.acm.org/10.1145/2245276.2232011.
- Udo Steinberg and Bernhard Kauer. 2010. NOVA: a microhypervisor-based secure virtualization architecture. In Proceedings of the 5th European conference on Computer systems (EuroSys '10). ACM, New York, NY, USA, 209-222. DOI=10.1145/1755913.1755935 – http://doi.acm.org/10.1145/1755913.1755935.
- Dunkels lwIP, a small independent implementation of the TCP/IP protocol suite – http://www.nongnu.org/lwip.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|