Microsoft het 'n implementering van eBPF vir Windows voorberei

Microsoft het 'n implementering van die eBPF-substelsel vir Windows gepubliseer wat jou toelaat om arbitrêre hanteerders te laat loop wat op die bedryfstelselkernvlak werk. eBPF bied 'n greepkode-tolk wat in die kern ingebou is, wat jou toelaat om gebruikersruimte-laaibare netwerkbedrywighede-hanteerders te skep, toegang te beheer en stelsels te monitor. eBPF is sedert vrystelling 3.18 by die Linux-kern ingesluit en stel jou in staat om inkomende/uitgaande netwerkpakkies te verwerk, pakkies aan te stuur, bandwydte te beheer, stelseloproepe te onderskep, toegangsbeheer en opsporing uit te voer. Danksy die gebruik van JIT-samestelling, word greepkode onmiddellik in masjieninstruksies vertaal en uitgevoer met die uitvoering van saamgestelde kode. Die bronkode vir eBPF vir Windows is oopbron onder die MIT-lisensie.

eBPF vir Windows kan met bestaande eBPF-nutsgoed gebruik word en bied 'n generiese API wat vir Linux eBPF-toepassings gebruik word. Die projek laat onder andere toe om kode wat in C geskryf is in eBPF-greepkode saam te stel deur gebruik te maak van die gewone Clang-gebaseerde eBPF-samesteller en eBPF-hanteerders wat reeds vir Linux geskep is bo-op die Windows-kern te laat loop, wat 'n spesiale versoenbaarheidslaag verskaf en die standaard Libbpf API ondersteun vir verenigbaarheid met toepassings wat met eBPF-programme interaksie het. Dit sluit lae in wat Linux-agtige hakies vir XDP (eXpress Data Path) en socket bind verskaf, wat toegang tot die netwerkstapel en Windows-netwerkbestuurders onttrek. Van die planne word opgemerk dat dit volle verenigbaarheid op die bronkodevlak met tipiese Linux eBPF-hanteerders bied.

Microsoft het 'n implementering van eBPF vir Windows voorberei

Die belangrikste verskil in die implementering van eBPF vir Windows is die gebruik van 'n alternatiewe greepkode-verifieerder, oorspronklik voorgestel deur VMware-werknemers en navorsers van Kanadese en Israeliese universiteite. Die verifieerder loop in 'n aparte geïsoleerde proses in gebruikersruimte en word gebruik voor die uitvoering van BPF-programme om foute op te spoor en moontlike kwaadwillige aktiwiteit te blokkeer.

eBPF vir Windows gebruik 'n statiese ontledingsmetode gebaseer op Abstrakte Interpretasie vir verifikasie, wat, in vergelyking met die eBPF vir Linux-verifieerder, 'n laer vals positiewe koers het, lusanalise ondersteun en goeie skaalbaarheid bied. Die metode neem baie tipiese uitvoeringspatrone in ag wat verkry is uit die ontleding van bestaande eBPF-programme.

Na verifikasie word die greepkode na 'n kernvlak-interpreter gestuur of deur 'n JIT-samesteller gestuur, gevolg deur die uitvoering van die resulterende masjienkode met kernregte. Om eBPF-hanteerders op kernvlak te isoleer, word die HVCI (HyperVisor-enforced Code Integrity) meganisme gebruik, wat virtualiseringsinstrumente gebruik om prosesse in die kern te beskerm en verifikasie van die integriteit van die uitvoerbare kode deur digitale handtekening verskaf. Die beperking van HVCI is die vermoë om slegs geïnterpreteerde eBPF-programme te verifieer en die onmoontlikheid om dit in samewerking met JIT te gebruik ('n keuse word gegee - óf prestasie óf bykomende beskerming).

Bron: opennet.ru

Voeg 'n opmerking