Microsoft apporte eBPF sur Windows dans le cadre d'un projet open source
mar, 11/05/2021 - 12:15
eBPF est une technologie permettant d'exécuter des programmes au sein du noyau Linux, dans un environnement confiné, sans changer le code source du noyau ni charger de modules.
Grâce à cette capacité à programmer le noyau, les composants logiciels peuvent s'appuyer sur le système existant. Ils viennent le perfectionner et l'enrichir en fonctionnalités, en évitant de rajouter des couches d'abstraction, mais sans compromettre l'efficacité ou la sureté du système.
eBPF permet d'observer et de comprendre tous les appels système, et de se placer au niveau des paquets et des sockets pour obtenir une vision de toutes les opérations réseau. La possibilité d'attacher des programmes eBPF sur des « trace points » et des « probe points », que ce soit dans le noyau ou dans les applications utilisateurs, apporte une dimension nouvelle en termes de visibilité. Il est possible d'en apprendre plus sur eBPF sur son site officiel ebpf.io
Microsoft vient d'annoncer un nouveau projet open source Microsoft pour faire fonctionner eBPF sur Windows 10 et Windows Server 2016 et versions ultérieures. Le projet ebpf-for-windows vise à permettre aux développeurs d'utiliser des chaînes d'outils eBPF et des interfaces de programmation d'application (API) familières en plus des versions existantes de Windows. S'appuyant sur le travail des autres, ce projet prend plusieurs projets open source eBPF existants et ajoute la «colle» pour les faire fonctionner sous Windows.
Comme le montre le diagramme ci-dessus, les chaînes d'outils eBPF existantes telles que clang peuvent être utilisées pour générer du bytecode eBPF à partir du code source dans différents langages. Le bytecode résultant peut ensuite être utilisé par n'importe quelle application ou manuellement via l'outil de ligne de commande Windows netsh.
La bibliothèque envoie le bytecode eBPF à un vérificateur statique qui est hébergé dans un processus protégé en mode utilisateur, qui est un environnement de sécurité Windows qui permet à un composant du noyau de faire confiance à un démon en mode utilisateur signé par une clé.
Les programmes eBPF installés dans le contexte d'exécution en mode noyau peuvent s'attacher à divers hooks pour gérer les événements et appeler diverses API d'assistance exposées par le shim eBPF, qui encapsule en interne les API du noyau Windows publiques, permettant l'utilisation d'eBPF sur les versions existantes de Windows.
Le projet eBPF pour Windows n'est pas un fork de eBPF. Il exploite des projets open source existants, avec l'intention de fournir la compatibilité du code source pour le code qui utilise des hooks et des helpers communs qui s'appliquent à tous les écosystèmes du système d'exploitation.
ebpf-for-windows est un logiciel libre sous licence MIT disponible sur GitHub. Le projet n'en étant qu'à ses tous débuts, Microsoft invite les personnes intéressées à y contribuer.