声明受影响 ≠ 真的有漏洞
数据库标注的受影响区间,可能包含已经修复的版本。选错版本,后续的构建和测试都会落空。
PoC 只是故事的一半。KernJC 从补丁与内核源码出发,找到真正受影响的版本、挖掘隐蔽的配置条件,自动构建内核漏洞复现的虚拟环境。
KERNEL JIAOCHANG / 内核校场 — RAID 2024
评测样本成功复现
需要非默认配置
发现错误版本声明
漏洞复现需要一个存在漏洞、又能从用户空间触达漏洞的环境。版本号看起来对了、源码里也有漏洞函数,都还不够。
数据库标注的受影响区间,可能包含已经修复的版本。选错版本,后续的构建和测试都会落空。
条件编译与 Kconfig 关系决定了功能是否出现。PoC 所需的接口,还可能藏在另一项配置背后。
将配置合入内核并编译,配上根文件系统,再启动虚拟机。KernJC 将这些步骤连接成一条流程。
NVD CLAIM / 论文中记录的版本区间
KCONFIG / 聚焦关键条件的局部关系图
← 左右滑动查看关系图 · 点击节点了解作用 →
这里只展示部分直接配置与一项关键隐藏配置。完整发现集合包含更多候选项;颜色表示发现进度,不表示内核启用位;「源码 / 路径分析」表示直接分析已完成。
PROVISIONING / 从源码到运行环境
演示输入:v5.11.14 + KernJC 配置发现结果
从漏洞信息与补丁建立画像,再把版本验证、配置发现和环境生成连接起来。KernJC 的核心,是把复现前提转化为可分析的证据。
I / PATCH-BASED VERSION IDENTIFICATION
将数据库声明映射到实际发布版本,从区间上界向下扫描。结合补丁内容与源码上下文识别已存在的修复,跳过这些版本,直到找到未包含修复的候选版本。
这里判断的是修复是否存在;最终复现仍需要合适配置与可工作的 PoC。
II / GRAPH-BASED CONFIG IDENTIFICATION
先从描述、构建路径和条件编译中提取直接配置,再将 Kconfig 的 depend、opaque_depend、select、imply 关系建成有向图,发现可达项以及反向关联项。
论文评测中,HSC / HDC 使用一跳探索,虚拟菜单不计跳数。输出是候选配置集合,并不保证是最小集合。
论文选取了安全研究中的 66 个真实内核漏洞,使用已有 PoC 评测。每个方块代表一个样本,点击查看它的复现条件。
数据:论文 §5.2、Table 2 与 Appendix B。
这些结果对应论文评测集与实验设置。
66 个样本 · 32 个需要非默认配置 · 4 个存在版本问题
CVE-2021-22555
需要非默认配置 · NVD 版本声明有误 · KernJC 环境中成功复现
在更大数据集的分析中发现 128 个 CVE 存在错误版本声明,涉及 3,042 条误报版本记录。它们与上方 66 个 PoC 评测样本属于不同分析范围。
READ §5.427th International Symposium on Research in Attacks, Intrusions and Defenses · RAID 2024 · pp. 384–402
@inproceedings{ruan2024kernjc,
title={KernJC: Automated Vulnerable Environment Generation for Linux Kernel Vulnerabilities},
author={Ruan, Bonan and Liu, Jiahao and Zhang, Chuqi and Liang, Zhenkai},
booktitle={Proceedings of the 27th International Symposium on Research in Attacks, Intrusions and Defenses},
pages={384--402},
year={2024},
doi={10.1145/3678890.3678891}
}