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

Вторник, 11 мая 2021 г.

Следите за нами в ВКонтакте, Facebook'e и Twitter'e

Компания Microsoft опубликовала реализацию подсистемы eBPF для Windows, позволяющую запускать произвольные обработчики, работающие на уровне ядра операционной системы. eBPF предоставляет встроенный в ядро интерпретатор байткода, дающий возможность создавать загружаемые из пространства пользователя обработчики сетевых операций, контролировать доступ и отслеживать работу систем. eBPF включён в состав ядра Linux начиная с выпуска 3.18 и позволяет обрабатывать входящие/исходящие сетевые пакеты, перенаправлять пакеты, управлять пропускной способностью, перехватывать системные вызовы, контролировать доступ и осуществлять трассировку. Благодаря применению JIT-компиляции, байткод на лету транслируется в машинные инструкции и выполняется с производительностью скомпилированного кода. Исходные тексты eBPF для Windows открыты под лицензией MIT.

eBPF для Windows может применяться с уже существующими инструментами для работы eBPF и предоставляет типовой API, применяемый для eBPF-приложений в Linux. В том числе проект позволяет компилировать написанный на языке Си код в байткод eBPF при помощи штатного компилятора eBPF на базе Clang и запускать уже созданные для Linux обработчики eBPF поверх ядра Windows, предоставляя специальную прослойку совместимости и поддерживая штатный API Libbpf для совместимости c приложениями, взаимодействующими с программами eBPF. В том числе предлагаются прослойки, предоставляющие Linux-подобные hook-и для XDP (eXpress Data Path) и socket bind, абстрагирующие доступ к сетевому стеку и сетевым драйверам Windows. Из планов отмечается предоставление полноценной совместимости на уровне исходных текстов с типовыми eBPF-обработчиками Linux.



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

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

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

Источник: http://www.opennet.ru/opennews/art.shtml? num=55127

Следите за нами в ВКонтакте, Facebook'e и Twitter'e


Просмотров: 318
Рубрика: Hi-Tech


Архив новостей / Экспорт новостей

Ещё новости по теме:

RosInvest.Com не несет ответственности за опубликованные материалы и комментарии пользователей. Возрастной цензор 16+.

Ответственность за высказанные, размещённую информацию и оценки, в рамках проекта RosInvest.Com, лежит полностью на лицах опубликовавших эти материалы. Использование материалов, допускается со ссылкой на сайт RosInvest.Com.

Архивы новостей за: 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003