Регистрация на РИФ.Иннополис и OS DAY
Зарегистрироваться
Пакулин Николай Витальевич. Кандидат
Поддержка аппаратной верификации в современных процессорах открыла новые возможности для обеспечения безопасности. Благодаря тому, что гипервизор может изолировать операционную систему от оборудования и непосредственного доступа к оперативной памяти, на базе аппаратной виртуализации создаются различные средства защиты (а также нападения). В докладе будут рассмотрены основные сценарии применения гипервизоров для обеспечения безопасности и типовые архитектурные решения. Также будет представлен проект отечественного гипервизора Севигатор, защищающего доверенные приложения от утечки данных в условиях зараженной операционной системы.
Современные популярные операционные системы (прежде всего Linux и Windows) основаны на монолитных ядрах, в которых все компоненты ядра имеют одинаковые высокие привилегии. Такая архитектура позволяет добиться максимальной производительности, но приводит к существенным рискам безопасности: если злонамеренных код проникнет внутрь ядра, он потенциально получит доступ к всем ресурсам компьютерной системы, включая данные в памяти приложений и на диске,
Вопрос заключается в том, возможно ли защитить приложение, выполняющееся под управлением популярной ОС (
Возможный ответ на вопрос, поставленный в предыдущем абзаце, заключается в том, чтобы перенести средства защиты на более высокий уровень привилегий, чем ядро ОС.
Практически все современные процессоры семейства x86 включают подсистему аппаратной поддержки виртуализации, которая позволяет запускать операционную систему в правдоподобном эмулированном окружении виртуальной машины. Система управление виртуальными машинами, гипервизор, может перехватывать практически любой аспект выполнения ОС: привилегированные инструкции, обращения к оборудованию, прерывания и системные вызовы. Таким образом уровень привилегий гипервизора выше, чем у ядра ОС, он полностью изолирован от операционной системы и, как правило, гораздо меньше ядра ОС.
В данной работе мы представляем проект Севигатор — опыт разработки гипервизора, который обеспечивает конфиденциальность данных приложений в условиях потенциально скомпрометированной ОС. Мы предполагаем, что у злоумышленника есть возможность через уязвимость или закладку получить уровень привилегий ядра, но всё оборудование, к которому предоставляется доступ ОС, является доверенным — мы не рассматриваем атаки через прямой доступ в память.
Идея использовать гипервизоры для обеспечения безопасности сравнительно не нова. Можно упомянуть такие проекты, как Overshadow [1], в котором был реализован подход к конфиденциальности данных приложений через шифрование страниц в оперативной памяти, BitVisor [2], в котором реализовали прозрачное шифрование запросов к диску и сетевого трафика, Barrier [3], в котором отслеживается целостность структур данных ядра и выявляются руткиты.
Севигатор обеспечивает изоляцию потенциально скомпрометированной ОС от сети, но при этом поддерживает функционирование доверенных приложений. Для них, и только для них предоставляется доступ к сети. Важно, что для достижения этого результата не требуется модификация или пересборка приложений, библиотек и ядра.
Севигатор реализует следующий набор функций:
Конфиденциальность «в целом». Для минимизации затрат CPU при переключении контекста память приложений не шифруется. Поэтому недоверенные приложения и скомпрометированное ядро ОС, вообще говоря, имеют доступ на чтение (и даже на запись) в память защищаемых доверенных приложений. О какой защите мы в этом случае говорим? Основная идея Севигатора заключается в том, что недоверенные приложения и ядро ОС физически отключены от каналов связи: в виртуальной машине просто нет сетевой карты. Несмотря на то, что недоверенные приложения могут прочитать конфиденциальные данные, они никому не смогут это «рассказать».
Для выявления искажений данных доверенных приложений принадлежащие им страницы памяти индексируются при переключении контекста — с них снимается криптографическая контрольная сумма. При возвращении управления в доверенное приложение контрольная сумма проверяется: если обнаруживается расхождение, это трактуется как атака на доверенное приложение, и оно теряет соединение с сетью.
Удалённое обслуживание системных вызовов. Несмотря на то, что в виртуальной машине нет сетевой карты, доверенные приложения могут отправлять и получать данные через сеть. Для этого гипервизор перехватывает системные вызовы доверенного приложения, анализирует их и в том случае, когда они имеют отношение к сетевым операциям, выполняет их вне виртуальной машины.
В настоящее время Севигатор построен на основе микроядерного гипервизора NOVA [4]. Этот гипервизор представляет собой небольшую операционную систему, в которой высшими привилегиями обладает только микроядро (7 тыс. строк), а все остальные задачи, включая менеджер виртуальной машины, сетевой стек и драйверы, вынесены в приложения, находящиеся в третьем кольце защиты.
Сетевые системные вызовы (socket, bind, send, sento, recv
Все сетевые операции выполняются вне ядра ОС и, тем самым, недоверенные приложения и скомпрометированное ядро не могут нарушить конфиденциальность и целостность сетевого трафика доверенных приложений.
Аттестация приложений. Перед запуском доверенного приложения его необходимо аттестовать, то есть убедиться, что образ, загруженный в оперативную память, соответствует двоичному образу приложения, которое получило статус доверенного.
Для аттестации в гипервизор загружены паспорта доверенных приложений. Паспорт содержит криптографические контрольные суммы всех заголовков и секций исполняемого файла, образов всех страниц памяти загруженного приложения перед запуском, динамически загружаемых библиотек и конфигурационных файлов. При загрузке приложения гипервизор проверяет, что (1) исполняемые файлы приложения и библиотек не искажены, (2) загрузчик размещает страницы приложения в памяти без искажений, (3) конфигурационные файлы, которые читает приложение, не искажены. В случае, когда проверка завершается неуспешно, приложение теряет статус доверенного, и гипервизор не предоставляет ему доступ в сеть.
При обновлении приложения в виртуальной машине необходимо обновить его паспорт.
Обсуждение.
Наши измерения показали, что накладные расходы на вызовы между процессами в гипервизоре составляют порядка 1–2% от общего времени обработки сетевого запроса, поэтому нет существенного проигрыша в производительности по сравнению с монолитными гипервизорами. При этом у микроядерной архитектуры есть существенные плюсы в плане защищенности: микроядерная архитектура гипервизора позволяет значительно сократить доверенную кодовую базу. Безусловная компрометация гипервизора возможна только в случае уязвимостей в микроядре. Небольшой размер микроядра делает возможным
Заключение.
В работе представлен подход к обеспечению безопасности приложений в условиях скомпрометированного ядра операционной системы. В нашем подходе ОС заключена в виртуальную машину, а система защиты вынесена в гипервизор. Гипервизор предоставляет средства для изоляции недоверенных приложений от сети и предотвращения утечки данных, средства для обеспечения целостности кода и данных доверенного приложения, механизм обслуживания сетевого трафика вне виртуальной машины.