Microsoft запустила новый проект с открытым исходным кодом, цель которого - добавить в Windows преимущества eBPF - технологии, впервые реализованной в Linux, которая позволяет прикреплять программы как к ядру, так и к пользовательским приложениям. Технология eBPF позволяет программе, поставляемой пользователем, запускаться изолированно внутри ядра операционной системы при определенном событии, таких как системный вызов, вход / выход функции, точках трассировки ядра или сетевых событиях.
Присоединение к определенному хуку и работа на таком низком уровне дает программе eBPF возможность проверять в реальном времени данные. По этим причинам программы eBPF особенно полезны для задач фильтрации, мониторинга и анализа, которые имеют применение в области сетей и безопасности. Они также подходят для целей отладки в действующих системах, поскольку программы eBPF могут обращаться к структуре данных ядра, и нет необходимости перекомпилировать ядро для их запуска.
Архитектурный вид проекта показывает, что программа eBPF может использовать цепочки инструментов для генерации байт-кода eBPF на различных языках, поэтому любое приложение может использовать его и даже загружать в инструмент командной строки Windows Netsh с помощью общей библиотеки.
Как видно на изображении выше, Microsoft использует верификатор PREVAIL eBPF, размещенный в защищенном процессе пользовательского режима, и uBPF IO Visor, работающий в контексте выполнения режима ядра, для проверки легитимности полученного байт-кода и выполнения программы eBPF поверх Windows.
Microsoft объясняет, что «программы eBPF, установленные в контексте выполнения режима ядра, могут подключаться к различным перехватчикам для обработки событий и вызова различных вспомогательных API-интерфейсов, предоставляемых оболочкой eBPF, которая внутренне обертывает общедоступные API-интерфейсы ядра Windows, позволяя использовать eBPF в существующих версиях Windows".
В настоящее время доступно только два перехватчика - XDP и привязка к сокету - оба связаны с сетью. Однако Microsoft ожидает, что в будущем будет добавлено больше, чтобы охватить и другие области.
Проект ebpf-for-windows все еще находится в начальной стадии, и его долгосрочная цель - «донести возможности eBPF до пользователей Windows» и стать частью более широкого сообщества eBPF, которое также будет направлять его развитие.