← 最新论文
💻 computer science

The Linux IOCTL Census: A Source-Derived Database of the Linux Kernel Control-Code Surface

本文介绍了 Linux IOCTL Census,这是一个通过分析 878 个模块来识别分发点、命令码和安全闸口,从而系统地编录 Linux 内核 ioctl 命令表面的源自源码的数据库,进而实现跨平台漏洞分析与威胁建模。

原作者: Michael J. Bommarito

发布于 2026-06-10
📖 1 分钟阅读☕ 轻松阅读

原作者: Michael J. Bommarito

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,Linux 操作系统是一座规模宏大、繁忙喧嚣的城市。在这座城市内部,有成千上万个专门的店铺(称为驱动程序),它们控制着从你的鼠标、键盘到硬盘和网卡的一切。

为了在这些店铺中完成任何事情,你(用户)必须向店员递交一张特定的票据。这张票据是一个被称为 IOCTL 命令的数字。如果你递交了正确的票据,店员就会打开门并按照你的要求办事。如果你递交了错误的票据,或者票据中隐藏了陷阱,店员可能会不小心损坏店铺、窃取数据,或者让陌生人溜进来。

问题在于,这些票据并没有一个中央电话簿。每个店员都发明了自己的票据,编写了自己的规则,并将它们保存在各自的后勤办公室里。安全专家试图寻找薄弱环节时,不得不逐一敲开每一扇门,希望能遇到一位忘记检查票据有效性的店员。

本论文介绍了一种针对这些票据的“城市人口普查”。

以下是作者如何构建这个普查系统以及他们发现了什么,使用了简单的类比:

1. 大地图(人口普查)

作者并没有通过逐一敲门来工作,而是制造了一个机器人来阅读整个城市的蓝图(源代码)。

  • 过程: 他们编译了一份清单,列出了在标准城市布局中营业的所有店铺(878 个模块)。
  • 结果: 他们创建了一个巨大的、可搜索的数据库,其中包含:
    • 586 个票据分发员: 接待你的主要前台人员。
    • 1,289 个解码票据: 他们弄清楚了 1,289 个不同票据数字的具体含义(例如,“检查状态”、“写入数据”)。
    • 3,583 个危险开口: 他们发现了某些地方,店员在接收你的票据后,在没有检查其是否安全的情况下就立即采取行动(就像一个店员在检查你的身份证之前,就让你触摸商品一样)。

2. “VIP 过滤器”(威胁模型)

并非所有的店铺都向公众开放。有些店铺只对市长(系统管理员)或警察(安全模块)开放。

  • 问题: 如果一家店被“仅限市长”的闸门锁住了,普通公民就进不去,因此对于日常黑客来说,这方面的风险较小。
  • 解决方案: 作者在他们的地图中添加了一个过滤器。他们问道:“是否存在一个硬性锁(能力门控/capability gate)可以阻止普通人进入?”
  • 结果: 他们过滤掉了 50 家严格管控的店铺。这留下了 281 家可能对普通人开放的店铺。这并不保证任何人都能进去,但这是“最坏情况”下的清单,即那些可能可以触达的地方。

3. “安全检查”(净化/Sanitization)

作者观察了这 281 家潜在开放的店铺,看看店员是否足够谨慎。

  • 启发式方法: 他们寻找一种特定的模式:店员是否在让用户接触敏感内容之前,先检查了票据的大小?
  • 发现: 他们发现了 3,201 个店员似乎跳过了此项检查的地方。
  • 免责声明: 作者对此很诚实。他们称这是一种“代理”(proxy)或“最佳猜测”。这就像看到店员瞥了一眼票据,就假设他们已经检查过了,而没有实际观察他们进行数学运算的过程。这是一个关于有多少地方可能存在风险的上限定,而不是一份确认已损坏店铺的名单。

4. 测试地图(回测)

为了验证其地图的准确性,作者选取了近期在城市中发现的 22 个已知安全漏洞(CVEs),并检查了他们的地图是否显示了这些漏洞。

  • 成功之处: 他们的地图找到了其中 7 个漏洞的位置。
  • 遗漏之处: 他们漏掉了 15 个。为什么?因为那 15 个漏洞位于未使用标准“票据柜台”系统的店铺中。它们使用了秘密侧门或其他的交付方式,而机器人的程序尚未涵盖这些方式。
  • 教训: 该地图在寻找标准票据柜台方面非常出色,但它需要学习关于“秘密侧门”(如显卡或视频驱动程序使用的侧门)的知识,才能变得完整。

5. 为什么这很重要

  • 它是静态列表: 不同于其他尝试通过运行并使系统崩溃来破坏城市的工具(动态测试),这个工具只是阅读蓝图。它发现了危险的“形状”,即使目前还没有人尝试入侵那里。
  • 它是可搜索的: 安全研究人员现在可以提出问题,例如:“显示所有使用‘看门狗’(Watchdog)票据且没有锁的店铺。”他们不必再手动阅读数千页的代码。
  • 它是开放的: 作者发布了地图的“结构化”部分(店铺和票据的列表)供所有人使用,但他们将“针对性”部分(即具体的、最危险且未经验证的漏洞列表)保持私密,以防止恶意行为者立即利用它。

总结

作者为 Linux 内核的控制按钮构建了一个可搜索的清单。他们绘制了数千个命令的地图,过滤掉了那些被“仅限管理员”闸门锁住的部分,并强调了那些看起来可能缺少安全检查的部分。这并不是一份确认存在的 Bug 清单,而是一张庞大且有组织的地图,它告诉安全专家应该首先去哪里寻找它们。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →