Microsoft har udarbejdet en implementering af eBPF til Windows

Microsoft har udgivet en implementering af eBPF-undersystemet til Windows, der giver dig mulighed for at køre vilkårlige handlere, der fungerer på operativsystemets kerneniveau. eBPF leverer en bytekode-fortolker indbygget i kernen, der giver dig mulighed for at oprette brugerplads-loadable netværksoperationshandlere, kontrollere adgang og overvåge systemer. eBPF har været inkluderet i Linux-kernen siden release 3.18 og giver dig mulighed for at behandle indgående/udgående netværkspakker, videresende pakker, styre båndbredde, opsnappe systemopkald, adgangskontrol og udføre sporing. Takket være brugen af ​​JIT-kompilering bliver bytekode oversat til maskininstruktioner i farten og eksekveret med udførelsen af ​​kompileret kode. Kildekoden til eBPF til Windows er open source under MIT-licensen.

eBPF til Windows kan bruges med eksisterende eBPF-værktøjer og giver en generisk API, der bruges til Linux eBPF-applikationer. Projektet giver blandt andet mulighed for at kompilere kode skrevet i C ind i eBPF bytecode ved hjælp af den almindelige Clang-baserede eBPF compiler og køre eBPF handlere, der allerede er oprettet til Linux oven på Windows kernen, hvilket giver et særligt kompatibilitetslag og understøtter standard Libbpf API for kompatibilitet med applikationer, der interagerer med eBPF-programmer. Dette inkluderer lag, der giver Linux-lignende hooks til XDP (eXpress Data Path) og socket-binding, der abstraherer adgang til netværksstakken og Windows-netværksdrivere. Af planerne bemærkes leveringen af ​​fuld kompatibilitet på kildekodeniveau med typiske Linux eBPF-handlere.

Microsoft har udarbejdet en implementering af eBPF til Windows

Den vigtigste forskel i implementeringen af ​​eBPF til Windows er brugen af ​​en alternativ bytekode-verifikator, oprindeligt foreslået af VMware-medarbejdere og forskere fra canadiske og israelske universiteter. Verifikatoren kører i en separat isoleret proces i brugerrummet og bruges før udførelse af BPF-programmer for at opdage fejl og blokere mulig ondsindet aktivitet.

eBPF til Windows bruger en statisk analysemetode baseret på abstrakt fortolkning til verifikation, som sammenlignet med eBPF til Linux-verifikator har en lavere falsk positiv rate, understøtter loop-analyse og giver god skalerbarhed. Metoden tager højde for mange typiske udførelsesmønstre opnået fra analysen af ​​eksisterende eBPF-programmer.

Efter verificering sendes bytekoden til en fortolker på kerneniveau eller sendes gennem en JIT-kompiler, efterfulgt af udførelse af den resulterende maskinkode med kernerettigheder. For at isolere eBPF-handlere på kerneniveau bruges HVCI-mekanismen (HyperVisor-enforced Code Integrity), som bruger virtualiseringsværktøjer til at beskytte processer i kernen og giver verifikation af den eksekverbare kodes integritet ved hjælp af digital signatur. Begrænsningen ved HVCI er muligheden for kun at verificere fortolkede eBPF-programmer og umuligheden af ​​at bruge det i forbindelse med JIT (et valg er givet - enten ydeevne eller ekstra beskyttelse).

Kilde: opennet.ru

Tilføj en kommentar