Microsoft ha preparado una implementación de eBPF para Windows

Microsoft ha publicado una implementación del subsistema eBPF para Windows, que le permite ejecutar controladores arbitrarios que se ejecutan en el nivel del kernel del sistema operativo. eBPF proporciona un intérprete de código de bytes integrado en el kernel, que permite crear controladores de operaciones de red cargados desde el espacio del usuario, controlar el acceso y monitorear el funcionamiento de los sistemas. eBPF se ha incluido en el kernel de Linux desde la versión 3.18 y le permite manejar paquetes de red entrantes/salientes, reenvío de paquetes, administración de ancho de banda, interceptación de llamadas al sistema, control de acceso y rastreo. Gracias al uso de la compilación JIT, el código de bytes se traduce sobre la marcha en instrucciones de máquina y se ejecuta con el rendimiento del código compilado. eBPF para Windows es de código abierto bajo la licencia MIT.

eBPF para Windows se puede utilizar con herramientas eBPF existentes y proporciona una API genérica utilizada para aplicaciones eBPF en Linux. Entre otras cosas, el proyecto le permite compilar código escrito en C en código de bytes eBPF utilizando el compilador eBPF estándar basado en Clang y ejecutar controladores eBPF ya creados para Linux sobre el kernel de Windows, proporcionando una capa de compatibilidad especial y soportando el estándar Libbpf. API para compatibilidad con aplicaciones que interactúan con programas eBPF. Esto incluye capas que proporcionan enlaces similares a Linux para XDP (eXpress Data Path) y enlace de socket, abstrayendo el acceso a la pila de red y a los controladores de red de Windows. Los planes incluyen proporcionar compatibilidad total a nivel de código fuente con procesadores eBPF de Linux estándar.

Microsoft ha preparado una implementación de eBPF para Windows

La diferencia clave entre la implementación de eBPF para Windows es el uso de un verificador de código de bytes alternativo, propuesto originalmente por empleados e investigadores de VMware de universidades canadienses e israelíes. El verificador se ejecuta en un proceso separado y aislado en el espacio del usuario y se utiliza antes de ejecutar programas BPF para identificar errores y bloquear posibles actividades maliciosas.

Para la verificación, eBPF para Windows utiliza un método de análisis estático basado en interpretación abstracta que, en comparación con el verificador eBPF para Linux, demuestra una tasa de falsos positivos más baja, admite el análisis de bucle y proporciona una buena escalabilidad. El método tiene en cuenta muchos patrones de ejecución típicos obtenidos del análisis de programas eBPF existentes.

Después de la verificación, el código de bytes se transfiere a un intérprete que se ejecuta a nivel del kernel o se pasa a través de un compilador JIT, seguido de la ejecución del código de máquina resultante con derechos del kernel. Para aislar los controladores eBPF a nivel del kernel, se utiliza el mecanismo HVCI (HyperVisor-enforced Code Integrity), que utiliza herramientas de virtualización para proteger los procesos en el kernel y proporciona confirmación de la integridad del código en ejecución mediante una firma digital. La limitación de HVCI es que solo puede verificar programas eBPF interpretados y no puede usarse junto con JIT (puede elegir entre rendimiento o seguridad adicional).

Fuente: opennet.ru

Añadir un comentario