Microsoft je pripremio implementaciju eBPF-a za Windows

Microsoft je objavio implementaciju eBPF podsistema za Windows koji vam omogućava da pokrenete proizvoljne rukovaoce koji rade na nivou kernela operativnog sistema. eBPF obezbjeđuje tumač bajtkoda ugrađen u kernel koji vam omogućava da kreirate rukovaoce mrežnih operacija koje se mogu učitati u korisničkom prostoru, kontrolisati pristup i nadgledati sisteme. eBPF je uključen u Linux kernel od izdanja 3.18 i omogućava vam obradu dolaznih/odlaznih mrežnih paketa, prosljeđivanje paketa, kontrolu propusnog opsega, presretanje sistemskih poziva, kontrolu pristupa i praćenje. Zahvaljujući upotrebi JIT kompilacije, bajt kod se prevodi u mašinske instrukcije u hodu i izvršava uz performanse kompajliranog koda. Izvorni kod za eBPF za Windows je open source pod MIT licencom.

eBPF za Windows se može koristiti sa postojećim eBPF alatima i pruža generički API koji se koristi za Linux eBPF aplikacije. Između ostalog, projekat omogućava kompajliranje koda napisanog u C u eBPF bajt kod pomoću redovnog eBPF kompajlera baziranog na Clang i pokretanje eBPF rukovalaca koji su već kreirani za Linux na vrhu Windows kernela, pružajući poseban sloj kompatibilnosti i podržavajući standardni Libbpf API za kompatibilnost s aplikacijama koje su u interakciji s eBPF programima. Ovo uključuje slojeve koji obezbeđuju zakačice slične Linuxu za XDP (eXpress Data Path) i povezivanje utičnice, apstrahujući pristup mrežnom steku i Windows mrežnim drajverima. Od planova je navedeno da se obezbijedi puna kompatibilnost na nivou izvornog koda sa tipičnim Linux eBPF rukovaocima.

Microsoft je pripremio implementaciju eBPF-a za Windows

Ključna razlika u implementaciji eBPF-a za Windows je upotreba alternativnog verifikatora bajt koda, koji su prvobitno predložili zaposleni u VMware-u i istraživači sa kanadskih i izraelskih univerziteta. Verifikator radi u zasebnom izolovanom procesu u korisničkom prostoru i koristi se prije izvršavanja BPF programa kako bi se otkrile greške i blokirale moguće zlonamjerne aktivnosti.

eBPF za Windows koristi metod statičke analize baziran na Abstract Interpretation za verifikaciju, koji, u poređenju sa eBPF za Linux verifikator, ima nižu stopu lažnih pozitivnih rezultata, podržava analizu petlje i pruža dobru skalabilnost. Metoda uzima u obzir mnoge tipične obrasce izvršenja dobijene analizom postojećih eBPF programa.

Nakon verifikacije, bajt kod se prosljeđuje interpretatoru na nivou kernela ili se prosljeđuje kroz JIT kompajler, nakon čega slijedi izvršavanje rezultirajućeg strojnog koda s pravima kernela. Da bi se izolovali eBPF rukovaoci na nivou kernela, koristi se mehanizam HVCI (HyperVisor-enforced Code Integrity), koji koristi alate za virtuelizaciju za zaštitu procesa u kernelu i obezbeđuje verifikaciju integriteta koda koji se izvršava digitalnim potpisom. Ograničenje HVCI-a je mogućnost provjere samo interpretiranih eBPF programa i nemogućnost njegovog korištenja u sprezi sa JIT-om (daje se izbor - ili performanse ili dodatna zaštita).

izvor: opennet.ru

Dodajte komentar