软件公司如何快速有效地识别软件漏洞_北京软件开发公司
发表日期:2023-06-14 15:47:03 文章编辑:北京软件开发 浏览次数:
对于软件开发公司来说几乎每个新程序代码都有错误,在最坏的情况下,这些错误可能会危及安全性。为了快速有效地检测它们,德国波鸿鲁尔大学 Horst Görtz IT 安全研究所的研究人员开发了一种名为 Fuzzware 的软件开发检测系统。它专门分析嵌入式系统,即可以在智能灯泡、智能恒温器和工业控制系统中找到的微型计算机,仅举几例。鲁尔大学的科学杂志《 鲁宾》发表了一篇关于他们工作的文章。
波鸿博士 学生 Tobias Scharnowski 在 Thorsten Holz 教授的指导下于 2022 年 8 月在美国举行的第 31 届 Usenix 安全研讨会上介绍了研究结果。他与加州大学圣巴巴拉分校和阿姆斯特丹自由大学的同事合作开展了这项研究。
故意让软件崩溃
该小组使用所谓的模糊测试来检测软件开发代码中的错误。Fuzzers 是一种算法,它向被测试的软件提供随机输入,并检查它们是否会使应用程序崩溃。这种崩溃表明编程错误。模糊器不断改变输入,以便逐步探索尽可能多的程序组件。
某些应用领域已经建立了模糊测试,例如测试 Windows 或 Linux 等操作系统。然而,它尚未被广泛用于测试嵌入式系统,因为它们带来了许多挑战:软件(即所谓的固件)嵌入到与其交互的硬件中。系统通常具有相对较少的内存和较慢的处理器。如果研究人员想直接在系统上进行模糊测试,这就是一个问题。尝试所有可能的输入并等待系统响应将花费太长时间。
硬件虚拟仿真
这就是团队不直接在工业控制单元或灯泡中分析固件的原因。相反,他们虚拟地重新创建硬件——这个过程称为仿真。仿真器使固件相信它在真实设备中。为此,它必须以与真实硬件完全相同的方式与程序交互。
为了加速该过程,研究人员通过缩小可能的输入范围,在模糊测试过程中增加了另一个步骤。首先,它们对输入必须位于其中的框架进行建模,以便对固件具有逻辑性。例如:如果硬件是带有温度传感器的冰箱,则冰箱硬件可以将测量到的温度报告给冰箱的软件,即它的固件。实际上,任何给定的温度都不可能发生,它必须落在某个范围内。因此,固件仅针对特定温度范围进行编程。它根本无法处理其他值,因此无需对它们进行模糊测试。
有限的输入有助于高效分析
波鸿团队与来自圣巴巴拉和阿姆斯特丹的同事一起,使用 Fuzzware 测试了 77 个固件。与传统的模糊测试方法相比,他们筛选出了高达 95.5% 的所有可能输入。
这使得 Fuzzware 能够在相同时间内检查比传统方法多三倍的程序代码。在此过程中,该小组还发现了其他模糊测试方法未检测到的其他漏洞。
波鸿博士 学生 Tobias Scharnowski 在 Thorsten Holz 教授的指导下于 2022 年 8 月在美国举行的第 31 届 Usenix 安全研讨会上介绍了研究结果。他与加州大学圣巴巴拉分校和阿姆斯特丹自由大学的同事合作开展了这项研究。
故意让软件崩溃
该小组使用所谓的模糊测试来检测软件开发代码中的错误。Fuzzers 是一种算法,它向被测试的软件提供随机输入,并检查它们是否会使应用程序崩溃。这种崩溃表明编程错误。模糊器不断改变输入,以便逐步探索尽可能多的程序组件。
某些应用领域已经建立了模糊测试,例如测试 Windows 或 Linux 等操作系统。然而,它尚未被广泛用于测试嵌入式系统,因为它们带来了许多挑战:软件(即所谓的固件)嵌入到与其交互的硬件中。系统通常具有相对较少的内存和较慢的处理器。如果研究人员想直接在系统上进行模糊测试,这就是一个问题。尝试所有可能的输入并等待系统响应将花费太长时间。
硬件虚拟仿真
这就是团队不直接在工业控制单元或灯泡中分析固件的原因。相反,他们虚拟地重新创建硬件——这个过程称为仿真。仿真器使固件相信它在真实设备中。为此,它必须以与真实硬件完全相同的方式与程序交互。
为了加速该过程,研究人员通过缩小可能的输入范围,在模糊测试过程中增加了另一个步骤。首先,它们对输入必须位于其中的框架进行建模,以便对固件具有逻辑性。例如:如果硬件是带有温度传感器的冰箱,则冰箱硬件可以将测量到的温度报告给冰箱的软件,即它的固件。实际上,任何给定的温度都不可能发生,它必须落在某个范围内。因此,固件仅针对特定温度范围进行编程。它根本无法处理其他值,因此无需对它们进行模糊测试。
有限的输入有助于高效分析
波鸿团队与来自圣巴巴拉和阿姆斯特丹的同事一起,使用 Fuzzware 测试了 77 个固件。与传统的模糊测试方法相比,他们筛选出了高达 95.5% 的所有可能输入。
这使得 Fuzzware 能够在相同时间内检查比传统方法多三倍的程序代码。在此过程中,该小组还发现了其他模糊测试方法未检测到的其他漏洞。