在持续模糊测试中幸存的漏洞

在持续模糊测试中幸存的漏洞

💡 原文约3700字/词,阅读约需14分钟。
📝

内容提要

尽管OSS-Fuzz对开源项目进行了多年模糊测试,仍有漏洞存在。OSS-Fuzz与OpenSSF合作发现了大量漏洞,但持续的模糊测试并非解决所有问题的灵丹妙药。许多项目在多年测试后仍有严重漏洞,需要人工监督以确保测试覆盖率并编写新的模糊器。

🎯

关键要点

  • 尽管OSS-Fuzz对开源项目进行了多年模糊测试,仍有漏洞存在。

  • OSS-Fuzz与OpenSSF合作发现了大量漏洞,但持续的模糊测试并非解决所有问题的灵丹妙药。

  • 许多项目在多年测试后仍有严重漏洞,需要人工监督以确保测试覆盖率并编写新的模糊器。

  • 模糊测试是一种自动化软件测试技术,通过向程序输入随机或变异的值来监控异常或崩溃。

  • GStreamer在七年的模糊测试中发现了29个新漏洞,显示出其测试覆盖率不足。

  • OSS-Fuzz需要人工监督来监控项目覆盖率,并为未覆盖的代码编写新的模糊器。

  • 开发者对模糊测试的误解可能导致他们对项目的安全性产生错误的信心。

  • Poppler作为PDF解析库,尽管有60%的代码覆盖率,但仍存在未被发现的漏洞,原因在于外部依赖未被充分测试。

  • Exiv2库在模糊测试中发现了多个漏洞,但仍有新漏洞被其他研究人员报告,显示出编码逻辑的漏洞容易被忽视。

  • 模糊测试的五步工作流程包括代码准备、提高代码覆盖率、改善上下文敏感覆盖率、提高值覆盖率和缺陷分类。

  • 模糊测试并不是万能的,某些漏洞可能需要大输入或额外时间才能触发,现有模糊器难以捕捉这些漏洞。

  • 对于难以检测的漏洞,通常需要采用静态分析、符号测试或手动代码审查等其他方法。

🔎

延伸解读

模糊测试的局限性

尽管OSS-Fuzz在开源项目中进行了多年模糊测试,但仍有漏洞存留。这表明模糊测试并不是万能的解决方案,尤其是对于某些复杂的漏洞,可能需要结合静态分析和手动审查等其他方法。开发者应意识到,单靠模糊测试无法完全保障项目的安全性。

人工监督的重要性

OSS-Fuzz的成功依赖于人工监督,以确保测试覆盖率和编写新的模糊器。许多开发者对模糊测试的误解可能导致他们对项目安全性的错误信心。因此,持续的人工干预和专业知识是确保模糊测试有效性的关键。

外部依赖的风险

在模糊测试中,外部依赖的覆盖率往往被忽视,导致潜在漏洞未被发现。例如,Poppler库的漏洞未被OSS-Fuzz检测到,部分原因是其依赖的库未被充分测试。开发者在使用开源库时,应关注其依赖的安全性,以降低整体风险。

延伸问答

OSS-Fuzz的模糊测试有什么局限性?

尽管OSS-Fuzz对开源项目进行了多年模糊测试,但仍有漏洞存在,且许多项目需要人工监督以确保测试覆盖率。

模糊测试的工作流程包括哪些步骤?

模糊测试的五步工作流程包括代码准备、提高代码覆盖率、改善上下文敏感覆盖率、提高值覆盖率和缺陷分类。

为什么GStreamer在七年的模糊测试中仍然发现了新漏洞?

GStreamer的代码覆盖率仅为19%,且只有两个活跃的模糊器,导致许多漏洞未被检测到。

Poppler库的漏洞是如何被忽视的?

Poppler依赖于多个外部库,这些库的覆盖率较低,导致模糊测试未能检测到相关漏洞。

模糊测试如何提高代码覆盖率?

提高代码覆盖率可以通过编写新的模糊器、创建新的输入案例和手动检查未覆盖的代码区域来实现。

模糊测试能否发现所有类型的漏洞?

模糊测试并不是万能的,某些漏洞可能需要大输入或额外时间才能触发,现有模糊器难以捕捉这些漏洞。

🏷️

标签

➡️

继续阅读