OpenTelemetry Collector 完成模糊测试审计
博客文章在发布后不会更新。这篇文章已经发布一年多了,其内容可能已过时,部分链接可能无效。在依赖任何信息之前,请务必核实。
OpenTelemetry 很高兴地宣布完成 Collector 的模糊测试审计,该审计由CNCF 赞助,并由Ada Logics执行。此次审计标志着 OpenTelemetry 项目迈出了重要一步,确保了 Collector 对用户的安全性和可靠性。
什么是模糊测试?
模糊测试是一种测试技术,它通过大量伪随机输入来执行 API 并观察 API 的行为。由于在查找安全漏洞和可靠性问题方面取得了显著成效,该技术越来越受欢迎。模糊测试最初开发主要用于测试内存不安全语言实现的软件,并且在那里取得了最大的成效。然而,近年来,模糊测试也已扩展到内存安全语言。
多年来,CNCF 一直投资于其生态系统的模糊测试。这些测试发现了许多广泛使用的项目中的安全漏洞,例如 Helm(CVE-2022-36055、CVE-2022-23524、CVE-2022-23526、CVE-2022-23525)、Notary 项目(CVE-2023-25656)、containerd(CVE-2023-25153)、Crossplane(CVE-2023-28494、CVE-2023-27483)和 Flux(CVE-2022-36049)。
OSS-Fuzz
为了启动审计,Ada Logics 的审计员将 OpenTelemetry Collector 集成到了OSS-Fuzz中。OSS-Fuzz 是 Google 免费为关键的开源项目提供的一项服务。该服务每周多次利用过剩的计算资源运行项目的模糊测试。如果 OSS-Fuzz 发现崩溃,它会通知项目。然后,它会检查项目是否已在 upstream 修复了崩溃,如果已修复,则将问题标记为已解决。整个工作流程在 Google 的模糊测试基础设施上持续进行,该基础设施由数千个 CPU 核心提供支持。这些测试资源超出了开发者或恶意攻击者所能调动的能力。
测试
在 Ada Logics 团队将 OpenTelemetry 集成到 OSS-Fuzz 后,下一步是为 OpenTelemetry Collector 编写一系列模糊测试。审计员为 Collector 的核心组件以及 `opentelemetry-collector-contrib` 仓库中的多个接收器和处理器编写了 49 个模糊测试。
在审计团队在生产环境中观察其健康状况的同时,模糊测试也在运行。在模糊测试审计完成时,OSS-Fuzz 平台上的 49 个模糊测试都处于健康状态。
为了确保持续的可靠性,即使审计已经完成,对 Collector 的模糊测试仍在继续。
迄今为止的结果
Collector 的模糊测试仍在进行中,允许对项目的更改进行测试。截至本文发布之日,尚未检测到任何崩溃。
但工作尚未结束!Ada Logics 团队创建了 Collector 的模糊测试设置,作为参考实现,其他 OpenTelemetry 子项目可以依赖它来创建自己的模糊测试,从而确保整个项目的稳定性。
有关审计过程的更多见解,请参阅已发布的摘要。