【问题标题】:Fuzzing the Linux Kernel: A student in peril.对 Linux 内核进行模糊测试:处于危险之中的学生。
【发布时间】:2011-11-25 12:16:06
【问题描述】:

我目前在一所大学攻读计算相关学位,我目前的项目专注于寻找 Linux 内核中的漏洞。我的目标是对内核(针对 3.0 版)进行静态审计和“模糊测试”,以试图找到漏洞。

我的第一个问题是“简单”是否可以对 Linux 内核进行模糊测试?我听说有人对大量协议等进行模糊测试,但对内核模块却很少。我也明白,在 Linux 系统上,所有东西都可以看作是一个文件,因此肯定可以通过该接口输入到内核模块,不是吗?

我的第二个问题是:你会推荐哪个 fuzzer?如前所述,存在许多模糊协议的模糊器,但是我认为其中很多在攻击内核模块时没有用。显然有诸如 Peach fuzzer 之类的框架,它允许您从头开始“创建”自己的 fuzzer,并且据说非常出色,但是我反复尝试安装 Peach 无济于事,我发现很难相信它是合适的考虑到我在安装它时已经遇到的困难(如果有人知道任何体面的安装教程,请告诉我:P)。

如果您能为我提供有关此问题的任何信息,我将不胜感激。鉴于我选择的主题的广度,任何关于方向的想法总是非常感谢。同样,我想请人们不要告诉我从其他地方开始。我确实了解手头任务的规模,但无论如何我仍然会尝试(我是一个蓝天思想家:P A.K.A 固执如牛)

干杯

A.史密斯

【问题讨论】:

    标签: linux security linux-kernel kernel fuzzing


    【解决方案1】:

    模糊测试的一种方法是通过系统调用模糊测试。

    本质上,这个想法是进行系统调用,在整个可能值范围内模糊输入 - 是否保持在为系统调用定义的规范内并不重要。

    【讨论】:

      【解决方案2】:

      我认为一个很好的起点是扩展 Dave Jones 的 Linux 内核模糊器 Trinity:http://codemonkey.org.uk/2010/12/15/system-call-fuzzing-continued/http://codemonkey.org.uk/2010/11/09/system-call-abuse/

      Dave 似乎发现了更多的错误,只要他再扩展一点。基本思想是查看您正在模糊测试的系统调用,而不是传入完全随机的垃圾,让您的模糊器选择至少会通过实际系统调用代码中的基本健全性检查的随机垃圾。换句话说,您使用内核源代码让您的 fuzzer 比通常完全随机输入的系统调用更深入。

      【讨论】:

      • 刚刚查看了您发布的链接。似乎是关于内核模块模糊测试的一个很好的信息来源,也是一个不错的开源项目。谢谢(你的)信息。朝着正确方向迈出的一大步。你自己用过这个工具吗?你能保证它的稳定性、可靠性等吗?
      • 不,我没有使用过它,但我知道 Dave 发现了许多内核错误。 fuzzer 的全部意义在于它应该是不稳定的并且会使你的整个系统崩溃:)
      • 很公平。但是我听说过 fuzzer 会被留下一段时间然后摔倒而不会记录任何崩溃。不久前,我的一个朋友在 Sulley 框架中体验到了这一点。尽管如此,我肯定会检查这个项目。感谢您的输入:)
      【解决方案3】:

      “模糊”内核是描述目标的一种相当广泛的方式。 从内核的角度来看,您可以

      • 尝试模糊系统调用
      • /dev 中的字符设备和块设备

      不确定你想要达到什么目的。

      模糊系统调用意味着检查每个 Linux 系统调用 (http://linux.die.net/man/2/syscalls) 并尝试是否可以通过奇怪的参数值干扰正常工作。

      模糊字符驱动程序或块驱动程序意味着尝试通过 /dev-interfaces 以一种最终会导致奇怪结果的方式发送数据。

      您还必须区分非特权用户和 root 的尝试。

      我的建议是将您的尝试范围缩小到您的提议的一个子集。实在是太笼统了。

      祝你好运 - 亚历克斯。

      【讨论】:

      • 我的道歉。尽管我打算缩小范围,但我确实可以看到这个问题非常广泛。老实说,我应该在我的列表中添加另一个问题:我在哪里定位内核?我的问题之所以如此广泛,是因为我不确定从哪里开始进行模糊测试。你能建议一个体面的起点吗?
      • 寻找无处不在但没有得到很好研究的东西。例如...我不知道,就像 Wifi 卡的驱动程序。我给了我一个 Realtek Wifi 适配器,它带有一个非常糟糕的驱动程序和用户空间配置程序。用户空间程序直接与硬件接口,由共石材料制成。用户空间程序拥有如此多的权限(suid root),但又如此糟糕,以至于它除了正确设置 WPA2 密钥外什么都做。我会开始对其中一件事进行模糊测试 - 在用户空间中 - 看看你能走多远。
      • 是的,这似乎是一个很好的建议。非常感谢您的回复。我打算本周开始进一步研究潜在目标。如果我找到我的“理想”目标,我会更新这篇文章。
      猜你喜欢
      • 2018-06-03
      • 1970-01-01
      • 2020-01-02
      • 2012-04-09
      • 2022-01-23
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 2013-01-25
      相关资源
      最近更新 更多