Microsoft har förberett en implementering av eBPF för Windows

Microsoft presenterade nyligen genom ett inlägg implementeringen av eBPF-delsystemet för Windows som låter dig köra godtyckliga drivrutiner som körs på kärnnivån i operativsystemet.

eGMP tillhandahåller en integrerad bytekodtolkare i kärnan för att skapa nätverkskontroller laddade med användarutrymme, åtkomstkontroll och systemövervakning. eBPF har inkluderats i Linux-kärnan sedan version 3.18 och Det låter dig behandla inkommande/utgående nätverkspaket, vidarebefordra paket, styra bandbredd, avlyssna systemsamtal, kontrollera åtkomst och spåra.

Genom JIT-kompilering översätts bytekod till maskininstruktioner i farten och exekveras med prestanda för den kompilerade koden. EBPF för Windows är öppen källkod under MIT-licensen.

Idag är vi glada över att kunna presentera ett nytt öppen källkodsprojekt från Microsoft för att få eBPF att fungera på Windows 10 och Windows Server 2016 och senare. ebpf-for-windows-projektet syftar till att göra det möjligt för utvecklare att använda välbekanta eBPF-verktygskedjor och applikationsprogrammeringsgränssnitt (API) ovanpå befintliga versioner av Windows. Baserat på andras arbete tar detta projekt flera befintliga eBPF-projekt med öppen källkod och lägger till "limmet" för att få dem att köras på Windows.

eBPF för Windows kan användas med befintliga eBPF-verktyg och tillhandahåller ett generiskt API som används för eBPF-applikationer på Linux.

I synnerhet projektet låter dig kompilera kod skriven i C till bytecode eBPF med den standard Clang-baserade eBPF-kompilatorn och kör eBPF-drivrutiner byggda för Linux ovanpå Windows-kärnan, som tillhandahåller ett speciellt kompatibilitetsskikt och stöder standard Libbpf API för kompatibilitet med applikationer som interagerar med eBPF-program.

Detta inkluderar mellanlager som tillhandahåller Linux-liknande bindningar för XDP (eXpress Data Path) och socketbindningar som sammanfattar åtkomst till Windows nätverksstack och nätverksdrivrutiner. Planerna syftar till att tillhandahålla fullständig kompatibilitet på källnivå med generiska Linux eBPF-drivrutiner.

Den viktigaste skillnaden i eBPF-implementeringen för Windows är användningen av en alternativ bytecode-verifierare, som ursprungligen föreslagits av VMware-anställda och forskare vid kanadensiska och israeliska universitet.

Verifieraren startas i en separat sandlådeprocess i användarutrymmet och används innan BPF-program körs för att upptäcka fel och blockera potentiell skadlig aktivitet.

För validering, eBPF för Windows använder den statiska analysmetoden för abstrakt tolkning, Vad, Jämfört med eBPF-verifieraren för Linux visar den en lägre falsk positiv frekvens, stödjer loopanalys och ger god skalbarhet. Metoden tar hänsyn till många typiska prestandamönster som erhållits från analysen av befintliga eBPF-program.

eBPF är en välbekant men revolutionerande teknologi som ger programmerbarhet, utbyggbarhet och smidighet. eBPF har använts för användningsfall som skydd mot tjänsteförbud och observerbarhet.

Med tiden har ett betydande ekosystem av verktyg, produkter och expertis byggts upp kring eBPF. Även om stöd för eBPF först implementerades i Linux-kärnan, har det funnits ett ökande intresse för att tillåta eBPF att användas på andra operativsystem och även för att utöka användarlägestjänster och demoner utanför kärnan.

Efter verifiering, bytekoden skickas till kärnnivåtolken, eller så skickas den genom JIT-kompilatorn, följt av exekvering av den resulterande maskinkoden med kärnrättigheter. För att isolera eBPF-drivrutiner på kärnnivån används HVCI-mekanismen (HyperVisor Enforced Code Integrity), som använder virtualiseringsverktyg för att skydda processer i kärnan och säkerställer att integriteten hos exekverad kod signeras digitalt.

En begränsning av HVCI är möjligheten att verifiera endast tolkade eBPF-program och oförmågan att använda dem i samband med JIT (du har ett val: prestanda eller extra skydd).

Slutligen om du är intresserad av att veta mer om det, du kan rådfråga följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.