Microsoft a préparé une implémentation d'eBPF pour Windows

Microsoft a publié une implémentation du sous-système eBPF pour Windows, qui vous permet de lancer des gestionnaires arbitraires exécutés au niveau du noyau du système d'exploitation. eBPF fournit un interpréteur de bytecode intégré au noyau, qui permet de créer des gestionnaires d'opérations réseau chargés depuis l'espace utilisateur, de contrôler l'accès et de surveiller le fonctionnement des systèmes. eBPF est inclus dans le noyau Linux depuis la version 3.18 et vous permet de gérer les paquets réseau entrants/sortants, le transfert de paquets, la gestion de la bande passante, l'interception des appels système, le contrôle d'accès et le traçage. Grâce à l'utilisation de la compilation JIT, le bytecode est traduit à la volée en instructions machine et exécuté avec les performances du code compilé. eBPF pour Windows est open source sous licence MIT.

eBPF pour Windows peut être utilisé avec les outils eBPF existants et fournit une API générique utilisée pour les applications eBPF sous Linux. Entre autres choses, le projet vous permet de compiler du code écrit en C en bytecode eBPF à l'aide du compilateur eBPF standard basé sur Clang et d'exécuter des gestionnaires eBPF déjà créés pour Linux au-dessus du noyau Windows, fournissant une couche de compatibilité spéciale et prenant en charge le standard Libbpf. API pour la compatibilité avec les applications qui interagissent avec les programmes eBPF. Cela inclut des couches qui fournissent des hooks de type Linux pour XDP (eXpress Data Path) et la liaison de socket, abstraction faite de l'accès à la pile réseau et aux pilotes réseau Windows. Les plans incluent une compatibilité complète au niveau du code source avec les processeurs Linux eBPF standard.

Microsoft a préparé une implémentation d'eBPF pour Windows

La principale différence entre l'implémentation d'eBPF pour Windows réside dans l'utilisation d'un vérificateur de bytecode alternatif, initialement proposé par les employés de VMware et les chercheurs des universités canadiennes et israéliennes. Le vérificateur s'exécute dans un processus distinct et isolé dans l'espace utilisateur et est utilisé avant d'exécuter les programmes BPF pour identifier les erreurs et bloquer d'éventuelles activités malveillantes.

Pour la vérification, eBPF pour Windows utilise une méthode d'analyse statique basée sur l'interprétation abstraite qui, par rapport au vérificateur eBPF pour Linux, démontre un taux de faux positifs inférieur, prend en charge l'analyse en boucle et offre une bonne évolutivité. La méthode prend en compte de nombreux modèles d'exécution typiques obtenus à partir de l'analyse des programmes eBPF existants.

Après vérification, le bytecode est transféré à un interpréteur exécuté au niveau du noyau, ou transmis via un compilateur JIT, suivi de l'exécution du code machine résultant avec les droits du noyau. Pour isoler les gestionnaires eBPF au niveau du noyau, le mécanisme HVCI (HyperVisor-enforced Code Integrity) est utilisé, qui utilise des outils de virtualisation pour protéger les processus dans le noyau et fournit une confirmation de l'intégrité du code en cours d'exécution à l'aide d'une signature numérique. La limitation de HVCI est qu'il ne peut vérifier que les programmes eBPF interprétés et ne peut pas être utilisé conjointement avec JIT (vous avez le choix entre des performances ou une sécurité supplémentaire).

Source: opennet.ru

Ajouter un commentaire