模糊测试审计结果 ¶
发布时间: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 是开源的,并接受社区贡献。如果您希望为该生态系统做出贡献,社区存储库 是最好的起点。