Microsoft a pregătit implementarea eBPF pentru Windows

Compania Microsoft a publicat o implementare a subsistemului eBPF pentru Windows, care permite rularea de manipulatoare arbitrare, funcționând la nivelul nucleului sistemului de operare. eBPF oferă un interpret de bytecode încorporat în nucleu, care permite crearea de manipulatoare de operațiuni de rețea ce pot fi încărcate din spațiul utilizatorului, controlând accesul și monitorizând funcționarea sistemelor. eBPF este inclus în nucleul Linux începând cu versiunea 3.18 și permite procesarea pachetelor de rețea de intrare/ieșire, redirecționarea pachetelor, gestionarea lățimii de bandă, interceptarea apelurilor de sistem, controlul accesului și efectuarea de urmăriri. Datorită utilizării compilării JIT, bytecode-ul este tradus în instrucțiuni mașină pe parcurs și este executat cu performanța unui cod compilat. Codurile sursă eBPF pentru Windows sunt deschise sub licența MIT.

eBPF pentru Windows poate fi utilizat cu deja existentele instrumente de lucru eBPF și oferă un API standardizat, aplicabil pentru aplicațiile eBPF în Linux. Printre altele, proiectul permite compilarea codului scris în C în bytecode eBPF cu ajutorul compilatorului standard eBPF bazat pe Clang și rularea manipulatoarelor eBPF deja create pentru Linux pe nucleul Windows, oferind un strat special de compatibilitate și susținând API-ul standard Libbpf pentru compatibilitatea cu aplicațiile care interacționează cu programele eBPF. De asemenea, sunt oferite straturi care furnizează hook-uri asemănătoare Linux pentru XDP (eXpress Data Path) și socket bind, abstractizând accesul la stiva de rețea și la driverele de rețea Windows. Printre planuri se menționează asigurarea compatibilității complete la nivelul codurilor sursă cu manipulatoarele eBPF standard din Linux.

Microsoft a pregătit implementarea eBPF pentru Windows

Principala diferentă a implementării eBPF pentru Windows este utilizarea unui vericator alternativ de bytecode, propus inițial de angajați ai companiei VMware și cercetători din universități canadiene și israeliene. Verificatorul este rulat într-un proces izolat separat în spațiul utilizatorului și este aplicat înainte de executarea programelor BPF, cu scopul de a identifica erorile și de a bloca posibile activități malițioase.

Pentru verificarea în eBPF pentru Windows se folosește o metodă de analiză statică, bazată pe interpretare abstractă (Abstract Interpretation), care, comparativ cu verificatorul eBPF pentru Linux, prezintă un nivel mai scăzut de alarme false, susține analiza buclelor și asigură o scalabilitate bună. Metoda ia în considerare numeroase tipare de execuție, obținute prin analiza programelor eBPF existente.

După verificare, codul byte este trimis la un interpretator care funcționează la nivel de kernel sau este trecut printr-un JIT-compiler, urmat de execuția codului mașină rezultant cu drepturi de kernel. Pentru izolarea handler-elor eBPF la nivel de kernel se folosește mecanismul HVCI (HyperVisor-enforced Code Integrity), care utilizează mijloace de virtualizare pentru a proteja procesele din kernel și asigură confirmarea integrității codului executat prin semnătură digitală. O restricție a HVCI este că poate verifica doar programele eBPF interpretate și nu poate fi utilizat împreună cu JIT (se oferă alegerea — fie performanță, fie protecție suplimentară).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster