VED(Vault 利用防御)-eBPF 利用 eBPF(扩展的伯克利数据包过滤器)为 Linux 系统实现运行时内核安全监控和利用检测。
eBPF 是一种内核实机,允许在无需修改内核源代码的情况下在内核中执行代码。eBPF 程序可以附加到 tracepoints、kprobes 和其他内核事件上,以高效地分析执行并收集数据。
VED-eBPF 使用 eBPF 追踪对安全敏感的内核行为,并检测可能表明存在利用或 rootkit 的异常。它提供两种主要检测:
VED-eBPF 将 eBPF 程序附加到内核函数上,以追踪执行流并提取安全事件。eBPF 程序通过 perf 缓冲区将这些事件提交给用户空间进行分析。
wCFI 通过附加到命令行指定的函数来追踪调用栈。在每次调用时,它转储栈,分配栈 ID,并根据从 objdump 和 /proc/kallsyms 生成的预计算有效调用点位图验证返回地址。
如果检测到无效的返回地址,表明栈已损坏,它会生成一个包含以下内容的 wcfi_stack_event:
* 堆栈跟踪
* 栈 ID
* 无效返回地址
此安全事件通过 perf 缓冲区提交给用户空间。
wCFI eBPF 程序还跟踪栈指针和内核文本区域的变化,以保持验证的及时性。
PSD 通过附加到诸如 commit_creds 和 prepare_kernel_cred 等函数来追踪凭证结构的修改。在每次调用时,它提取以下信息:
* 当前进程凭证
* 凭证和用户命名空间的哈希值
* 调用栈
它比较调用前后的凭证以检测未经授权的更改。如果检测到非法的权限提升,它会生成一个包含凭证字段的 psd_event,并通过 perf 缓冲区提交。
VED-eBPF 需要:
VED-eBPF 目前是一个概念验证,展示了基于 eBPF 的内核利用和 rootkit 检测的潜力。正在进行的工作包括:
VED-eBPF 展示了 eBPF 在无需修改内核的情况下构建高效、低开销的内核安全监控的潜力。通过利用 eBPF 追踪和 perf 缓冲区,可以实时提取关键安全事件并进行分析,以识别云原生环境中的新兴内核威胁。