eliainnocenti/ebpf-cve-analysis

GitHub: eliainnocenti/ebpf-cve-analysis

一个自动化分析和分类eBPF相关CVE漏洞的流水线,用于识别安全缺陷并开发概念验证利用。

Stars: 1 | Forks: 0

# eBPF CVE 分析 ![polito-logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/81b2d0b2ef070617.jpg) 本仓库包含了 **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 | [![GitHub](https://img.shields.io/badge/GitHub-Profile-informational?logo=github)](https://github.com/eliainnocenti) | [![LinkedIn](https://img.shields.io/badge/LinkedIn-Profile-blue?logo=linkedin)](https://www.linkedin.com/in/eliainnocenti/) | [![Email](https://img.shields.io/badge/Email-Send-blue?logo=gmail)](mailto:elia.innocenti@studenti.polito.it) | | Marco Soldera | [![GitHub](https://img.shields.io/badge/GitHub-Profile-informational?logo=github)](https://github.com/Soldera21) | [![LinkedIn](https://img.shields.io/badge/LinkedIn-Profile-blue?logo=linkedin)](https://www.linkedin.com/in/marcosoldera/) | [![Email](https://img.shields.io/badge/Email-Send-blue?logo=gmail)](mailto:marco.soldera@studenti.polito.it) | *这项工作是都灵理工大学 2025/2026 学年 Security Verification and Testing 课程的一部分开发的。*
标签:0day挖掘, CVE分类, CVE处理, eBPF安全, GPT, Linux内核, Python编程, 内核安全, 内核漏洞, 利用开发, 反取证, 威胁情报, 安全管道, 安全评估, 安全验证与测试, 开发者工具, 数据解析, 概念验证利用, 漏洞分析, 漏洞分类, 漏洞管理, 网络安全, 网络安全研究, 路径探测, 逆向工具, 防御框架, 隐私保护