Microsoft hat eine Implementierung von eBPF für Windows vorbereitet.

Das Unternehmen Microsoft hat die Implementierung des eBPF-Subsystems für Windows veröffentlicht, das die Ausführung beliebiger Handler ermöglicht, die auf der Ebene des Betriebssystemkerns arbeiten. eBPF bietet einen im Kernel integrierten Bytecode-Interpreter, der es ermöglicht, von Benutzerräumen ladbare Handler für Netzwerkoperationen zu erstellen, den Zugriff zu steuern und die Systemaktivitäten zu überwachen. eBPF ist seit Version 3.18 Teil des Linux-Kernels und erlaubt die Verarbeitung ein- und ausgehender Netzwerkpakete, das Umleiten von Paketen, die Verwaltung der Bandbreite, das Abfangen von Systemaufrufen, die Zugriffskontrolle und das Durchführen von Tracing. Durch die Anwendung der JIT-Kompilierung wird der Bytecode zur Laufzeit in Maschinenbefehle übersetzt und mit der Leistung von kompiliertem Code ausgeführt. Die Quelltexte von eBPF für Windows sind unter der MIT-Lizenz offen.

eBPF für Windows kann mit bereits bestehenden Tools zur Arbeit mit eBPF verwendet werden und bietet eine standardisierte API, die für eBPF-Anwendungen unter Linux verwendet wird. Das Projekt ermöglicht es auch, in C geschriebene Codes in eBPF-Bytecode zu kompilieren, unter Verwendung des Standard-eBPF-Compilers auf Basis von Clang, und bestehende eBPF-Handler für Linux direkt auf dem Windows-Kernel auszuführen, indem eine spezielle Kompatibilitätsschicht bereitgestellt wird und die Standard-API Libbpf für die Interaktion mit eBPF-Anwendungen unterstützt wird. Darüber hinaus werden Schichten angeboten, die Linux-ähnliche Hooks für XDP (eXpress Data Path) und Socket-Bind bereitstellen und somit den Zugriff auf den Netzwerk-Stack und die Netzwerktreiber von Windows abstrahieren. Unter den Plänen ist eine vollständige Quellkompatibilität mit typischen eBPF-Handlern unter Linux vorgesehen.

Microsoft hat eine Implementierung von eBPF für Windows vorbereitet.

Ein entscheidendes Merkmal der Implementierung von eBPF für Windows ist die Verwendung eines alternativen Bytecode-Verifiers, der ursprünglich von Mitarbeitern von VMware und Forschern aus kanadischen und israelischen Universitäten vorgeschlagen wurde. Der Verifier wird in einem separaten isolierten Prozess im Benutzermodus ausgeführt und wird vor der Ausführung von BPF-Programmen eingesetzt, um Fehler zu identifizieren und potenziell schädliche Aktivitäten zu blockieren.

Zur Überprüfung in eBPF für Windows wird eine Methode der statischen Analyse basierend auf abstrakter Interpretation (Abstract Interpretation) angewendet, die im Vergleich zum eBPF-Überprüfer für Linux ein niedrigeres Maß an Fehlalarmen aufweist, die Analyse von Schleifen unterstützt und eine gute Skalierbarkeit gewährleistet. Die Methode berücksichtigt zahlreiche typische Ausführungsmuster, die auf der Analyse bestehender eBPF-Programme basieren.

Nach der Überprüfung wird der Bytecode an einen Interpreter übertragen, der im Kernel-Modus arbeitet, oder über einen JIT-Compiler geleitet, gefolgt von der Ausführung des resultierenden Maschinencodes mit Kernel-Rechten. Um die eBPF-Handler im Kernel-Modus zu isolieren, wird der HVCI-Mechanismus (HyperVisor-enforced Code Integrity) eingesetzt, der Virtualisierungsmittel zum Schutz der Prozesse im Kernel verwendet und die Integrität des ausgeführten Codes durch digitale Signaturen bestätigt. Eine Einschränkung von HVCI besteht darin, dass nur interpretierbare eBPF-Programme verifiziert werden können und es nicht in Kombination mit JIT verwendet werden kann (es steht die Wahl zwischen Leistung und zusätzlichem Schutz zur Verfügung).

Quelle: opennet.ru

60GB SSD 8Gb DDR4