Beyond Edge Coverage: Per-Task Data-Flow Extraction at Kernel Function Boundaries via LLVM
本文介绍了 TOOLNAME,这是一个基于 LLVM 的插桩框架,它通过扩展 Linux KCOV 来捕获内核边界处的每任务函数参数和返回值的流向数据,从而在无需修改源码或产生显著运行时开销的情况下,实现上下文感知的模糊测试和高效的根因分析。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下 Linux 内核是一座庞大且繁忙的城市,拥有超过 4000 万栋建筑(代码行)。安全研究人员使用“模糊测试器”(fuzzers)——本质上就是自动化的机器人,向城市围墙投掷随机石块,看看是否会砸坏任何东西。
多年来,这些机器人识别是否击中目标的唯一方式只有一种:边缘覆盖率(Edge Coverage)。这就像是一个安保摄像头,它只记录一个人走过了哪些门。如果一个人走进了前门,然后又进了厨房门,摄像头就会记录下“前门 → 厨房”。
问题所在:“盲目”的机器人
问题在于,两个不同的人可以经过完全相同的门,但携带的东西却截然不同。
- 人物 A 走过厨房门时,手里拿着一个无害的苹果。
- 人物 B 走过同样的厨房门时,手里却拿着一颗炸弹。
安保摄像头(模糊测试器)看到的路径完全一样:都是“前门 → 厨房”。它并不知道人物 B 是危险的。在现实世界中,这意味着机器人会不断地向同样的门投掷石块,认为自己取得了进展,却忽略了隐藏在参数(即携带的“东西”)中的真正炸弹。这就是所谓的“覆盖率饱和”(coverage saturation)——机器人陷入了停滞,因为它无法分辨一个安全的苹果和一个危险的炸弹。
解决方案:KCOV-DATAFLOW
作者 Yunseong Kim 开发了一种名为 KCOV-DATAFLOW 的新工具。它不再仅仅观察人们走过了哪些门,而是像一位观察力极其敏锐的保安,站在每一个门口,并准确记录下每个人携带的具体物品。
以下是它的工作原理,使用简单的类比说明:
1. “智能门口”(LLVM 插桩)
该工具在城市建造之前,先修改了城市的蓝图(代码)。它在每一个单体门口(函数边界)安装了一个微小的、隐形的传感器。
- 功能: 当有人经过时,传感器会立即拍摄其身份 ID、所持物品(参数)以及留下的痕材(返回值)的照片。
- 神奇之处: 它不仅仅是看到一个“盒子”。如果这个盒子是一个复杂的包裹(结构体/struct),传感器会自动拆开它,列出里面所有的物品,即使这个包裹被层层包裹。它无需任何人手动为代码中的盒子贴标签,即可实现这一功能。
2. “沉默的信使”(无锁环形缓冲区)
一旦传感器拍下了照片,它需要将信息发送给外部的安全团队,同时不能减慢城市运行的速度或造成交通拥堵。
- 类比: 想象一条沿着城市运行的高速传送带(环形缓冲区)。传感器将笔记丢到传送带上。
- 特别之处: 它是“无锁”(lock-free)的,这意味着传感器不需要等待许可即可丢下笔记。它们只需放下笔记并继续行动。这确保了即使有传感器在工作,城市也能保持顺畅运行。它还为每一个人(任务/task)保留了独立的笔记,因此人物 A 的笔记不会与人物 B 的笔记混淆。
3. “通用翻译官”(Rust 支持)
这座城市有两种类型的施工队:传统的 C 语言施工队和现代的 Rust 语言施工队。
- 挑战: Rust 施工队建造事物的方式不同,他们的蓝图往往会隐藏细节(优化),使得很难看清盒子内部的情况。
- 解决方法: KCOV-DATAFLOW 有两种处理方式。它可以等城市建成后再翻译 Rust 蓝图(编译后处理),也可以直接与 Rust 施工队合作,在建设过程中安装传感器。这是首次有人能够在 Rust 运行时精确观察其函数的携带内容。
这究竟实现了什么
论文证明了该工具解决了两个主要问题:
- 对于机器人(模糊测试器): 现在,当机器人看到“前门 → 厨房”时,它还能看到“携带了一颗炸弹”。它可以意识到:“噢!这条路径很危险!”并把精力集中在那里。它不再浪费时间在安全的路径上,而是开始寻找真正的漏洞。
- 对于人类侦探(分析师): 当发生崩溃时,侦探看到的不再仅仅是“厨房门开了”。他们会得到一份完整的报告:“厨房门开了,且此人携带了一个标记为‘大小:15’的炸弹。”这能帮助他们比以前更快地查明爆炸的原因,而无需挖掘残骸(崩溃转储)或安装会减慢城市速度的嘈杂、缓慢的麦克风(kprobes)。
“现实检验”
作者在真实的城市场景(内核模块)中测试了该工具,发现:
- 它能捕捉到“沉默”的漏洞,即城市没有崩溃但行为异常的情况(例如,由于数字看起来相似,守卫接受了一个假 ID)。
- 即使在城市全速运转(开启优化)时,它依然有效。
- 它对城市运营带来的额外负担极低(低开销),使其可以安全地持续使用。
简而言之: KCOV-DATAFLOW 将一个只能计数脚步的监控系统,变成了一个能够阅读行李的智能系统,帮助机器人和人类都能发现隐藏在细节中的真正危险。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。