BONAN RUAN / 研究展示
LINUX KERNEL · VULNERABILITY REPRODUCTION

KernJC

让漏洞,
在正确的内核里重现

PoC 只是故事的一半。KernJC 从补丁与内核源码出发,找到真正受影响的版本、挖掘隐蔽的配置条件,自动构建内核漏洞复现的虚拟环境。

KERNEL JIAOCHANG / 内核校场   —   RAID 2024

从版本、配置到可复现环境原创分层示意图:通过验证的内核源码、配置依赖图和根文件系统组合成 QEMU 虚拟机。橙色节点表示隐藏配置。 ROOT FILESYSTEM HIDDEN CONFIG KCONFIG DEPENDENCIES VERIFIED KERNEL SOURCE 01 / VERSION02 / CONFIG03 / ROOTFS QEMU / REPRO ENVvulnerability reachable ENVIRONMENT, RECONSTRUCTED
FIG. 01   THE MISSING HALFCODE-DRAWN / SVG + CSS
Best Practical Paper Award27th RAID · 2024
66/ 66

评测样本成功复现

48.5%

需要非默认配置

128CVEs

发现错误版本声明

有了 PoC,
为什么还是复现不了?

漏洞复现需要一个存在漏洞、又能从用户空间触达漏洞的环境。版本号看起来对了、源码里也有漏洞函数,都还不够。

A / VERSION GAP

声明受影响 ≠ 真的有漏洞

数据库标注的受影响区间,可能包含已经修复的版本。选错版本,后续的构建和测试都会落空。

B / CONFIG GAP

代码被编入 ≠ 路径可触达

条件编译与 Kconfig 关系决定了功能是否出现。PoC 所需的接口,还可能藏在另一项配置背后。

C / ENVIRONMENT GAP

选好源码,仍要搭建环境

将配置合入内核并编译,配上根文件系统,再启动虚拟机。KernJC 将这些步骤连接成一条流程。

亲手补上,缺失的环境

CVE-2021-22555 / NETFILTER / 论文案例
kernjc / environment workbench交互原理演示 · 本页不执行内核构建

NVD CLAIM / 论文中记录的版本区间

< v5.12声明范围内也有已修复版本
← 较早版本从上界向下检查 ←
net/netfilter/x_tables.c
// fixing patch / source context
xt_compat_target_from_user(...) 修复补丁的改动已存在于源码中
SELECTED: v5.11.22
v5.11.22 已修复,无法用于此漏洞的复现。
01 / 检查版本是否已经包含修复CASE SOURCE / §2.2 ↗

两种证据,连接同一条路径

从漏洞信息与补丁建立画像,再把版本验证、配置发现和环境生成连接起来。KernJC 的核心,是把复现前提转化为可分析的证据。

I / PATCH-BASED VERSION IDENTIFICATION

用补丁校准版本边界

将数据库声明映射到实际发布版本,从区间上界向下扫描。结合补丁内容与源码上下文识别已存在的修复,跳过这些版本,直到找到未包含修复的候选版本。

3.91 s论文评测中的平均版本识别耗时
不含内核编译与环境启动

这里判断的是修复是否存在;最终复现仍需要合适配置与可工作的 PoC。

II / GRAPH-BASED CONFIG IDENTIFICATION

从显式线索,走向隐藏关系

先从描述、构建路径和条件编译中提取直接配置,再将 Kconfig 的 depend、opaque_depend、select、imply 关系建成有向图,发现可达项以及反向关联项。

DDC描述中的配置
DPC路径中的配置
DCC代码中的配置

论文评测中,HSC / HDC 使用一跳探索,虚拟菜单不计跳数。输出是候选配置集合,并不保证是最小集合。

把环境找对,
让复现真正发生

论文选取了安全研究中的 66 个真实内核漏洞,使用已有 PoC 评测。每个方块代表一个样本,点击查看它的复现条件。

66 / 66KernJC 环境中
成功复现

数据:论文 §5.2、Table 2 与 Appendix B。
这些结果对应论文评测集与实验设置。

默认配置可复现需要非默认配置存在错误版本声明

66 个样本 · 32 个需要非默认配置 · 4 个存在版本问题

CVE-2021-22555

需要非默认配置 · NVD 版本声明有误 · KernJC 环境中成功复现

128 CVEs / 更大范围的版本检查

在更大数据集的分析中发现 128 个 CVE 存在错误版本声明,涉及 3,042 条误报版本记录。它们与上方 66 个 PoC 评测样本属于不同分析范围。

READ §5.4

KernJC: Automated Vulnerable Environment Generation for Linux Kernel Vulnerabilities

27th International Symposium on Research in Attacks, Intrusions and Defenses · RAID 2024 · pp. 384–402

Bonan Ruan · Jiahao Liu · Chuqi Zhang · Zhenkai Liang
National University of Singapore