Microsoft подготовила реализацию eBPF для Windows

Представлен Microsoft недавно через сообщение реализация подсистемы eBPF для Windows который позволяет запускать произвольные драйверы, работающие на уровне ядра операционной системы.

eGMP предоставляет встроенный интерпретатор байт-кода в ядре для создания загружаемых пользователем сетевых драйверов, контроля доступа и системного мониторинга. eBPF был включен в ядро ​​Linux с версии 3.18 и позволяет обрабатывать входящие / исходящие сетевые пакеты, пересылать пакеты, управлять полосой пропускания, перехватывать системные вызовы, контролировать доступ и отслеживать.

Посредством JIT-компиляции байтовый код транслируется в машинные инструкции на лету и выполняется с производительностью скомпилированного кода. EBPF для Windows имеет открытый исходный код по лицензии MIT.

Сегодня мы рады объявить о новом проекте с открытым исходным кодом от Microsoft, чтобы заставить eBPF работать в Windows 10 и Windows Server 2016 и более поздних версиях. Проект ebpf-for-windows нацелен на то, чтобы дать разработчикам возможность использовать знакомые наборы инструментов eBPF и интерфейсы прикладного программирования (API) поверх существующих версий Windows. Основываясь на работе других, этот проект берет несколько существующих проектов eBPF с открытым исходным кодом и добавляет «клей», чтобы заставить их работать в Windows.

eBPF для Windows может использоваться с существующими инструментами eBPF и предоставляет общий API, который используется для приложений eBPF в Linux.

В частности, проект позволяет компилировать код, написанный на C, в байт-код eBPF с использованием стандартного компилятора eBPF на основе Clang и запустить драйверы eBPF, уже созданные для Linux, поверх ядра Windows, который обеспечивает специальный уровень совместимости и поддерживает стандартный API Libbpf для совместимости с приложениями, которые взаимодействуют с программами eBPF.

Это включает в себя промежуточные уровни, которые предоставляют Linux-подобные привязки для XDP (eXpress Data Path) и привязки сокетов, которые обобщают доступ к сетевому стеку Windows и сетевым драйверам. Планы направлены на обеспечение полной поддержки на уровне исходного кода общих драйверов Linux eBPF.

Ключевым отличием в реализации eBPF для Windows является использование альтернативного средства проверки байт-кода, первоначально предложенного сотрудниками VMware и исследователями из канадских и израильских университетов.

Верификатор запускается в отдельном изолированном процессе в пространстве пользователя и используется до выполнения программ BPF для обнаружения ошибок и блокирования потенциально вредоносной активности.

Для проверки, eBPF для Windows использует метод статического анализа абстрактной интерпретации., какие, По сравнению с верификатором eBPF для Linux, он демонстрирует меньшую частоту ложных срабатываний., поддерживает анализ петель и обеспечивает хорошую масштабируемость. Этот метод учитывает многие типичные шаблоны производительности, полученные в результате анализа существующих программ eBPF.

eBPF - это хорошо известная, но революционная технология, обеспечивающая программируемость, расширяемость и гибкость. eBPF применялся для таких случаев использования, как отказ в обслуживании и возможность наблюдения.

Со временем вокруг eBPF сформировалась значительная экосистема инструментов, продуктов и опыта. Хотя поддержка eBPF была впервые реализована в ядре Linux, растет интерес к разрешению использования eBPF в других операционных системах, а также к расширению демонов и сервисов пользовательского режима в дополнение к ядру.

После проверки байт-код передается интерпретатору уровня ядра, или он передается через JIT-компилятор с последующим запуском полученного машинного кода с правами ядра. Для изоляции драйверов eBPF на уровне ядра используется механизм HVCI (HyperVisor Enhanced Code Integrity), который использует инструменты виртуализации для защиты процессов в ядре и гарантирует, что целостность исполняемого кода имеет цифровую подпись.

Одним из ограничений HVCI является возможность проверки только интерпретируемых программ eBPF и невозможность их использования вместе с JIT (у вас есть выбор: дополнительная производительность или защита).

В конце концов если вам интересно узнать об этом больше, вы можете проконсультироваться по следующей ссылке.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

bool (истина)