时间:2021-05-13 来源:win10官网 游览量: 次
微软正致力于将Linux安全工具extended Berkeley Packet Filter(eBPF)引入windows10。
该工具目前可以在Windows子系统Linux上运行,但微软正在致力于本机支持,问题是该工具在内核上下文中运行代码,这会引起各种安全问题。
然而,这项工作可能是值得的,因为eBPF广泛用于网络过滤、分析和管理,也用于系统调用过滤和进程上下文跟踪,并构成了Cilium、Falco和Tracee等多种安全应用的基础;Kubernetes的观测程序如哈勃和Pixie,以及工具链如Clang。
ebpfforwindows项目的目标是获取几个现有的ebpf开源项目,并添加“胶水”使它们在windows上运行。
如图所示,现有的eBPF工具链(clang等)可用于从各种语言的源代码生成eBPF字节码。字节码可以被任何应用程序使用,也可以通过Netsh命令行工具来使用,后者使用一个公开libbpfapi的共享库,尽管这仍在进行中。
eBPF字节码被发送到一个静态验证器(previous verifier),该验证器托管在一个受用户模式保护的进程中(Windows安全环境允许内核组件信任由它信任的密钥签名的用户模式守护程序)。如果字节码通过了所有的验证器检查,它可以被加载到解释器中(从内核模式执行上下文中的uBPF),也可以通过JIT编译(通过uBPF JIT编译器),并将本机代码加载到内核模式执行上下文中(但请参阅底部关于HVCI的常见问题解答)。
安装到内核模式执行上下文中的eBPF程序可以附加到各种钩子(目前为止有两个钩子:XDP和一个socket bind hook),并调用eBPF填充程序公开的各种helper api,它内部包装了公共Windows内核api,允许在现有的Windows版本上使用eBPF。随着时间的推移,将会添加更多的钩子和助手。