Categories: Open SourceSoftware

eBPF kommt für Windows 10 und Windows Server

Der Berkeley Packet Filter eBPF lässt sich unter Windows bereits mit dem Windows Subsystem für Linux 2.0 verwenden. Aber eBPF nativ auf Windows funktioniert bisher noch nicht. Das wird sich aber bald ändern. Microsoft hat ein Open-Source-Projekt gestartet, um eBPF auf Windows 10 und Windows Server 2016 und später zum Laufen zu bringen.

Dies ist das ebpf-for-windows-Projekt. Damit können Windows-Entwickler eBPF-Toolchains und Application Programming Interfaces (APIs) zusätzlich zu bestehenden Windows-Versionen nutzen. Dies wird nicht einfach sein. Dennoch sollte es möglich sein, indem man auf die Arbeit anderer aufbaut. Dieses Projekt nimmt mehrere existierende eBPF-Open-Source-Projekte und fügt den Klebstoff hinzu, um sie unter Windows laufen zu lassen.

Warum sollten Sie das tun wollen? Linux-Entwickler kennen die Antwort darauf bereits, aber Windows-Programmierer wahrscheinlich nicht.

Zunächst begann alles mit einem Firewall-Programm: Dem jahrzehntealten Berkeley Packet Filter (BPF). Dieser war für das Erfassen und Filtern von Netzwerkpaketen auf einer registerbasierten virtuellen Maschine (VM) gedacht. Das war nützlich. Aber im Laufe der Jahre erkannte Alexei Starovoitov, Linux-Kernel-Entwickler und Software-Ingenieur bei Facebook, dass eine Aktualisierung des BPF für die Arbeit mit modernen Prozessoren, der erweiterte BPF (eBPF), um vom Benutzer bereitgestellte Programme innerhalb des Kernels auszuführen, ihn viel leistungsfähiger machen würde. Sie wurde mit dem Linux-Kernel 3.15 eingeführt und Programmierer begannen schnell, sie für alle Arten von Programmen zu verwenden.

Heute ist eBPF immer noch sehr nützlich für die Filterung, Analyse und Verwaltung von Netzwerken, aber es hat weitaus mehr Aufgaben. EBPF wird auch für die Filterung von Systemaufrufen und die Verfolgung von Prozesskontexten verwendet. Kurz gesagt, es ist zu einem Schweizer Taschenmesser für Programmierverfolgung, Systemprofilierung und das Sammeln und Aggregieren von benutzerdefinierten Metriken auf niedriger Ebene geworden. Auf einer höheren Ebene bedeutet dies, dass eBPF die Grundlage von Sicherheitsprogrammen wie Cilium, Falco und Tracee, Kubernetes-Beobachtungsprogrammen wie Hubble und Pixie und natürlich Toolchains wie Clang geworden ist.

In Windows wird es folgendermaßen funktionieren: Bestehende eBPF-Toolchains werden eBPF-Bytecode aus Quellcode in verschiedenen Sprachen generieren. Dieser Bytecode kann dann von jeder Anwendung oder manuell über das Windows-Kommandozeilen-Tool netsh verwendet werden. Dies wird mit einer Shared Library geschehen, die Libbpf-APIs offenlegt. Diese ist noch in Arbeit.

Die Bibliothek wird dann den eBPF-Bytecode an den statischen PREVAIL-Prüfer senden. Dieser wiederum wird in einem geschützten Prozess im Benutzermodus gehostet, was eine Windows-Sicherheitsumgebung ist, die es einer Kernel-Komponente erlaubt, einem Daemon im Benutzermodus zu vertrauen, der von einem vertrauenswürdigen Schlüssel signiert ist. Wenn der Bytecode alle Sicherheitsprüfungen des Verifiers besteht, kann der Bytecode entweder in den uBPF-Interpreter geladen werden, der in einem Windows-Ausführungskontext im Kernel-Modus läuft, oder er wird vom uBPF-Just-in-Time-Compiler (JIT) kompiliert und der native Code wird in den Ausführungskontext im Kernel-Modus geladen. Der uBPF-Schritt basiert auf einer von Apache lizenzierten Bibliothek zur Ausführung von eBPF-Programmen.

Dann werden die eBPF-Programme, die im Kernel-Mode-Ausführungskontext laufen, an Hooks angehängt, die Ereignisse behandeln und Helfer-APIs aufrufen. Diese werden über den eBPF-Shim offengelegt. Dieser Shim umhüllt öffentliche Windows-Kernel-APIs. Dadurch kann eBPF unter Windows verwendet werden. Bislang wurden zwei Hooks (XDP und Socket-Bind) hinzugefügt. Andere Hooks, und nicht nur Netzwerk-Hooks, werden hinzugefügt werden.

Dies ist in keiner Weise ein eBPF-Fork. Es wird lediglich eine Windows-spezifische Hosting-Umgebung für eBPF hinzugefügt.

Dies soll Windows-Entwicklern ermöglichen, eBPF-Programme zu verwenden, die Quellcode-kompatibel zwischen Windows und Linux sein werden. Einiges davon wird durch die Verwendung der Libbpf-APIs erreicht werden

Natürlich ist mancher eBPF-Code sehr spezifisch für Linux — zum Beispiel, wenn er Linux-interne Datenstrukturen verwendet. Aber viele andere APIs und Hooks werden plattformübergreifend funktionieren.

ZDNet.de Redaktion

Recent Posts

Studie: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

2 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

3 Tagen ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

3 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

3 Tagen ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

4 Tagen ago

Hacker missbrauchen Google Calendar zum Angriff auf Postfächer

Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…

5 Tagen ago