Microsoft on Windowsi jaoks ette valmistanud eBPF-i juurutuse

Microsoft on avaldanud Windowsi jaoks mõeldud eBPF-i alamsüsteemi teostuse, mis võimaldab käivitada suvalised käitlejad, mis töötavad operatsioonisüsteemi tuuma tasemel. eBPF pakub kernelisse sisseehitatud baitkoodi interpretaatorit, mis võimaldab luua kasutajaruumist laaditud võrguoperatsioonide töötlejaid, juhtida juurdepääsu ja jälgida süsteemide tööd. eBPF on Linuxi kernelisse lisatud alates väljalaskest 3.18 ja võimaldab teil hallata sissetulevaid/väljaminevaid võrgupakette, pakettide edastamist, ribalaiuse haldust, süsteemikõnede pealtkuulamist, juurdepääsu juhtimist ja jälgimist. Tänu JIT-i kompileerimise kasutamisele tõlgitakse baitkood lennult masinakäskudeks ja täidetakse koos kompileeritud koodi jõudlusega. eBPF for Windows on avatud lähtekoodiga MIT litsentsi alusel.

eBPF for Windows saab kasutada olemasolevate eBPF-i tööriistadega ja see pakub üldist API-d, mida kasutatakse Linuxi eBPF-i rakenduste jaoks. Muuhulgas võimaldab projekt kompileerida C-keeles kirjutatud koodi eBPF-i baitkoodiks kasutades standardset Clangil põhinevat eBPF-kompilaatorit ning käivitada Windowsi kerneli peal juba Linuxile loodud eBPF-käsitlejad, mis pakuvad spetsiaalset ühilduvuskihti ja toetavad standardset Libbpf-i. API ühildumiseks rakendustega, mis suhtlevad eBPF programmidega. See hõlmab kihte, mis pakuvad Linuxi sarnaseid konkse XDP (eXpress Data Path) ja pesa sidumise jaoks, abstraheerides juurdepääsu võrgupinule ja Windowsi võrgudraiveritele. Plaanid hõlmavad täieliku lähtekoodi tasemel ühilduvuse pakkumist tavaliste Linuxi eBPF-protsessoritega.

Microsoft on Windowsi jaoks ette valmistanud eBPF-i juurutuse

Peamine erinevus eBPF-i Windowsi juurutamise vahel on alternatiivse baitkoodi kontrollija kasutamine, mille pakkusid algselt välja VMware töötajad ning Kanada ja Iisraeli ülikoolide teadlased. Kontrollija töötab kasutajaruumis eraldi isoleeritud protsessina ja seda kasutatakse enne BPF-programmide käivitamist vigade tuvastamiseks ja võimaliku pahatahtliku tegevuse blokeerimiseks.

Kontrollimiseks kasutab eBPF for Windows abstraktsel tõlgendamisel põhinevat staatilist analüüsimeetodit, mis võrreldes Linuxi eBPF-i kontrollijaga näitab madalamat valepositiivsuse määra, toetab silmusanalüüsi ja tagab hea skaleeritavuse. Meetod võtab arvesse paljusid tüüpilisi täitmismustreid, mis on saadud olemasolevate eBPF-i programmide analüüsist.

Pärast kontrollimist kantakse baitkood üle kerneli tasemel töötavale interpretaatorile või juhitakse läbi JIT-kompilaatori, millele järgneb saadud masinkoodi täitmine tuumaõigustega. eBPF-käsitlejate isoleerimiseks kerneli tasemel kasutatakse HVCI (HyperVisor-enforced Code Integrity) mehhanismi, mis kasutab virtualiseerimistööriistu tuumas olevate protsesside kaitsmiseks ja annab digitaalallkirja abil kinnituse käivitava koodi terviklikkuse kohta. HVCI piirang seisneb selles, et see saab kontrollida ainult tõlgendatud eBPF-programme ja seda ei saa kasutada koos JIT-ga (teil on valida jõudluse või täiendava turvalisuse vahel).

Allikas: opennet.ru

Lisa kommentaar