eliainnocenti/ebpf-cve-analysis
GitHub: eliainnocenti/ebpf-cve-analysis
一个自动化分析和分类eBPF相关CVE漏洞的流水线,用于识别安全缺陷并开发概念验证利用。
Stars: 1 | Forks: 0
# eBPF CVE 分析

本仓库包含了 **eBPF CVE 分析** 研究项目的所有材料和文档,该项目是都灵理工大学 *Security Verification and Testing* (2025/2026) 课程的一部分。
## 目录
- [概述](#overview)
- [阶段 1 — 自动化 CVE 发现与分类](#phase-1--automated-cve-discovery--classification)
- [阶段 2 — 深度分析与概念验证利用](#phase-2--deep-analysis--proof-of-concept-exploits)
- [报告与文档](#reports--documentation)
- [前置条件](#prerequisites)
- [快速开始](#quick-start)
- [作者](#authors)
## 概述
扩展伯克利数据包过滤器 (eBPF) 是现代 Linux 系统中的一项基础技术,为网络、可观测性和安全提供高性能的内核内执行能力。**Cilium**、**Falco**、**Calico**、**Katran** 和 **bpftrace** 等工具依赖 eBPF 在生产环境和云原生环境中提供关键功能。
本项目通过两个阶段研究 eBPF 生态系统的安全态势:
1. **自动化 CVE 发现与分类** — 一个 Python 流水线,处理来自 [cvelistV5](https://github.com/CVEProject/cvelistV5) 的 253,000 多条 CVE 记录,识别与 eBPF 相关的漏洞,并沿着多个维度对其进行分类。
2. **深度分析与概念验证利用** — 对选定的 8 个 CVE 进行深入的安全分析和利用,这些 CVE 跨越 eBPF 内核子系统和基于 eBPF 的工具中的 6 个漏洞类别。
## 阶段 1 — 自动化 CVE 发现与分类
一个用于发现、过滤和分类与基于 eBPF 的工具及 eBPF 内核子系统相关 CVE 的自动化流水线。
### 流水线特性
- **CVE 过滤**:使用词边界匹配,将 CVE 与可配置的 24 个 eBPF 工具列表进行匹配。
- **误报过滤**:基于上下文的规则来消除模糊匹配(例如,“bcc” 邮件 vs BCC 工具)。
- **多维分类**:
- *包含类别*:`Included` (内核 eBPF) / `External` (工具特定) / `Excluded` (误报)
- *漏洞类型*:`eBPF_Vuln` / `eBPF_Limitation` / `Dev_Error`
- *技术类别*:验证器、JIT、映射、辅助函数、核心、网络子系统、BTF、探针等。
- *程序类型*:XDP、TC、kprobe 等。
- **辅助函数检测**:提取引用的 eBPF 辅助函数。
- **利用检测**:标记有已知利用的 CVE。
- **可配置自动填充**:通过 [`src/config.py`](src/config.py) 中的 `FILL_*` 标志控制哪些列被自动填充。
- **双重输出**:生成原始候选 CVE 和已分类的输出。
### 适配流水线至其他领域
该流水线在设计上是**领域无关的**。对于大多数类似的应用,将其适配到不同的领域只需要编辑 [`src/config.py`](src/config.py) — 所有特定领域的知识(关键词列表、工具启发式规则、分类标签、文件路径)都集中在此。核心逻辑模块(`filter.py`、`classifier.py`、`utils.py`、`run_analysis.py`)应该不需要更改。即使对于差异很大的用例,需要的修改量也应该有限。
### 输出数据
| 文件 | 描述 |
|---|---|
| [`data/processed/cve_candidates.xlsx`](data/processed/cve_candidates.xlsx) | 分类前的原始 CVE 候选列表 |
| [`data/processed/ebpf_cves_classified.xlsx`](data/processed/ebpf_cves_classified.xlsx) | 已分类的 CVE(自动填充 + 人工审核) |
| [`cve_analysis_final/ebpf_cves_classified_final.xlsx`](cve_analysis_final/ebpf_cves_classified_final.xlsx) | 包含选定的 8 个 CVE 的最终精选数据集 |
## 阶段 2 — 深度分析与概念验证利用
从 74 个已分类的候选者中,基于漏洞类型的多样性、受影响的子系统、实际相关性和技术细节的可用性,**选择了 8 个 CVE** 进行深入的安全分析。
### 选定的 CVE
| CVE ID | 类别 | 工具 | 漏洞类别 | 分析员 |
|---|---|---|---|---|
| [CVE-2025-40183](cve_analysis_final/cves_innocenti/CVE-2025-40183/) | Included | Cilium | 资源耗尽(内存泄漏) | Innocenti |
| [CVE-2023-54173](cve_analysis_final/cves_innocenti/CVE-2023-54173/) | Included | Cilium | 并发 / 抢占 Bug | Innocenti |
| [CVE-2024-58099](cve_analysis_final/cves_innocenti/CVE-2024-58099/) | Included | Cilium | 驱动集成(DMA 损坏) | Innocenti |
| [CVE-2022-49697](cve_analysis_final/cves_innocenti/CVE-2022-49697/) | Included | Calico | 引用计数泄漏 | Innocenti |
| [CVE-2025-37959](cve_analysis_final/cves_soldera/CVE-2025-37959/) | Included | Cilium | 命名空间隔离失败 | Soldera |
| [CVE-2021-47128](cve_analysis_final/cves_soldera/CVE-2021-47128/) | Included | bpftrace | SELinux / 审计交互 Bug | Soldera |
| [CVE-2021-33505](cve_analysis_final/cves_soldera/CVE-2021-33505/) | External | Falco | TOCTOU 竞争条件 | Soldera |
| [CVE-2023-49062](cve_analysis_final/cves_soldera/CVE-2023-49062/) | External | Katran | 信息泄露(未初始化内存) | Soldera |
### 两个漏洞类别
这 8 个 CVE 跨越两个不同的类别:
1. **由工具触发的内核侧 eBPF Bug**(6 个 CVE) — 漏洞存在于 Linux 内核的 eBPF 基础设施中(辅助函数、驱动集成、网络子系统)。工具(Cilium、Calico、bpftrace)通过在生产条件下执行特定的内核代码路径*触发并发现了*这些 Bug。
2. **工具编写的 eBPF 代码中的 Bug**(2 个 CVE) — 工具自身编写的 eBPF 程序(Falco、Katran)中的漏洞。修复应用于工具的代码,而非 Linux 内核。
## 技术报告 (PDF)
| 报告 | 描述 | 链接 |
|---|---|---|
| **eBPF 工具漏洞** | 共同报告:自动化流水线、方法论、分类结果、CVE 选择理由 | [`docs/report/eBPF_tools_vulnerability.pdf`](docs/report/eBPF_tools_vulnerability.pdf) |
| **CVE 分析 — Innocenti** | 4 个 CVE 的深度分析(CVE-2022-49697、CVE-2023-54173、CVE-2024-58099、CVE-2025-40183)及 PoC 利用 | [`docs/report/CVE_Analysis_Innocenti.pdf`](docs/report/CVE_Analysis_Innocenti.pdf) |
| **CVE 分析 — Soldera** | 4 个 CVE 的深度分析(CVE-2025-37959、CVE-2021-47128、CVE-2021-33505、CVE-2023-49062)及 PoC 利用 | [`docs/report/CVE_Analysis_Soldera.pdf`](docs/report/CVE_Analysis_Soldera.pdf) |
## 前置条件
- Python 3.10+
- 来自 [cvelistV5 发布版本](https://github.com/CVEProject/cvelistV5/releases) 的 CVE 数据(作为 git 子模块包含)
- 包含 eBPF 工具名称的 Excel 文件
CVE 复现请参阅上方链接的各个 CVE 的 README 和设置指南。
## 快速开始
### 运行 CVE 分析流水线
```
# 克隆仓库
git clone --recurse-submodules https://gitlab1.polito.it/netgroup/thesis/projects/svt-2025-26/ebpf-cve-analysis/
cd ebpf-cve-analysis
# 创建并激活虚拟环境
python -m venv venv
source venv/bin/activate # Mac/Linux
# 安装依赖
pip install -r requirements.txt
# 运行分析
python scripts/run_analysis.py
```
### Git 子模块
本仓库包含 Git 子模块(cvelistV5 原始数据)。如果你在克隆时**没有**使用 `--recurse-submodules`:
```
git submodule update --init --recursive
```
要更新子模块到预期的最新提交:
```
git submodule update --recursive
```
## 作者
| 姓名 | GitHub | LinkedIn | 电子邮件 |
| ---- | ------ | -------- | ----- |
| Elia Innocenti | [](https://github.com/eliainnocenti) | [](https://www.linkedin.com/in/eliainnocenti/) | [](mailto:elia.innocenti@studenti.polito.it) |
| Marco Soldera | [](https://github.com/Soldera21) | [](https://www.linkedin.com/in/marcosoldera/) | [](mailto:marco.soldera@studenti.polito.it) |
*这项工作是都灵理工大学 2025/2026 学年 Security Verification and Testing 课程的一部分开发的。*
标签:0day挖掘, CVE分类, CVE处理, eBPF安全, GPT, Linux内核, Python编程, 内核安全, 内核漏洞, 利用开发, 反取证, 威胁情报, 安全管道, 安全评估, 安全验证与测试, 开发者工具, 数据解析, 概念验证利用, 漏洞分析, 漏洞分类, 漏洞管理, 网络安全, 网络安全研究, 路径探测, 逆向工具, 防御框架, 隐私保护