Vx32

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:03, 24 декабря 2016.

Vx32 - это виртуальная машина уровня приложений, которая реализована в виде обычной библиотеки пользовательского режима и нужна для запуска собственного кода на x86. Чтобы понять, что это такое, можно представить Java, которая умеет исполнять обычный x86-код, скомпилированный с помощью gcc. Vx32 работает на x86 системах FreeBSD, Linux и Mac OS X без специальных разрешений, привилегий или модулей ядра. Она также работает на системах Linux x86-64.

Брайан Форд и Расс Кокс являются основателями vx32.

Использование

Vx32 была использован для создания различных интересных приложений. Например:

  • VXA представляет собой архитектуру для самостоятельного декодирования активных архивов. При создании архива VXA архиватор встраивает исполняемые декодеры для схем сжатия, используемых в архиве. Позже читатель архива может извлечь сжатые данный без знания конкретных схем сжатия, которые использовал архив, запустив встроенные декодеры в виртуальной машине. Таким образом, VXA позволяет архиваторам постоянно развивать свои схемы сжатия и использовать специализированные схемы для конкретных типов данных, например, мультимедиа, не принуждая читателей данных постоянно делать обновления.
  • Альпака представляет собой расширяемую среду авторизации, что обеспечивает "лингва франка" для систем аутентификации. Альпака может приниматься постепенно и обеспечивать локальные выгоды. Например, учреждения могут использовать Альпака, чтобы обеспечить немедленную совместимость с клиентами и партнерской инфраструктурой открытых ключей, не требуя от них принятия новых сертифицированных форматов или алгоритмов.

Чтобы независимо оценить vx32 , ее стоит оценивать в контексте построенных на его основе нескольких приложений: главным плюсом является возможность запускать/создавать новые интересные приложения с ненадежным кодом на устаревших операционных систем без модификаций ядра при скромных затратах производительности.

Программа динамической трансляции предотвращает возможность выхода части вредоносного кода из песочницы. Опасные программы сразу попадают в виртуальную ловушку. Динамический перевод Vx32 прост и легок. Также эта трансляция дает возможность клиентским библиотекам ограничить набор команд в дальнейшем.

Обычно для ограничения области данных подконтрольной программы интерпретаторы анализируют все куски кода, содержащие упоминания об адресе (чтение из буфера, работа со стеком или обращение к файлу), при необходимости, исправляется каждая инструкция с адресом. В то же время на долю различных переходов и обращений к подпрограммам остается жалкий процент действий, не несущий особой нагрузки на интерпретатор. Разработчики Vx32, отлично это понимая, просто ограничили область данных программы сегментными регистрами (ds, es, ss), которые все равно не применяются в современных операционных систем из-за плоской модели памяти. В результате, интерпретатор Vx32 должен заботиться только об анализе инструкций-переходов (число которых очень мало: jmp и производные, call, int, ret) и пресекать попытки изменения сегментных регистров, а самую трудную работу по соблюдению границ видимости области данных выполнит процессор, который делает это намного быстрее.

Достоинства и недостатки

Vx32 является многоцелевой песочницей пользовательского уровня, который позволяет любому приложению загружать и безопасно выполнить один или несколько гостевых плагинов. Он эффективно выполняет код на x86 архитектуре с использованием сегментации оборудования x86, чтобы изолировать доступ к памяти. Способность Vx32 работать с ненадежным кодом позволяет эффективно выполнять множество интересных приложений: самоэкспортирующие архивы, расширяемые инфраструктуры с открытым ключом, операционной системы на уровне пользователя , а также либо портативные среды выполнения, либо среды для служебного пользования. Поскольку vx32 работает на широко используемых операционных систем x86 без модификаций ядра, эти приложения просты в развертывании.

Уже сейчас Vx32 стабильно работает, а на его основе создано несколько проектов, среди которых ОС Plan9, работающая в режиме хост-системы, и "эмулятор" Linux (Linux API поверх Vx32). Производительность этих систем приближается к нэйтивному коду. Недостаток же у системы всего один: привязанность к x86.

Источники

  1. Thesis: Device-Transparent Personal Storage [Электронный ресурс]: Alpaca: Extensible Authorization for Distributed Services / Дата обращения: 25.05.2016. — Режим доступа: https://pdos.csail.mit.edu/papers/alpaca-ccs07.pdf
  2. Wikipedia [Электронный ресурс]: Vx32 / Дата обращения: 25.05.2016. — Режим доступа: https://en.wikipedia.org/wiki/Vx32
  3. xakep.ru [Электронный ресурс]: Обреченные на успех: самые интересные проекты, представленные на UNIX-конференциях / Дата обращения: 25.05.2016. — Режим доступа: https://xakep.ru/2009/07/01/48721/
  4. Article of Bryan Ford and Russ Cox [Электронный ресурс]: Vx32: Lightweight, User-level Sandboxing on the x86 / Дата обращения: 25.05.2016. — Режим доступа: https://pdos.csail.mit.edu/papers/vx32:usenix08/