跳至内容

模糊测试审计结果

发布时间:2023-07-13,修订时间:2024-01-17

模糊测试审计结果

作者:Adam Korczynski,@ Ada Logics 的安全工程师

Knative 很高兴宣布其模糊测试安全审计已完成。该审计由 Ada Logics 执行,是 CNCF 将模糊测试引入 CNCF 环境的倡议的一部分。该审计于 2022 年底和 2023 年初进行了数月,最终为 3 个 Knative 子项目编写了 29 个模糊测试器。这些模糊测试器在一个第三方依赖项中发现了一个问题,该问题已得到修复。

点击此处查看完整审计报告:Knative 模糊测试报告

该审计涵盖了以下 3 个 Knative 子项目

模糊测试

模糊测试是一种软件测试方法,其中向目标 API 传递伪随机数据以查找错误和安全问题。伪随机数据由模糊测试引擎创建,该引擎会随着时间的推移生成测试用例,这些用例会发现更多代码库。该引擎使用覆盖引导方法,并使用每次迭代的反馈来变异新的测试用例。这种类型的模糊测试称为“覆盖引导模糊测试”,在查找内存安全和内存不安全语言(包括其他多个 CNCF 托管项目)实现的软件项目中的错误方面非常有效;最近,模糊测试在 CNCF 赞助的模糊测试审计中发现了 Notation-go 和 Crossplane 中的安全漏洞。点击此处了解更多信息

模糊测试 Knative

强大的模糊测试套件的重要组成部分是确保模糊测试器持续运行。所有 Knative 模糊测试器都在 OSS-Fuzz 上持续运行 - 谷歌的开源平台,用于使用大量资源持续运行关键开源项目的模糊测试器。Knative 模糊测试审计从将 Knative 集成到 OSS-Fuzz 开始,然后审计人员将模糊测试器添加到该集成中。这使得模糊测试器可以在审计期间持续运行,并且在审计结束后将继续运行。

在审计期间开发的模糊测试器涵盖了 Knative 生态系统的不同部分。这些包括但不限于

  • 资源验证:Knative 的 验证模糊测试器 创建伪随机资源并测试其验证例程。该模糊测试器测试了 23 种不同资源类型的验证。
  • 调度程序插件:涵盖了所有 Knative 事件的 调度程序插件
  • 改进的往返模糊测试器:在模糊测试审计之前,Knative 具有模糊测试来测试其自定义资源的反序列化。这些针对 Kubernetes 的上游往返测试 运行。在审计期间,Ada Logics 编写了一个改进的往返测试,该测试的运行速度是上游往返测试的 3.5 倍,从而允许模糊测试器探索更多代码。Knative 的往返模糊测试器也没有持续运行,审计人员将改进的往返模糊测试添加到 Knative 的 OSS-Fuzz 集成中。

  • 依赖项:Knative 的模糊测试器涵盖了来自 Knative 的数据进行大量处理的几个第三方依赖项。

  • 事件过滤:过滤器模糊测试器创建一系列伪随机过滤器并调用相应的 apply API。

所有模糊测试器都位于 CNCF 的模糊测试存储库中。在 OSS-Fuzz 的构建周期中,它会从那里拉取它们,并针对最新的主 Knative 分支运行它们。

发现

这些模糊测试器在审计期间发现了一个问题,这对于 Knative 项目来说是一个令人印象深刻的成果。模糊测试器将继续探索目标代码,它们可能会在将来发现问题。如果发生这种情况,OSS-Fuzz 将通过详细的错误报告通知维护人员,包括重现测试用例和堆栈跟踪。OSS-Fuzz 通过电子邮件通知维护人员,并自动在 OSS-Fuzz 的错误跟踪器中将已修复的问题标记为已解决。

为 Knative 做出贡献

Knative 是开源的,并接受社区贡献。如果您希望为该生态系统做出贡献,社区存储库 是最好的起点。

我们使用分析和 Cookie 来了解网站流量。有关您使用我们网站的信息将与 Google 分享,用于此目的。了解更多。