Microsoft ha preparado la implementación de eBPF para Windows.

La empresa Microsoft ha publicado una implementación del subsistema eBPF para Windows, que permite ejecutar controladores arbitrarios que operan a nivel del núcleo del sistema operativo. eBPF proporciona un intérprete de bytecode incorporado en el núcleo, que permite crear controladores de operaciones de red que se cargan desde el espacio de usuario, controlar el acceso y rastrear el rendimiento del sistema. eBPF se incluye en el núcleo de Linux desde la versión 3.18 y permite procesar paquetes de red entrantes/salientes, redirigir paquetes, gestionar el ancho de banda, interceptar llamadas al sistema, controlar el acceso y realizar trazas. Gracias a la aplicación de la compilación JIT, el bytecode se traduce en tiempo real a instrucciones de máquina, ejecutándose con el rendimiento de un código compilado. Los códigos fuente de eBPF para Windows están disponibles bajo la licencia MIT.

eBPF para Windows puede ser utilizado con herramientas ya existentes para trabajar con eBPF y proporciona una API típica aplicada a aplicaciones eBPF en Linux. El proyecto también permite compilar el código escrito en C en bytecode eBPF mediante el compilador por defecto de eBPF basado en Clang y ejecutar los controladores eBPF ya creados para Linux sobre el núcleo de Windows, proporcionando una capa de compatibilidad especial y soportando la API estándar Libbpf para compatibilidad con aplicaciones que interactúan con programas eBPF. También se ofrecen capas que proporcionan hooks similares a Linux para XDP (eXpress Data Path) y socket bind, abstraiendo el acceso al stack de red y a los controladores de red de Windows. Entre los planes se destaca proporcionar compatibilidad total a nivel de código fuente con controladores eBPF típicos de Linux.

Microsoft ha preparado la implementación de eBPF para Windows.

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

Para la verificación en eBPF para Windows se aplica un método de análisis estático basado en la interpretación abstracta, que en comparación con el verificador eBPF para Linux muestra un nivel más bajo de falsos positivos, admite el análisis de bucles y proporciona una buena escalabilidad. El método considera múltiples patrones de ejecución típicos, obtenidos a partir del análisis de programas eBPF existentes.

Después de la verificación, el bytecode se envía a un intérprete que opera a nivel de núcleo, o se pasa a través de un compilador JIT para la ejecución del código de máquina resultante con derechos de núcleo. Para aislar los controladores eBPF a nivel de núcleo, se aplica el mecanismo HVCI (Integridad de Código Impulsada por Hipervisor), que utiliza herramientas de virtualización para proteger los procesos en el núcleo y garantizar la integridad del código ejecutado mediante firma digital. La limitación de HVCI es que solo permite la verificación de programas eBPF interpretables y no se puede utilizar junto con JIT (se debe elegir entre rendimiento o protección adicional).

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster