创新资助计划 | 用 eBPF 观察 eBPF:openEuler 内核安全研究与防护实践

创新资助计划 | 用 eBPF 观察 eBPF:openEuler 内核安全研究与防护实践

陈秋实

2026-10-16 发布26 浏览 · 0 点赞 · 0 收藏

网络安全学院学生创新资助计划(三期)项目展示

项目名称: 基于(openEuler) eBPF的网络安全威胁及漏洞研究

eBPF 让操作系统能够在内核中灵活执行网络观测与安全检测程序。但当这项能力被恶意利用,或相关内核代码存在缺陷时,负责“看见风险”的工具本身也可能成为攻击入口。如何识别这些风险,又如何利用 eBPF 的观测能力保护系统,是本项目关注的核心问题。

围绕 openEuler 的 eBPF 及相关网络内核模块,项目将威胁建模、源码审计、漏洞验证与检测原型开发结合起来,形成了从风险分析到防护实践的一套研究成果。

从生命周期出发,梳理安全风险

项目采用 STRIDE 威胁建模方法,从欺骗、篡改、抵赖、信息泄露、拒绝服务和权限提升六个维度,梳理 eBPF 程序加载、验证、编译、挂载、执行及数据交互过程中的风险,并结合恶意活动的攻击路径,将分析结果转化为具体的观测点和检测需求。

图 1:项目梳理的 eBPF 生命周期与潜在威胁,展示程序从用户态加载到内核执行的关键环节。

如图 1 所示,程序进入内核后,需要经过验证器检查、即时编译,并通过挂载点和 BPF Map 与系统交互。项目沿着这一流程分析各环节的信任边界,将程序加载权限、内存访问安全和数据交互风险纳入统一的分析框架,为源码审计和防护设计建立依据。

在此基础上,项目结合恶意程序注入、隐蔽通信和高危辅助函数滥用等场景,梳理攻击行为与内核可观测事件之间的对应关系。例如,程序注入可通过加载事件进行追踪,高危辅助函数的使用可在程序验证阶段被识别。这些分析将威胁模型转化为具体的检测需求,支撑了原型的探针选型与规则设计。

让漏洞分析落到可复现的实验

项目围绕 kTLS 异步处理漏洞(CVE-2026-31533)与 MLX5 XDP 分片计数漏洞(CVE-2026-43465),开展了目标版本的源码差异分析与根因研究。

针对 kTLS 漏洞触发依赖特定异步加密条件的问题,项目开发了故障注入模块和用户态触发程序,在 QEMU/KVM 环境中构造可重复的测试条件。实验记录显示,openEuler 24.03-LTS-SP2 指定官方内核在 5 次独立运行中均出现崩溃;采用修复补丁的 Linux 6.6.50 对照内核运行相同测试工具时,未出现崩溃。这为缺陷分析和修复方案提供了实验依据。

这一实验的关键,是将异步加密中的积压与错误条件转化为可控制的输入,再结合内核日志和调用栈追踪双重清理导致的内存破坏路径。故障注入模块、触发程序与对照实验共同构成了可重复使用的测试工具链。

针对 MLX5 XDP 分片计数漏洞,项目通过源码差异分析定位了分片管理中的指针算术与引用计数问题,完成了对应的 XDP 触发程序编写,并给出了补丁修复方案。

用 eBPF 监控 eBPF 的可疑行为

在漏洞研究之外,项目实现了基于 eBPF 的网络入侵检测原型,将观测范围扩展到程序加载、高危辅助函数使用及相关系统行为。原型围绕程序注入、隐蔽控制通信、进程隐藏和高危辅助函数滥用四类攻击链设计了 8 条检测规则,由内核探针采集事件,用户态规则引擎分析并输出结构化告警。

图 2:检测原型架构设计,包含内核探针、BPF Map、用户态规则引擎与告警输出通道。

如图 2 所示,原型采用“内核态采集、用户态分析”的分工:探针记录系统事件,经环形缓冲区传递给用户态守护进程,再进行阈值判断、模式匹配和行为关联。告警以 JSON 等形式输出,携带进程身份、规则名称和事件参数,使检测结果能够被记录和追溯。

原型的一项关键设计,是在程序加载时的验证阶段观测高危辅助函数的使用申请,并生成告警。项目通过对照实验确定了这一检测位置,使相关行为在程序执行前即可被识别,验证了“以 eBPF 监控 eBPF”的一种可行路径。

在模拟场景中,白名单外程序加载、加载频率超限、高频目录扫描和高危辅助函数使用共 4 条规则完成了端到端验证,打通了从内核事件采集、用户态规则匹配到结构化告警输出的完整链路。原型还实现了告警去重,减少同一行为产生的大量重复告警。

在一次完整模拟演示中,原型共输出 31 条告警,分别对应白名单外加载 21 条、加载频率超限 1 条、高频目录扫描 5 条及高危辅助函数使用 4 条,形成了从模拟行为到检测结果的具体验证记录。

形成配套的防护工具与研究成果

项目最终交付了威胁分析与测试报告、漏洞触发代码、补丁修复方案、专项监测工具,以及通用检测原型和验证文档。其中,补丁用于消除已知缺陷,监测与检测工具用于提供风险线索和告警,分别承担不同的防护职责。

面向 openEuler 现有安全生态,项目完成了通过 Unix Socket、共享 BPF Map 和日志通道对接 safeguard 的方案设计,并验证了 Socket 创建与绑定、BPF Map 固定等基础功能,为检测数据与现有安全机制的衔接提供了接口基础。

项目围绕 openEuler eBPF 安全,形成了贯穿威胁建模、漏洞验证与行为检测的研究与防护方法。源码审计与对照实验为漏洞分析和修复提供依据,检测原型将风险特征转化为可观测事件与结构化告警。配套的分析报告、测试工具和原型代码,为同类内核安全问题的排查、复现与防护提供了可复用的实践基础。

请前往 登录/注册 即可发表您的看法…