A Microsoft preparou uma implementação do eBPF para Windows

Microsoft revelou recentemente por meio de uma postagem a implementação do subsistema eBPF para Windows que permite que você execute drivers arbitrários que são executados no nível do kernel do sistema operacional.

eGMP fornece um intérprete de bytecode embutido no kernel para criar drivers de rede carregados de espaço do usuário, controle de acesso e monitoramento do sistema. eBPF foi incluído no kernel Linux desde a versão 3.18 e permite que você processe pacotes de rede de entrada / saída, encaminhe pacotes, controle a largura de banda, intercepte chamadas do sistema, controle o acesso e rastreie.

Por meio da compilação JIT, o código de byte é traduzido em instruções de máquina em tempo real e executado com o desempenho do código compilado. EBPF para Windows é um código aberto sob a licença MIT.

Hoje temos o prazer de anunciar um novo projeto de código aberto da Microsoft para fazer o eBPF funcionar no Windows 10 e no Windows Server 2016 e posteriores. O projeto ebpf-for-windows visa permitir que os desenvolvedores usem conjuntos de ferramentas e interfaces de programação de aplicativos (APIs) eBPF familiares sobre as versões existentes do Windows. Baseado no trabalho de outros, este projeto pega vários projetos eBPF de código aberto existentes e adiciona a "cola" para fazê-los rodar no Windows.

eGMP para Windows pode ser usado com ferramentas eBPF existentes e fornece uma API genérica que é usada para aplicativos eBPF no Linux.

Em particular, o projeto permite que você compile o código escrito em C em bytecode eBPF usando o compilador eBPF baseado em Clang padrão e executar drivers eBPF já construídos para Linux no topo do kernel do Windows, que fornece uma camada de compatibilidade especial e suporta a API Libbpf padrão para compatibilidade com aplicativos que interagem com programas eBPF.

Isso inclui camadas intermediárias que fornecem ligações do tipo Linux para XDP (eXpress Data Path) e ligações de soquete que resumem o acesso à pilha de rede do Windows e aos drivers de rede. Os planos visam fornecer suporte completo em nível de origem para drivers Linux eBPF genéricos.

A principal diferença na implementação do eBPF para Windows é o uso de um verificador de bytecode alternativo, originalmente proposto por funcionários e pesquisadores da VMware de universidades canadenses e israelenses.

O verificador é iniciado em um processo separado e isolado no espaço do usuário e é usado antes da execução de programas BPF para detectar erros e bloquear atividades maliciosas em potencial.

Para validação, eBPF para Windows usa o método de análise estática de interpretação abstrata, o que, Comparado ao verificador eBPF para Linux, ele demonstra uma taxa de falsos positivos mais baixa, suporta análise de loop e oferece boa escalabilidade. O método leva em consideração muitos padrões de desempenho típicos obtidos da análise de programas eBPF existentes.

eBPF é uma tecnologia bem conhecida, mas revolucionária, que fornece programabilidade, extensibilidade e agilidade. O eBPF foi aplicado a casos de uso como proteção contra negação de serviço e capacidade de observação.

Com o tempo, um ecossistema significativo de ferramentas, produtos e experiência foi construído em torno do eBPF. Embora o suporte para eBPF tenha sido implementado primeiro no kernel Linux, tem havido um interesse crescente em permitir que o eBPF seja usado em outros sistemas operacionais e também para estender daemons e serviços de modo de usuário além do kernel.

Após a verificação, o bytecode é passado para o interpretador de nível de kernel, ou é passado pelo compilador JIT, seguido pela execução do código de máquina resultante com direitos de kernel. Para isolar os drivers eBPF no nível do kernel, o mecanismo HVCI (HyperVisor Enhanced Code Integrity) é usado, que usa ferramentas de virtualização para proteger os processos no kernel e garante que a integridade do código executado seja assinado digitalmente.

Uma limitação do HVCI é a capacidade de verificar apenas programas eBPF interpretados e a incapacidade de usá-los em conjunto com o JIT (você pode escolher: desempenho ou proteção adicional).

Finalmente se você estiver interessado em saber mais sobre isso, você pode consultar o seguinte link.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.