Aunque hace años hubo mucha rivalidad entre Windows y Linux, hoy en día ambos sistemas operativos están más ligados de lo que nunca hubiésemos imaginado. Y no solo porque Microsoft esté lanzando sus programas en este sistema operativo, porque tengamos un subsistema específico para instalar un Linux real dentro de Windows o porque cada vez tenga más proyectos de código abierto, sino porque cada vez son más las funciones propias del Kernel de Linux que pasan a formar parte del sistema operativo de Microsoft. Y una de las próximas en hacerlo será eBPF.
eBPF es una función que lleva tiempo formando parte del núcleo de Linux. Y, los usuarios de Windows 10, pueden disponer de ella gracias al Subsistema de Windows para Linux. Sin embargo, Microsoft está trabajando para implementar esta función, de forma nativa, dentro del núcleo de su propio sistema operativo de manera que los usuarios, desarrolladores e investigadores pueden disfrutar de ella sin necesidad de virtualizar.
¿Qué es eBPF?
eBPF, Extended Berkeley Packet Filter, es una tecnología que forma parte del propio Kernel de Linux desde la versión 3.15. Inicialmente fue creada como una especie de firewall que se ejecutaba dentro de una máquina virtual. Sin embargo, con el tiempo, ha ido adaptándose a las nuevas tecnologías, pudiendo ejecutarse dentro de un sandbox y hacer mucho más de lo que hace un sencillo cortafuegos. Gracias a esta tecnología vamos a poder hacer que cualquier programa lanzado por un usuario se ejecute de manera aislada dentro del propio núcleo del sistema operativo. Para ello, esta función crea un evento específico, el cual cuenta con una llamada al sistema, funciones de entrada y salida y puntos de rastreo.
Todo lo que se ejecuta dentro de esta función puede ser inspeccionado por el sistema operativo, o por otros programas, para asegurarnos, en tiempo real, que los datos no han sido alterados por actividades maliciosas.
En otras palabras, esta nueva función no solo refuerza la seguridad de los programas que se ejecutan dentro del Kernel de Windows, sino que también facilitará la tarea de depuración en vivo, permitiendo a los desarrolladores acceder a las estructuras de datos del kernel en tiempo real sin tener que volver a compilar el núcleo del sistema. Además, también facilita las tareas de filtrado, análisis y monitorización que tienen ciertos programas relacionados con los campos de redes y seguridad, y permitirá a los desarrolladores usar funciones y APIs familiares para otros sistemas operativos.
Cómo llegará esta función a Windows 10
Microsoft deja claro que el eBPF que va a llegar a Windows 10 no es un fork tal cual de la función de Linux. Sí es verdad que se inspira en ella, y tiene el mismo nombre, pero el desarrollo es totalmente independiente. Además, es importante destacar que esta nueva función no hará compatibles los programas de Linux con Windows 10, sino que se centra en una compatibilidad de más bajo nivel, a nivel de API.
Por ahora, tan solo funcionan dos tipos de enlaces, XDP y SOCKET, ambos relacionados con las redes. Sin embargo, en un futuro Microsoft quiere que eBPF incluya otros tipos de enlaces para cubrir otras áreas del sistema operativo.
El desarrollo de esta herramienta aún está en una fase muy temprana del desarrollo y tardaremos bastante tiempo en verla en nuestros ordenadores. Microsoft tiene previsto llevarla tanto al Windows 10 de escritorio como a las ediciones Server del sistema operativo.
Si somos programadores, ya podemos empezar a crear nuestros propios programas eBPF siguiendo la guía que podemos encontrar aquí.