Microsoft on valmistellut eBPF-toteutuksen Windowsille

Microsoft on julkaissut toteutuksen eBPF-alijärjestelmästä Windowsille, jonka avulla voit käynnistää mielivaltaisia ​​käsittelijöitä, jotka toimivat käyttöjärjestelmän ydintasolla. eBPF tarjoaa ytimeen sisäänrakennetun tavukooditulkin, jonka avulla voidaan luoda käyttäjätilasta ladattavia verkkotoimintojen käsittelijöitä, hallita pääsyä ja valvoa järjestelmien toimintaa. eBPF on sisällytetty Linux-ytimeen julkaisusta 3.18 lähtien ja sen avulla voit käsitellä saapuvia/lähteviä verkkopaketteja, pakettien edelleenlähetystä, kaistanleveyden hallintaa, järjestelmäpuhelujen sieppausta, kulunvalvontaa ja jäljitystä. JIT-käännöksen käytön ansiosta tavukoodi käännetään lennossa konekäskyiksi ja suoritetaan käännetyn koodin suorituskyvyllä. eBPF for Windows on avoimen lähdekoodin MIT-lisenssillä.

eBPF for Windows -sovellusta voidaan käyttää olemassa olevien eBPF-työkalujen kanssa, ja se tarjoaa yleisen sovellusliittymän, jota käytetään eBPF-sovelluksiin Linuxissa. Projektin avulla voidaan muun muassa kääntää C-kielellä kirjoitettua koodia eBPF-tavukoodiksi käyttämällä tavallista Clang-pohjaista eBPF-kääntäjää ja ajaa Windows-ytimen päällä Linuxille jo luotuja eBPF-käsittelijöitä, jotka tarjoavat erityisen yhteensopivuuskerroksen ja tukevat standardia Libbpf. API yhteensopivuus sovellusten kanssa, jotka ovat vuorovaikutuksessa eBPF-ohjelmien kanssa. Tämä sisältää kerrokset, jotka tarjoavat Linuxin kaltaisia ​​koukkuja XDP:lle (eXpress Data Path) ja socket bindille, poistaen pääsyn verkkopinoon ja Windows-verkkoajureihin. Suunnitelmiin kuuluu täyden lähdekooditason yhteensopivuus tavallisten Linux eBPF -suorittimien kanssa.

Microsoft on valmistellut eBPF-toteutuksen Windowsille

Keskeinen ero Windowsin eBPF-toteutuksen välillä on vaihtoehtoisen tavukoodin varmentajan käyttö, jota alun perin ehdottivat VMwaren työntekijät ja tutkijat Kanadan ja Israelin yliopistoista. Todentaja toimii erillisessä, eristetyssä prosessissa käyttäjätilassa, ja sitä käytetään ennen BPF-ohjelmien suorittamista virheiden tunnistamiseen ja mahdollisen haitallisen toiminnan estämiseen.

eBPF for Windows käyttää varmentamiseen abstraktiin tulkintaan perustuvaa staattista analyysimenetelmää, joka verrattuna Linuxin eBPF-todentajaan osoittaa alhaisemman väärien positiivisten osuuden, tukee silmukkaanalyysiä ja tarjoaa hyvän skaalautuvuuden. Menetelmä ottaa huomioon monia tyypillisiä suoritusmalleja, jotka on saatu olemassa olevien eBPF-ohjelmien analysoinnista.

Tarkistuksen jälkeen tavukoodi siirretään ytimen tasolla toimivaan tulkkiin tai JIT-kääntäjän läpi, minkä jälkeen tuloksena oleva konekoodi suoritetaan ytimen oikeuksilla. eBPF-käsittelijöiden eristämiseen ytimen tasolla käytetään HVCI-mekanismia (HyperVisor-enforced Code Integrity), joka käyttää virtualisointityökaluja ytimessä olevien prosessien suojaamiseen ja varmistaa suorittavan koodin eheyden digitaalisella allekirjoituksella. HVCI:n rajoitus on, että se voi tarkistaa vain tulkitut eBPF-ohjelmat, eikä sitä voida käyttää yhdessä JIT:n kanssa (voit valita joko suorituskyvyn tai lisäsuojauksen).

Lähde: opennet.ru

Lisää kommentti