Microsoft hat eine Implementierung von eBPF für Windows vorbereitet

Microsoft hat eine Implementierung des eBPF-Subsystems für Windows veröffentlicht, mit der Sie beliebige Handler ausführen können, die auf der Kernelebene des Betriebssystems funktionieren. eBPF bietet einen in den Kernel integrierten Bytecode-Interpreter, mit dem Sie im Benutzerbereich ladbare Netzwerkbetriebshandler erstellen, den Zugriff steuern und Systeme überwachen können. eBPF ist seit Release 3.18 im Linux-Kernel enthalten und ermöglicht die Verarbeitung eingehender/ausgehender Netzwerkpakete, die Weiterleitung von Paketen, die Steuerung der Bandbreite, das Abfangen von Systemaufrufen, die Zugriffskontrolle und die Durchführung von Tracing. Dank der Verwendung der JIT-Kompilierung wird Bytecode im laufenden Betrieb in Maschinenanweisungen übersetzt und mit der Leistung von kompiliertem Code ausgeführt. Der Quellcode für eBPF für Windows ist Open Source unter der MIT-Lizenz.

eBPF für Windows kann mit vorhandenen eBPF-Tools verwendet werden und bietet eine generische API, die für Linux-eBPF-Anwendungen verwendet wird. Unter anderem ermöglicht das Projekt das Kompilieren von in C geschriebenem Code in eBPF-Bytecode mithilfe des regulären Clang-basierten eBPF-Compilers und das Ausführen von bereits für Linux erstellten eBPF-Handlern auf dem Windows-Kernel, wodurch eine spezielle Kompatibilitätsschicht bereitgestellt und die Standard-Libbpf-API unterstützt wird Kompatibilität mit Anwendungen, die mit eBPF-Programmen interagieren. Dazu gehören Schichten, die Linux-ähnliche Hooks für XDP (eXpress Data Path) und Socket-Bindung bereitstellen und so den Zugriff auf den Netzwerkstapel und Windows-Netzwerktreiber abstrahieren. Von den Plänen wird darauf hingewiesen, dass sie auf Quellcodeebene vollständige Kompatibilität mit typischen Linux-eBPF-Handlern bieten.

Microsoft hat eine Implementierung von eBPF für Windows vorbereitet

Der Hauptunterschied bei der Implementierung von eBPF für Windows ist die Verwendung eines alternativen Bytecode-Verifizierers, der ursprünglich von VMware-Mitarbeitern und Forschern kanadischer und israelischer Universitäten vorgeschlagen wurde. Der Verifizierer läuft in einem separaten isolierten Prozess im Benutzerbereich und wird vor der Ausführung von BPF-Programmen verwendet, um Fehler zu erkennen und mögliche böswillige Aktivitäten zu blockieren.

eBPF für Windows verwendet zur Verifizierung eine statische Analysemethode basierend auf abstrakter Interpretation, die im Vergleich zum eBPF für Linux-Verifizierer eine geringere Falsch-Positiv-Rate aufweist, Schleifenanalysen unterstützt und eine gute Skalierbarkeit bietet. Die Methode berücksichtigt viele typische Ausführungsmuster, die aus der Analyse bestehender eBPF-Programme gewonnen wurden.

Nach der Überprüfung wird der Bytecode an einen Interpreter auf Kernelebene oder durch einen JIT-Compiler übergeben, gefolgt von der Ausführung des resultierenden Maschinencodes mit Kernelrechten. Um eBPF-Handler auf Kernel-Ebene zu isolieren, wird der HVCI-Mechanismus (HyperVisor-enforced Code Integrity) verwendet, der Virtualisierungstools zum Schutz von Prozessen im Kernel verwendet und eine Überprüfung der Integrität des ausgeführten Codes durch digitale Signatur ermöglicht. Die Einschränkung von HVCI besteht in der Möglichkeit, nur interpretierte eBPF-Programme zu überprüfen, und in der Unmöglichkeit, es in Verbindung mit JIT zu verwenden (es besteht die Wahl – entweder Leistung oder zusätzlicher Schutz).

Source: opennet.ru

Kommentar hinzufügen