Microsoft on valmistanud eBPF-i rakenduse Windowsile

Microsoft on avaldanud eBPF alamkihi Windowsile, võimaldades käivitada juhte, mis töötavad operatsioonisüsteemi tuumatasemel. eBPF tarjoaa sisseehitatud tuumainterpreteri, mis võimaldab luua kasutajaruumi laaditavaid võrguoperatsioonide käsitlejaid, hallata juurdepääsu ja jälgida süsteemi toimimist. eBPF on kaasatud Linuxi tuuma alates versioonist 3.18 ning võimaldab töödelda sissetulevaid/väljuvaid võrgu pakette, suunata pakette, hallata ribalaiust, pealtkuulata süsteemikõnesid, kontrollida juurdepääsu ja teostada jälgimist. JIT-kompileerimise rakendamise tõttu tõlgitakse bytecode reaalajas masinakeelde ja seda täidetakse kompileeritud koodi jõudlusega. eBPF algkood Windowsile on avatud MIT litsentsi alusel.

eBPF Windowsile saab kasutada juba olemasolevate eBPF tööriistadega ja see pakub tüüpilist API-d, mida rakendatakse eBPF rakendustes Linuxis. Projekti kaudu on võimalik kompileerida C keeles kirjutatud kood eBPF bytecode'iks, kasutades Clangi baasil põhinevat eBPF kompilaatorit ja käivitada Linuxile loodud eBPF töötlusi Windowsi kernelis, pakkudes spetsiaalset ühilduvuskihti ja toetades Libbpf API-d, et säilitada ühilduvus rakendustega, mis suhtlevad eBPF programmidega. Samuti pakutakse kihi, mis annab Linuxi sarnased hook’id XDP (eXpress Data Path) ja socket bind jaoks, abstraktsiat juurdepääsuks Windowsi võrgu kihti ja võrgu draiveritele. Tuleviku plaanides mainitakse täiemahulise ühilduvuse pakkumist lähtekooditasemel tüüpiliste eBPF töötlejatega Linuxis.

Microsoft on valmistanud eBPF-i rakenduse Windowsile

eBPF-i rakendamise peamine erinevus Windows'is seisneb alternatiivse baitkoodi kontrollija kasutamises, mille algselt pakkusid välja VMware töötajad ja Kanada ning Iisraeli ülikoolide teadlased. Kontrollija käivitatakse eraldi isoleeritud protsessis kasutajaruumi andmeväljas ning seda rakendatakse enne BPF-programmide täitmist, et avastada vigu ja blokeerida võimalikke pahatahtlikke tegevusi.

Windowsi eBPF-s kasutatakse staatilise analüüsi meetodit, mis põhineb abstraktsel tõlgendusel (Abstract Interpretation), millel on võrreldes Linuxi eBPF kontrollijaga madalam valepositiivide määr, see toetab tsüklite analüüsi ja tagab hea skaleeritavuse. Meetod arvestab mitmeid tüüpilisi täitmismustreid, mis on saadud olemasolevate eBPF-programmide analüüsi põhjal.

Pärast valideerimist edastatakse baitkood tõlgendamisele, mis töötab südametasemel, või suunatakse see JIT-kompilaatorisse, mille tulemusena käivitatakse saadud masinkood südamete õigustega. Südametaseme eBPF töötlejate isoleerimiseks rakendatakse HVCI (HyperVisor-kohane Koodide Tõhususe Garantii) mehhanismi, mis kasutab virtualiseerimise vahendeid südamete protsesside kaitsmiseks ja tagab käitatava koodi terviklikkuse kinnituse digitaalallkirja kaudu. HVCI piiranguks on see, et saab valideerida ainult tõlgendatavaid eBPF-projekte ning ei ole võimalik seda kasutada koos JIT-iga (valik jääb — kas jõudlus või täiendav kaitse).

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster