Microsoft heeft een implementatie van het eBPF-subsysteem gepubliceerd voor WindowseBPF maakt de uitvoering van willekeurige handlers op kernelniveau mogelijk. eBPF biedt een in de kernel geïntegreerde bytecode-interpreter, waarmee handlers voor netwerkbewerkingen, toegangscontrole en systeemmonitoring kunnen worden gecreëerd die in de gebruikersruimte kunnen worden geladen. eBPF is opgenomen in de kernel. Linux Sinds versie 3.18 maakt het de verwerking van inkomende/uitgaande netwerkpakketten, pakketomleiding, bandbreedtebeheer, systeemoproeponderschepping, toegangscontrole en tracering mogelijk. Dankzij just-in-time (JIT) compilatie wordt bytecode direct vertaald naar machine-instructies en uitgevoerd met de prestaties van gecompileerde code. eBPF-broncode voor Windows Open source onder de MIT-licentie.
eBPF voor Windows kan worden gebruikt met bestaande eBPF-tools en biedt een standaard API die wordt gebruikt voor eBPF-toepassingen. LinuxHet project biedt onder andere de mogelijkheid om in C geschreven code te compileren naar eBPF-bytecode met behulp van de standaard eBPF-compiler op basis van Clang en reeds gemaakte code uit te voeren. Linux eBPF-handlers bovenop de kernel WindowsDit biedt een speciale compatibiliteitslaag en ondersteunt de standaard Libbpf API voor compatibiliteit met applicaties die met eBPF-programma's communiceren. Het omvat lagen die zorgen voor: Linux-achtige hooks voor XDP (eXpress Data Path) en socket bind, die de toegang tot de netwerkstack en netwerkstuurprogramma's abstraheren. WindowsDe plannen omvatten het bieden van volledige compatibiliteit op broncodeniveau met standaard eBPF-handlers. Linux.

Het belangrijkste verschil in de eBPF-implementatie voor Windows De oplossing is het gebruik van een alternatieve bytecode-verificateur, oorspronkelijk voorgesteld door VMware-medewerkers en onderzoekers van Canadese en Israëlische universiteiten. De verificateur draait in een apart, geïsoleerd proces in de gebruikersruimte en wordt toegepast vóór de uitvoering van BPF-programma's om fouten te identificeren en potentiële kwaadaardige activiteiten te blokkeren.
Om in te checken in eBPF voor Windows Er wordt gebruikgemaakt van de op abstracte interpretatie gebaseerde statische analysemethode, die, in vergelijking met de eBPF-verificator, Linux De methode vertoont een lager percentage valse positieven, ondersteunt lusanalyse en garandeert een goede schaalbaarheid. Er wordt rekening gehouden met diverse typische uitvoeringspatronen die zijn verkregen door bestaande eBPF-programma's te analyseren.
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
