Microsoft představen nedávno prostřednictvím příspěvku implementace subsystému eBPF pro Windows což vám umožňuje spouštět libovolné ovladače, které běží na úrovni jádra operačního systému.
eGMP poskytuje integrovaný bytecode interpreter v jádře k vytvoření síťových ovladačů naložených v uživatelském prostoru, kontroly přístupu a monitorování systému. eBPF je součástí jádra Linuxu od verze 3.18 a umožňuje zpracovávat příchozí / odchozí síťové pakety, přeposílat pakety, řídit šířku pásma, zachytit systémová volání, řídit přístup a sledovat.
Prostřednictvím kompilace JIT je bajtový kód za běhu přeložen do strojových pokynů a běží s výkonem kompilovaného kódu. EBPF pro Windows je otevřený zdroj pod licencí MIT.
Dnes s potěšením oznamujeme nový projekt open source od společnosti Microsoft, který má zajistit, aby eBPF fungoval ve Windows 10 a Windows Server 2016 a novějších verzích. Projekt ebpf-for-windows si klade za cíl umožnit vývojářům používat známé existující sady nástrojů eBPF a aplikační programovací rozhraní (API) nad rámec existujících verzí systému Windows. Na základě práce ostatních tento projekt přebírá několik existujících projektů eBPF s otevřeným zdrojovým kódem a přidává „lepidlo“ k jejich spuštění v systému Windows.
eBPF pro Windows lze použít se stávajícími nástroji eBPF a poskytuje obecné API, které se používá pro aplikace eBPF v systému Linux.
Zejména projekt umožňuje kompilovat kód napsaný v C do bytecode eBPF pomocí standardního kompilátoru eBPF založeného na Clangu a spusťte ovladače eBPF již postavené pro Linux na jádře Windows, který poskytuje speciální vrstvu kompatibility a podporuje standardní API Libbpf pro kompatibilitu s aplikacemi, které interagují s programy eBPF.
To zahrnuje střední vrstvy, které poskytují vazby podobné Linuxu pro XDP (eXpress Data Path) a vazby soketů, které shrnují přístup k síťovému zásobníku Windows a síťovým ovladačům. Cílem plánů je poskytnout plnou podporu na úrovni zdroje pro obecné ovladače Linux eBPF.
Klíčovým rozdílem v implementaci eBPF pro Windows je použití alternativního kontroléru bytecode, který původně navrhli zaměstnanci a vědci z VMware z kanadských a izraelských univerzit.
Ověřovatel se spouští v samostatném izolovaném procesu v uživatelském prostoru a používá se před spuštěním programů BPF k detekci chyb a blokování potenciální škodlivé aktivity.
Pro ověření, eBPF pro Windows používá metodu statické analýzy abstraktní interpretace, co, Ve srovnání s eBPF Checker pro Linux vykazuje nižší míru falešně pozitivních výsledků, podporuje analýzu smyček a poskytuje dobrou škálovatelnost. Metoda bere v úvahu mnoho typických vzorců výkonu získaných analýzou stávajících programů eBPF.
eBPF je známá, ale revoluční technologie, která poskytuje programovatelnost, rozšiřitelnost a hbitost. eBPF byl použit pro případy použití, jako je odmítnutí ochrany služby a pozorovatelnost.
V průběhu času byl kolem eBPF vybudován významný ekosystém nástrojů, produktů a odborných znalostí. Ačkoli byla podpora pro eBPF poprvé implementována v linuxovém jádře, vzrostl zájem o umožnění použití eBPF v jiných operačních systémech a také o rozšíření démonů a služeb v uživatelském režimu kromě jádra.
Po ověření bytecode je předán tlumočníkovi na úrovni jádra, nebo je předán kompilátorem JIT, následovaný spuštěním výsledného strojového kódu s právy jádra. K izolaci ovladačů eBPF na úrovni jádra se používá mechanismus HVCI (HyperVisor Enhanced Code Integrity), který využívá virtualizační nástroje k ochraně procesů v jádře a zajišťuje, že integrita spuštěného kódu je digitálně podepsána.
Jedním z omezení HVCI je schopnost kontrolovat pouze interpretované programy eBPF a neschopnost je používat ve spojení s JIT (máte na výběr: další výkon nebo ochrana).
Konečně pokud se o tom chcete dozvědět více, můžete se poradit následující odkaz.