Microsoft 正在努力为 Windows 提供扩展的 Berkeley Packet Filter (eBPF) 支持

阅读时间图标 2分钟读


读者帮助支持 MSpoweruser。如果您通过我们的链接购买,我们可能会获得佣金。 工具提示图标

阅读我们的披露页面,了解如何帮助 MSPoweruser 维持编辑团队 查看更多

ZDNet报告 微软正在努力将 Linux 安全工具扩展伯克利数据包过滤器 (eBPF) 引入 Windows 10。

该工具目前可以在 Linux 的 Windows 子系统上运行,但微软正在致力于原生支持,问题是该工具在内核上下文中运行代码,这会引发各种安全问题。

然而,这项工作可能是值得的,因为 eBPF 广泛用于网络过滤、分析和管理,还用于系统调用过滤和进程上下文跟踪,并构成了 Cilium、Falco 和 Tracee 等多种安全应用程序的基础; Kubernetes 观察程序(如 Hubble 和 Pixie)以及工具链(如 Clang)。

ebpf-for-windows 项目旨在利用几个现有的 eBPF 开源项目,并添加“粘合剂”以使它们在 Windows 上运行。

如图所示,现有的 eBPF 工具链(clang 等)可用于从各种语言的源代码生成 eBPF 字节码。 字节码可以被任何应用程序使用,或者通过 Netsh 命令行工具使用,该工具使用公开 Libbpf API 的共享库,尽管这仍在进行中。

eBPF 字节码被发送到静态验证器(PREVAIL 验证器),该验证器托管在受用户模式保护的进程(允许内核组件信任由其信任的密钥签名的用户模式守护进程的 Windows 安全环境)中。 如果字节码通过了所有验证程序检查,它可以被加载到解释器(从内核模式执行上下文中的 uBPF),或 JIT 编译(通过 uBPF JIT 编译器)并将本机代码加载到内核模式执行中上下文(但请参阅底部关于 HVCI 的常见问题解答)。

安装到内核模式执行上下文中的 eBPF 程序可以附加到各种钩子(目前目前有两个钩子:XDP 和一个套接字绑定钩子)并调用由 eBPF shim 公开的各种帮助 API,它在内部包装公共 Windows 内核 API,允许在现有版本的 Windows 上使用 eBPF。 随着时间的推移,将添加更多的钩子和助手。

最终结果将是一个 Windows 特定的 eBPF 托管环境,这将允许 Windows 开发人员使用开源 eBPF 程序而无需重新编码。

查询 GitHub 上的 ebpf-for-windows 项目.

有关主题的更多信息: eGMP, 微软, 10窗口

发表评论

您的电邮地址不会被公开。 必填带 *