Mikrosofto publikigis efektivigon de la eBPF-subsistemo por Windows, kiu ebligas la plenumon de arbitraj traktiloj funkciantaj je la kerna nivelo de la operaciumo. eBPF provizas kerno-integran bajtkodan interpretilon, ebligante la kreadon de uzant-spaco-ŝarĝeblaj ret-operaciaj traktiloj, alirkontrolon kaj sistemmonitoradon. eBPF estas inkluzivita en la kerno. Linux Ekde eldono 3.18, ĝi ebligas prilaboradon de alvenantaj/elirantaj retpakaĵetoj, pakaĵan redirektadon, bendolarĝan administradon, sistemvokan interkapton, alirkontrolon kaj spuradon. Danke al ĝustatempa (JIT) kompilado, bajtkodo estas tradukita en maŝinajn instrukciojn dum la flugo kaj ekzekutita kun la plenumo de kompilita kodo. eBPF fontkodo por Windows malfermfonteca sub la MIT-licenco.
eBPF por Windows uzeblas kun ekzistantaj eBPF-iloj kaj provizas norman API-on uzatan por eBPF-aplikoj en LinuxInteralie, la projekto permesas al vi kompili kodon skribitan en C en eBPF-bajtkodon uzante la norman eBPF-kompililon bazitan sur Clang kaj ruli jam kreitan por Linux eBPF-traktiloj supre de la kerno Windows, provizante specialan kongruecan tavolon kaj subtenante la norman Libbpf API-on por kongrueco kun aplikaĵoj interagantaj kun eBPF-programoj. Tio inkluzivas tavolojn kiuj provizas Linux-similaj hokoj por XDP (eXpress Data Path) kaj ingoligado, abstraktante aliron al la retstako kaj retpeliloj WindowsPlanoj inkluzivas provizi plenan kongruecon je fontnivelo kun normaj eBPF-traktiloj. Linux.

La ŝlosila diferenco en la efektivigo de eBPF por Windows La solvo estas la uzo de alternativa bajtkoda kontrolilo, origine proponita de VMware-dungitoj kaj esploristoj de kanadaj kaj israelaj universitatoj. La kontrolilo funkcias en aparta, izolita procezo en la uzantospaco kaj estas aplikata antaŭ ol efektivigi BPF-programojn por identigi erarojn kaj bloki eblan malican agadon.
Por kontroli en eBPF por Windows La metodo de statika analizo bazita sur Abstrakta Interpreto estas uzata, kiu, kompare kun la eBPF-kontrolilo, estas Linux La metodo montras pli malaltan oftecon de falsaj pozitivoj, subtenas buklan analizon, kaj certigas bonan skaleblecon. Ĝi konsideras diversajn tipajn plenumpadronojn akiritajn per analizado de ekzistantaj eBPF-programoj.
Post konfirmo, la bajtokodo estas transdonita al interpretisto kuranta sur la kernnivelo, aŭ pasita tra JIT-kompililo, sekvita per ekzekuto de la rezulta maŝinkodo kun kernrajtoj. Por izoli eBPF-prizorgantojn sur la kernnivelo, la mekanismo HVCI (HyperVisor-enforced Code Integrity) estas uzata, kiu uzas virtualigajn ilojn por protekti procezojn en la kerno kaj disponigas konfirmon de la integreco de la ekzekutanta kodo uzante ciferecan subskribon. La limigo de HVCI estas, ke ĝi povas nur kontroli interpretitajn eBPF-programojn kaj ne povas esti uzata kune kun JIT (vi havas elekton de aŭ agado aŭ plia sekureco).
fonto: opennet.ru
