Dapr 团队最近在博客上发布了 Dapr 完成模糊测试审核1的文章,该审计是 CNCF 通过模糊测试改善2开源云原生项目安全状况的计划的一部分。该审计由 Ada Logics3 于 2023 年 5 月和 6 月进行的,Ada Logics 团队为了改善 Daprs 安全状况,并且由于创建了大量模糊器,发现的问题数量很少,一共开发了 39个 fuzzer,发现了3个问题,三个问题的数量非常少,这证明了 Dapr 项目编写良好且维护良好的代码库。这也表明了代码库的成熟水平。 审计中的所有模糊器都是开源的,最初被添加到 CNCF 的模糊测试存储库4中,团队已经开始将模糊器迁移到Dapr 仓库中5来完善Dapr的测试。
该审计为 3 个 Dapr 项目添加了模糊器:Dapr 运行时 (github.com/dapr/dapr)、Dapr 工具包 (github.com/dapr/kit) 和 Components-contrib。Ada Logics通过将Dapr集成到Google的开源项目OSS-Fuzz6 -中开始了审计,该项目大规模运行关键开源项目的模糊器。在设置初始集成后,Ada Logics 编写了 39 个模糊器并将它们添加到 Daprs OSS-Fuzz 集成中。连续性是强大的模糊测试套件的重要组成部分;在连续运行模糊程序的几个 CPU 年之后,发现了一些错误。Daprs OSS-Fuzz 集成可确保其模糊程序即使在审核完成后也能运行,以继续探索代码库。
Ada Logics为许多复杂且特别公开的端点编写了模糊器,其中一些包括:
- Dapr 工具包加密包:密钥解析和序列化。
- Dapr Runtime HTTP/GRPC 端点。
- 元数据解码在Components-Contrib中广泛使用。
- Apache Dubbo 序列化。
- Dapr Sidecar注入器的请求处理
- Raft日志处理。
- 访问控制
Fuzzing 是一种通用技术,用于自动识别可靠性和安全问题。它通常被安全研究人员用来发现系统中的漏洞,该技术已成功应用于各种 CNCF 项目,如 Kubernetes、Envoy、Helm、Linkerd2-proxy 和 Fluent-bit。fuzzing 的一般方法是使用遗传算法(genetic algorithm)与复杂的程序分析和软件仪器技术相结合,以生成在目标软件中实现高水平代码覆盖的输入。
相关链接:
- 1Dapr 完成模糊测试审核: https://blog.dapr.io/posts/2023/06/30/dapr-completes-fuzzing-audit/
- 2CNCF 通过模糊测试改善计划:https://www.cncf.io/blog/2022/06/28/improving-security-by-fuzzing-the-cncf-landscape/
- 3Ada Logics: https://adalogics.com/
- 4CNCF 的模糊测试存储库: https://github.com/cncf/cncf-fuzzing
- 5将模糊器迁移到Dapr 仓库中:https://github.com/dapr/dapr/pull/6569
- 6Google的开源项目OSS-Fuzz:https://github.com/google/oss-fuzz
- 7dapr 1.11版本 发布:https://cloud.tencent.com/developer/article/2301233
- 87 月 15 日,论道深圳|云原生开源项目应用实践专场第三站报名开启: https://mp.weixin.qq.com/s/DOQ9aFxcS6M6_VmKfpQm9Q