VED(Vault Exploit Defense ↗)-eBPF 利用 eBPF(扩展的伯克利数据包过滤器)实现 Linux 系统的运行时内核安全监控和漏洞检测。
介绍
eBPF 是内核中的虚拟机,允许在不修改内核源代码的情况下在内核中执行代码。eBPF 程序可以连接到 tracepoints,kprobes 和其他内核事件,以有效地分析执行和收集数据。
VED-eBPF 使用 eBPF 来追踪安全敏感的内核行为,并检测可能指示漏洞或 rootkit 的异常。它提供两种主要的检测:
l wCFI(控制流完整性)追踪内核调用栈以检测控制流劫持攻击。它通过生成有效调用站点的位图,并验证每个返回地址与已知调用站点匹配来工作。
l PSD(特权升级检测)追踪内核中凭据结构的更改以检测未经授权的特权升级。
VED-eBPF是如何工作的
VED-eBPF 将 eBPF 程序连接到内核函数以追踪执行流并提取安全事件。eBPF 程序通过 perf 缓冲区将这些事件提交给用户空间进行分析。
wCFI
wCFI 通过连接到命令行上指定的函数来追踪调用栈。在每次调用时,它都会转储栈,分配一个栈 ID,并验证返回地址是否与从 objdump 和 /proc/kallsyms 生成的有效调用站点的预计算位图匹配。
如果检测到无效的返回地址,表示栈已损坏,它将生成一个包含以下内容的 wcfi_stack_event:
* 栈跟踪
* 栈 ID
* 无效的返回地址
此安全事件通过 perf 缓冲区提交给用户空间。wCFI eBPF 程序还跟踪栈指针和内核文本区域的更改,以保持验证的更新。
PSD
PSD 通过连接到类似 commit_creds 和 prepare_kernel_cred 的函数来追踪凭据结构的修改。在每次调用时,它提取信息,如:
* 当前进程凭据
* 凭据和用户命名空间的哈希
* 调用栈
它将调用前后的凭据进行比较,以检测未授权的更改。如果检测到非法的特权升级,它会生成一个包含凭据字段的 psd_event,并通过 perf 缓冲区提交。
先决条件
VED-eBPF 需要:
lLinux 内核 v5.17+(在 v5.17 上测试)
l启用 eBPF 支持
lBCC 工具包
当前状态
VED-eBPF 目前是一个概念验证,展示了基于 eBPF 的内核漏洞和 rootkit 检测的潜力。正在进行的工作包括:
* 扩大攻击覆盖范围
* 性能优化
* 额外的内核版本
* 与安全分析的集成
结论
VED-eBPF 展示了 eBPF 在构建高效、低开销的内核安全监控而无需修改内核的可能性。通过利用 eBPF 跟踪和 perf 缓冲区,可以实时提取关键安全事件并进行分析,以识别云原生环境中正在出现的内核威胁。
https://hardenedvault.net/zh-cn/news/2023-08-11-ved-ebpf-poc/
原文始发于微信公众号(赛博堡垒):VED-eBPF:使用 eBPF 进行内核漏洞和 Rootkit 检测
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论