Проект «Безопасный браузер» Визовитин Николай Научный руководитель: Д.В. Иртегов
Идея проекта Защита от внедрения вредоносного кода через сеть Использование изолированной среды – виртуальной машины Изоляция host OS от сетевого интерфейса и его монопольное использование guest OS Использование внутри guest OS популярных приложений для работы с сетью, в т.ч. браузера
Реализация Host: универсальный драйвер сетевой карты с нестандартным интерфейсом VM: виртуальная сетевая карта, представляющая реальную Guest: драйвер сетевой карты (от производителя)
Отображение ресурсов виртуальной сетевой карты на ресурсы реальной Interrupts PCI configuration space Port I/O Memory Mapped I/O DMA NICFwd.sys (Host OS NIC driver) DevNICFwd (Virtual NIC) Interrupts PCI configuration space Port I/O Memory Mapped I/O DMA Rtenicxp.sys (Guest OS NIC driver) RTL8168
PCI configuration space Применяется набор фильтров для ограничения доступа к регистрам конфигурационного пространства реального устройства и/или специальной обработки обращений.
Port I/O, MM I/O Без учета DMA достаточно только преобразовывать адреса портов и памяти.
Interrupts Поскольку прерывания PCI устройств определяются уровнем сигнала (level-sensitive), то драйвер должен их подтверждать (acknowledge), после чего уровень становится низким. Для определения момента подтверждения применяется эвристика на базе данных об операциях записи в I/O регистры. Также уровень автоматически понижается через короткий промежуток времени.
DMA (Direct Memory Access) Большинство устройств использует DMA Неконтролируемый доступ устройства к памяти опасен У различных устройств способ управления DMA может достаточно сильно отличаться
DMA, решение 1 Заставить драйвер guest OS использовать для DMA заранее известный участок памяти, также зарезервированный в host OS + Достаточно универсально - Может быть весьма сложно или нереализуемо
DMA, решение 2 Поддержка ограниченного числа устройств, для которых известен способ управления DMA (в т.ч. управляющие I/O регистры) + Определенно реализуемо - Не универсально
Выполнено Полностью реализована поддержка: – прерываний – регистров ввода/вывода (как Port I/O, так и MM I/O) – конфигурационного пространства PCI Произведены необходимые модификации VirtualBox (подсистема конфигурирования, frontends, …) Все исходные коды адаптированы под новую версию VirtualBox Исправлены ошибки
Планы Реализовать поддержку DMA Создание чистого образа guest OS Реализация механизма сохранения пользовательских настроек и данных из guest OS
Спасибо за внимание Ваши вопросы