Microsoft已为Windows准备了eBPF的实现

微软揭幕 最近通过帖子 Windows的eBPF子系统的实现 这使您可以运行在操作系统内核级别运行的任意驱动程序。

eGMP 提供内置的字节码解释器 在内核中创建加载用户空间的网络驱动程序,访问控制和系统监控。 eBPF 从3.18版开始,Linux内核已包含该版本,并且 允许您处理传入/传出的网络数据包,转发数据包,控制带宽,拦截系统调用,控制访问和跟踪。

通过JIT编译,字节码可以即时转换为机器指令,并以编译后的代码的性能运行。 Windows的EBPF是根据MIT许可开放的源代码。

今天,我们很高兴宣布Microsoft推出了一个新的开源项目,以使eBPF在Windows 10和Windows Server 2016及更高版本上都能正常工作。 ebpf-for-windows项目旨在使开发人员能够在现有Windows版本之上使用熟悉的eBPF工具链和应用程序编程接口(API)。 基于其他人的工作,该项目采用了几个现有的开源eBPF项目,并添加了“胶水”以使其在Windows上运行。

Windows版eBPF 可以与现有的eBPF工具一起使用 并提供用于Linux上的eBPF应用程序的通用API。

特别是, 该项目允许您将用C编写的代码编译为字节码 使用基于标准Clang的eBPF编译器的eBPF 并在Windows内核之上运行已经为Linux构建的eBPF驱动程序,它提供了一个特殊的兼容性层并支持标准的Libbpf API,以与与eBPF程序进行交互的应用程序兼容。

这包括为XDP(eXpress数据路径)提供类似于Linux的绑定的中间层,以及概述对Windows网络堆栈和网络驱动程序的访问的套接字绑定。 计划旨在为通用Linux eBPF驱动程序提供完整的源代码级支持。

在Windows中实现eBPF的主要区别在于使用了备用字节码检查器,该检查器最初由VMware员工以及来自加拿大和以色列大学的研究人员提出。

验证程序在用户空间中一个单独的隔离过程中启动,并在执行BPF程序之前用于检测错误并阻止潜在的恶意活动。

为了验证, Windows的eBPF使用抽象解释静态分析方法, 什么, 与Linux的eBPF验证程序相比,它的误报率更低,支持循环分析并提供良好的可伸缩性。 该方法考虑了从现有eBPF程序分析中获得的许多典型性能模式。

eBPF是一项众所周知的但具有革命性的技术,可提供可编程性,可扩展性和敏捷性。 eBPF已被用于拒绝服务保护和可观察性之类的用例。

随着时间的流逝,围绕eBPF建立了重要的工具,产品和专业知识生态系统。 尽管最初在Linux内核中实现了对eBPF的支持,但是人们越来越关注允许eBPF用于其他操作系统,并且除了内核之外还扩展了守护程序和用户模式服务。

验证后, 字节码被传递给内核级解释器, 或者它通过JIT编译器传递,然后运行具有内核权限的结果机器代码。 为了在内核级别隔离eBPF驱动程序,使用了HVCI(HyperVisor增强代码完整性)机制,该机制使用虚拟化工具来保护内核中的进程并确保对执行代码的完整性进行数字签名。

HVCI的局限性是只能检查已解释的eBPF程序的能力,以及无法与JIT结合使用的能力(您可以选择:附加性能或保护)。

最后 如果您有兴趣了解更多信息, 你可以咨询 以下链接。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。