Microsoft heeft een eBPF-implementatie voor Windows voorbereid

Microsoft heeft een implementatie gepubliceerd van het eBPF-subsysteem voor Windows, waarmee u willekeurige handlers kunt starten die op kernelniveau van het besturingssysteem draaien. eBPF biedt een bytecode-interpreter ingebouwd in de kernel, die het mogelijk maakt om netwerkbewerkingshandlers te creëren die vanuit de gebruikersruimte worden geladen, de toegang te controleren en de werking van systemen te monitoren. eBPF is sinds release 3.18 opgenomen in de Linux-kernel en stelt u in staat inkomende/uitgaande netwerkpakketten, pakketdoorsturen, bandbreedtebeheer, onderschepping van systeemoproepen, toegangscontrole en tracering af te handelen. Dankzij het gebruik van JIT-compilatie wordt bytecode direct vertaald in machine-instructies en uitgevoerd met de prestaties van gecompileerde code. eBPF voor Windows is open source onder de MIT-licentie.

eBPF voor Windows kan worden gebruikt met bestaande eBPF-tools en biedt een generieke API die wordt gebruikt voor eBPF-applicaties op Linux. Met het project kun je onder andere in C geschreven code compileren naar eBPF-bytecode met behulp van de standaard op Clang gebaseerde eBPF-compiler en eBPF-handlers uitvoeren die al voor Linux zijn gemaakt bovenop de Windows-kernel, waardoor een speciale compatibiliteitslaag wordt geboden en de standaard Libbpf wordt ondersteund. API voor compatibiliteit met applicaties die communiceren met eBPF-programma's. Dit omvat lagen die Linux-achtige hooks bieden voor XDP (eXpress Data Path) en socket-binding, waardoor de toegang tot de netwerkstack en Windows-netwerkstuurprogramma's wordt geabstraheerd. De plannen omvatten het bieden van volledige compatibiliteit op broncodeniveau met standaard Linux eBPF-processors.

Microsoft heeft een eBPF-implementatie voor Windows voorbereid

Het belangrijkste verschil tussen de eBPF-implementatie voor Windows is het gebruik van een alternatieve bytecodeverifier, oorspronkelijk voorgesteld door VMware-medewerkers en onderzoekers van Canadese en Israëlische universiteiten. De verifier draait in een apart, geïsoleerd proces in de gebruikersruimte en wordt gebruikt voordat BPF-programma's worden uitgevoerd om fouten te identificeren en mogelijke kwaadaardige activiteiten te blokkeren.

Voor verificatie gebruikt eBPF voor Windows een statische analysemethode gebaseerd op abstracte interpretatie, die, vergeleken met de eBPF-verifier voor Linux, een lager percentage fout-positieve resultaten laat zien, lusanalyse ondersteunt en een goede schaalbaarheid biedt. De methode houdt rekening met veel typische uitvoeringspatronen die zijn verkregen uit de analyse van bestaande eBPF-programma's.

Na verificatie wordt de bytecode overgebracht naar een tolk die op kernelniveau draait, of via een JIT-compiler doorgegeven, gevolgd door uitvoering van de resulterende machinecode met kernelrechten. Om eBPF-handlers op kernelniveau te isoleren, wordt het HVCI-mechanisme (HyperVisor-enforced Code Integrity) gebruikt, dat virtualisatietools gebruikt om processen in de kernel te beschermen en bevestiging geeft van de integriteit van de uitvoerende code met behulp van een digitale handtekening. De beperking van HVCI is dat het alleen geïnterpreteerde eBPF-programma's kan verifiëren en niet kan worden gebruikt in combinatie met JIT (u kunt kiezen uit prestatie of extra beveiliging).

Bron: opennet.ru

Voeg een reactie