Microsoft ha preparat una implementació d'eBPF per a Windows

Microsoft ha publicat una implementació del subsistema eBPF per a Windows que us permet executar controladors arbitraris que funcionen al nivell del nucli del sistema operatiu. eBPF proporciona un intèrpret de codi de bytes integrat al nucli que us permet crear gestors d'operacions de xarxa carregables a l'espai d'usuari, controlar l'accés i supervisar sistemes. eBPF s'ha inclòs al nucli de Linux des de la versió 3.18 i us permet processar paquets de xarxa entrants/sortints, reenviar paquets, controlar l'amplada de banda, interceptar trucades al sistema, controlar l'accés i fer el seguiment. Gràcies a l'ús de la compilació JIT, el bytecode es tradueix en instruccions de màquina sobre la marxa i s'executa amb el rendiment del codi compilat. El codi font d'eBPF per a Windows és de codi obert sota la llicència MIT.

eBPF per a Windows es pot utilitzar amb les eines eBPF existents i proporciona una API genèrica que s'utilitza per a les aplicacions eBPF de Linux. Entre altres coses, el projecte permet compilar codi escrit en C al bytecode eBPF utilitzant el compilador eBPF normal basat en Clang i executant controladors eBPF ja creats per a Linux a sobre del nucli de Windows, proporcionant una capa de compatibilitat especial i donant suport a l'API Libbpf estàndard per a compatibilitat amb aplicacions que interactuen amb programes eBPF. Això inclou capes que proporcionen ganxos semblants a Linux per a XDP (eXpress Data Path) i enllaç de sòcols, abstraint l'accés a la pila de xarxa i als controladors de xarxa de Windows. Dels plans, s'observa que proporcionen una compatibilitat total a nivell de codi font amb els controladors típics de Linux eBPF.

Microsoft ha preparat una implementació d'eBPF per a Windows

La diferència clau en la implementació d'eBPF per a Windows és l'ús d'un verificador de codi de bytes alternatiu, proposat originalment pels empleats de VMware i els investigadors de les universitats canadenques i israelianes. El verificador s'executa en un procés separat aïllat a l'espai d'usuari i s'utilitza abans de l'execució dels programes BPF per detectar errors i bloquejar possibles activitats malicioses.

eBPF per a Windows utilitza un mètode d'anàlisi estàtica basat en la interpretació abstracta per a la verificació, que, en comparació amb el verificador eBPF per a Linux, té una taxa de falsos positius més baixa, admet l'anàlisi de bucles i proporciona una bona escalabilitat. El mètode té en compte molts patrons d'execució típics obtinguts de l'anàlisi dels programes eBPF existents.

Després de la verificació, el bytecode es passa a un intèrpret a nivell del nucli o es passa a través d'un compilador JIT, seguit de l'execució del codi màquina resultant amb drets del nucli. Per aïllar els controladors eBPF a nivell del nucli, s'utilitza el mecanisme HVCI (HyperVisor-enforced Code Integrity), que utilitza eines de virtualització per protegir els processos del nucli i proporciona la verificació de la integritat del codi que s'està executant mitjançant la signatura digital. La limitació de l'HVCI és la possibilitat de verificar només els programes eBPF interpretats i la impossibilitat d'utilitzar-lo juntament amb JIT (s'ofereix l'opció: rendiment o protecció addicional).

Font: opennet.ru

Afegeix comentari