Microsoft predstavený nedávno prostredníctvom príspevku implementácia subsystému eBPF pre Windows ktorý umožňuje spúšťať ľubovoľné ovládače, ktoré bežia na úrovni jadra operačného systému.
eGMP poskytuje zabudovaný tlmočník bajtových kódov v jadre na vytvorenie sieťových ovládačov zaťažených užívateľským priestorom, kontroly prístupu a monitorovania systému. eBPF je súčasťou jadra Linuxu od verzie 3.18 a umožňuje spracovávať prichádzajúce / odchádzajúce sieťové pakety, preposielať pakety, riadiť šírku pásma, zachytávať systémové volania, riadiť prístup a sledovať.
Prostredníctvom kompilácie JIT sa bajtový kód prevádza za behu strojových pokynov a beží s výkonom kompilovaného kódu. EBPF pre Windows je otvorený zdroj pod licenciou MIT.
Dnes s potešením oznamujeme nový projekt open source od spoločnosti Microsoft, ktorý má umožniť fungovanie eBPF v systémoch Windows 10 a Windows Server 2016 a novších. Cieľom projektu ebpf-for-windows je umožniť vývojárom používať známe reťazce nástrojov eBPF a aplikačné programové rozhrania (API) nad rámec existujúcich verzií systému Windows. Na základe práce iných tento projekt preberá niekoľko existujúcich projektov eBPF s otvoreným zdrojovým kódom a pridáva lepidlo na ich spustenie v systéme Windows.
eBPF pre Windows možno použiť s existujúcimi nástrojmi eBPF a poskytuje všeobecné API, ktoré sa používa pre aplikácie eBPF v systéme Linux.
Najmä projekt umožňuje zostaviť kód napísaný v jazyku C do bytecode eBPF pomocou štandardného kompilátora eBPF založeného na Clangu a spustiť ovládače eBPF už postavené pre Linux na jadre systému Windows, ktorá poskytuje špeciálnu vrstvu kompatibility a podporuje štandardné rozhranie Libbpf API pre kompatibilitu s aplikáciami, ktoré interagujú s programami eBPF.
Patria sem stredné vrstvy, ktoré poskytujú väzby podobné systému Linux pre XDP (eXpress Data Path), a väzby soketov, ktoré sumarizujú prístup k sieťovému zásobníku a sieťovým ovládačom systému Windows. Cieľom plánov je poskytnúť úplnú podporu na úrovni zdrojov pre generické ovládače Linux eBPF.
Kľúčovým rozdielom v implementácii eBPF pre Windows je použitie alternatívneho kontroléra bytecode, ktorý pôvodne navrhli zamestnanci spoločnosti VMware a vedci z kanadských a izraelských univerzít.
Overovač sa spúšťa v samostatnom izolovanom procese v užívateľskom priestore a používa sa pred vykonaním programov BPF na zisťovanie chýb a blokovanie možnej škodlivej činnosti.
Na overenie, eBPF pre Windows používa metódu statickej analýzy abstraktnej interpretácie, čo, V porovnaní s eBPF Checker pre Linux vykazuje nižšiu mieru falošne pozitívnych výsledkov, podporuje analýzu slučiek a poskytuje dobrú škálovateľnosť. Metóda zohľadňuje mnoho typických výkonnostných vzorov získaných z analýzy existujúcich programov eBPF.
eBPF je známa, ale revolučná technológia, ktorá poskytuje programovateľnosť, rozšíriteľnosť a svižnosť. eBPF sa použil na prípady použitia, ako je odmietnutie ochrany služby a pozorovateľnosť.
V priebehu času sa okolo eBPF vybudoval významný ekosystém nástrojov, produktov a odborných znalostí. Aj keď bola podpora eBPF prvýkrát implementovaná v jadre Linuxu, vzrastá záujem o to, aby sa eBPF mohol používať aj v iných operačných systémoch, a tiež aby sa okrem jadra rozšírili aj démoni a služby v užívateľskom režime.
Po overení bajtový kód sa odovzdá interpretovi na úrovni jadra, alebo je odovzdaný kompilátorom JIT a nasleduje spustenie výsledného strojového kódu s právami jadra. Na izoláciu ovládačov eBPF na úrovni jadra sa používa mechanizmus HVCI (HyperVisor Enhanced Code Integrity), ktorý využíva virtualizačné nástroje na ochranu procesov v jadre a zaisťuje digitálne podpísanie integrity spusteného kódu.
Jedným obmedzením HVCI je schopnosť kontrolovať iba interpretované programy eBPF a nemožnosť ich použitia v spojení s JIT (máte na výber: dodatočný výkon alebo ochrana).
Konečne ak máte záujem dozvedieť sa viac, môžete sa poradiť nasledujúci odkaz.