使用OSTIF保护开源基础设施

本文介绍了Open Source Technology Improvement Fund (OSTIF) 与 Trail of Bits 合作进行的一系列开源项目的安全审计和威胁建模工作,包括Linux kernel release signing、CloudEvents、curl、KEDA、Eclipse Mosquitto、Eclipse Jetty、Eclipse JKube、Flux 和 Dragonfly。

开源技术改进基金 (OSTIF) 应对了开源世界中一个经常被忽视的挑战:支撑当今互联网基础设施的相同软件项目,用 OSTIF 的话说,依赖于“一个数量惊人小的群体,他们在所有开发、测试和维护方面的时间有限”。

开源社区中贡献者时间的稀缺是一个众所周知的问题,它使互联网的关键基础设施变得脆弱。引用 OSTIF 的话,“由于缺乏盈利动机,核心开源项目资金严重不足,资源匮乏。这使得关键的互联网基础设施容易受到漏洞、糟糕的文档、糟糕的性能、缓慢的发布计划,甚至是间谍活动的影响。”

我们完全同意。

在过去的一年中,我们很高兴通过 OSTIF 与开源项目团队合作进行威胁建模评估和安全代码审查。我们相信我们大胆推进安全并解决技术领域最具挑战性风险的核心使命与 OSTIF 的目标紧密相符。通过与 OSTIF 的合作,我们为提高开源社区的安全态势做出了重大贡献。这篇博文重点介绍了一些 OSTIF 委托 Trail of Bits 进行的最新安全评估。

关于我们的工作

在 Trail of Bits,我们从事多种类型的安全工作。我们更受欢迎的服务包括由定制的模糊测试工具和模糊测试开发、我们自定义的静态分析规则集以及有针对性的人工审查提供支持的安全代码审查;涉及架构审查、系统思维和威胁场景开发的威胁建模练习;CI/CD 管道强化;以及修复审查。最佳情况下,评估涉及在这些领域拥有专业知识的工程师。这有助于我们为客户提供最高的性价比。

有时,我们会通过参与不同类型的专业知识,例如,运行威胁建模练习,然后为同一客户执行代码审查。当我们进行威胁建模工作和安全代码审查时,我们的代码审查可以从威胁建模工作产生的设计层面的发现开始。这意味着我们可以更快地编写模糊测试工具和模糊测试,以更快的速度针对给定代码库中最脆弱的区域!在安全代码审查之后进行修复审查,这使得我们的安全工程师有机会帮助指导和重新评估根据我们的发现实施的缓解措施。

由于与我们合作的客户范围广泛,客户的期望和要求可能会有所不同。在下面将介绍的 OSTIF 组织的评估中,你会看到这些工作类型的不同组合。其中一些项目包括威胁建模练习和安全代码审查,而另一些项目则只关注代码审查。所有这些项目的共同点是我们基于项目的性质和客户的需求制定量身定制的安全评估策略。

Linux 内核发布签名

Linux 内核运行在普通智能手机、构成网络上最广泛使用的基础设施的服务器,以及超级计算机等设备上。我们所知的互联网实际上运行在 Linux 上。Linux 开发的一个关键部分是内核发布签名,它允许用户以加密方式验证内核发布的真实性,以确保其可信度。

在本次审查中,我们于 2021 年 3 月至 4 月进行,我们与 Linux 基金会进行了技术讨论,并检查了他们关于内核发布签名过程的文档。我们的评估包括对签名密钥的管理、开发人员的签名工作流程以及签名和验证步骤中涉及的加密算法的审核。

我们的主要建议之一是 Linux 基金会强制使用智能卡存储私钥,这将阻止攻击者入侵开发人员的工作站,从而无法签署恶意代码。我们还建议 Linux 基金会采用更广泛的密钥分发方法,以减轻当前托管公钥的 git.kernel.org 服务器的入侵风险,用 ECDSA 和 Ed25519 等现代且更强大的替代方案取代 RSA 和 DSA 等较旧的签名方案,并创建关于密钥管理策略的文档,以防止签名过程中的错误。

有关我们的发现和建议的更多信息,请参阅 OSTIF 关于该项目的公告我们的完整报告

CloudEvents

CNCF 无服务器工作组 创建了 CloudEvents 规范,以标准化事件声明和交付,使其具有一致、可访问和可移植的方式。它提供了一种标准格式,可以在不同的云提供商和工具集之间共享事件,以及多种编程语言的 SDK。

从 2022 年 9 月到 10 月,我们与 CloudEvents 团队进行了一次轻量级的威胁建模评估,致力于识别攻击者可能用来入侵实施该规范的系统的方法。然后,我们的团队跟进了 JavaScript、Go 和 C# CloudEvents SDK 的安全代码审查。对于此项目,我们结合使用了自动化测试工具、手动分析以及对整体架构和设计的审查。我们总共发现了七个问题,包括 JavaScript SDK 中潜在的跨站脚本攻击,以及所有三个 SDK 的几个易受攻击的依赖项。

我们的最终报告包括这些发现、我们开发的威胁模型、几个代码质量建议以及在 SDK 代码库上使用自动化分析工具的指南。在 OSTIF 关于该项目的公告我们的完整报告 中获取所有详细信息。

curl

毫不夸张地说,curl 无处不在。这个著名的实用程序使用户能够跨多个网络协议传输数据,根据 curl 的网站 数据,它在“汽车、电视、路由器、打印机、音频设备、手机、平板电脑、机顶盒、[和]媒体播放器”中安装了超过 200 亿次。

感谢 OSTIF,我们的团队有幸在 2022 年 9 月至 10 月对 curl 二进制文件和软件库 (libcurl) 进行了审查。我们以威胁建模评估开始了我们的审核,这是一个至关重要的练习,加深了我们对 curl 和 libcurl 内部组件及其如何协同工作的理解。由此产生的威胁模型极大地影响了我们审查实际源代码的方法,具体化了我们对 curl 内部结构的理解,并帮助我们决定最初要针对哪些组件进行模糊测试和安全代码审查。

在我们的代码审查结束时,我们发现了 14 个问题,包括通过模糊测试识别出的两个高危内存损坏漏洞,我们与人工安全代码审查工作并行进行模糊测试。我们帮助扩展了 curl 的模糊测试覆盖范围,并通过在审查结束后继续进行的模糊测试,发现了几个漏洞,包括 CVE-2022-42915CVE-2022-43552,以及一个起初是一句玩笑话 的重大发现。请查看我们的 curl 模糊测试覆盖范围的改进和发现,请参阅最终报告

Kubernetes 事件驱动自动缩放 (KEDA)

KEDA 是一个用于 Kubernetes 容器的自动缩放工具。它内置支持许多“缩放器”,这些缩放器是基于从配置的外部来源(如 AWS SQS、RabbitMQ 和 Redis Streams)接收到的消息来触发缩放的接口。KEDA 有效地管理 Kubernetes pod 的添加以满足测量的需求。

我们在 2022 年 12 月开始了对 KEDA 的审查,首先进行了威胁建模练习,与 KEDA 团队一起演练了威胁场景。利用威胁模型来指导我们的方法,然后我们进行了代码审查。我们的团队使用自动化测试和人工审查发现了八个发现。这些发现包括未能为与 Redis 服务器的通信启用传输层安全性 (TLS),从而创建了一个攻击者可以利用来进行中间人攻击的漏洞。

除了这些发现之外,我们的最终报告还介绍了我们的威胁模型、对 KEDA 代码库成熟度的评估、我们编写的自定义 Semgrep 规则(用于检测我们在代码中注意到的一种模式的编码问题),以及旨在帮助 KEDA 主动增强其整体安全态势的长期建议。有关更多详细信息,请参阅我们的完整报告

Eclipse Mosquitto

2023 年 3 月,Trail of Bits 有机会与 Eclipse 基金会合作评估 Mosquitto 项目。Mosquitto 包括一个流行的 MQTT 消息代理和客户端库 (libmosquitto)。Mosquitto 的应用范围广泛,从 家庭自动化生物信息学 再到 英国的铁路信号基础设施

在这个由两部分组成的项目中,我们开发了一个威胁模型,然后对代理应用程序、libmosquitto 和相关的命令行工具(例如,mosquitto_passwd)进行了安全代码审查。我们的威胁模型识别了架构级别的弱点,例如代理中缺乏可配置的全局速率限制,以及针对无限消息循环的拒绝服务防御不足。有关这些发现和更多信息,请参阅我们的 威胁模型报告

我们从安全代码审查中发现的包括代理中远程触发的缓冲区过度读取,这将导致堆内存被转储到磁盘、多个文件处理问题,这些问题可能允许未经授权的用户访问密码哈希,以及 HTTP 标头的错误解析,这可能使攻击者能够绕过 Mosquitto WebSocket 传输的审计功能和基于 IP 的访问控制。在我们的 安全代码审查报告 中阅读有关这些发现的更多信息。

Eclipse Jetty

Jetty 是最古老、最受欢迎的 Java Web 服务器框架之一。它与许多其他开源应用程序集成,包括 Apache Spark、Apache Maven 和 Hadoop,以及 Google App Engine 和 VMWare 的 Spring Boot 等专有软件。我们被委托在 2023 年 3 月进行轻量级威胁模型、安全代码审查和修复审查。

由于 Jetty 代码库的规模以及我们在本次参与期间进行威胁建模的时间有限,在确定要评估的安全控制之后,我们进行了一项轻量级威胁建模练习,重点是识别跨组件的特定潜在威胁和不安全架构模式,而不是浅尝辄止地涉及许多潜在的漏洞类型。我们与 Jetty 团队讨论的值得注意的威胁场景包括不安全默认设置的影响;例如,我们发现 Jetty 缺乏默认连接加密,这可能允许对 Jetty 客户端连接进行中间人攻击,并且标头解析不一致,这可能允许请求走私或导致其他问题,例如,HTTP/2 降级到 HTTP/1。

在我们在威胁建模练习中探索的场景的指导下,我们对 Jetty 进行了为期三周的代码审查。我们发现了 25 项发现,包括解析 HTTP/2 HPACK 标头时可能发生的整数溢出(CVE-2023-36478),这会导致资源耗尽,由于错误的命令行参数转义而导致的命令注入漏洞(CVE-2023-36479),以及 Maven 元数据文件解析器中的 XML 外部实体 (XXE) 注入漏洞。我们的完整报告 包括我们的威胁模型、代码库成熟度评估、完整发现列表和修复审查。

Eclipse JKube

JKube 是一组有用的插件和库,用于使用 Kubernetes 或 Red Hat OpenShift 构建、编辑和部署 Docker 和 OCI 容器,直接与 Maven 和 Gradle 集成。JKube 还可以连接到外部 Kubernetes 或 OpenShift 集群来监视、调试和记录事件。在 2023 年 3 月至 5 月期间与 JKube 维护人员合作,我们进行了轻量级威胁模型、安全代码审查和修复审查,评估了在安全代码审查后对 JKube 所做的更改。

在了解了许多 JKube 组件、依赖项和集成之后,我们与 JKube 维护人员讨论了几个潜在的威胁场景。我们的威胁建模练习发现缺乏常见的安全默认设置和许多不安全的默认设置,以及多种输入格式类型和不安全的 Java 反序列化实践的不足的、手写的清理的一般模式。我们的安全代码审查测试并扩展了我们关于 JKube 生成的工件中不安全默认设置的发现。我们的修复审查验证了 JKube 维护人员的代码更改充分缓解了我们的代码审查发现。查看我们的完整报告

Flux

Flux 是一个 CNCF 毕业 项目,是一个 GitOps 和持续交付工具,可使 Kubernetes 状态与存储在 Git 存储库等源中的配置保持同步。OSTIF 委托 Trail of Bits 在 2023 年 7 月至 8 月期间对 Flux 进行安全代码审查。

我们的审查发现了 10 个问题,包括一个路径遍历漏洞,攻击者可以利用该漏洞将文件写入指定根目录之外,尤其是在 Flux 作为库包含在其他应用程序中时。我们注意到的其他问题包括未能设置缓存敏感数据的到期日期,以及 Flux macOS 二进制文件中的动态库注入漏洞,该漏洞源于 Apple 的 Hardened Runtime 功能未启用。

我们的最终报告 包括我们所有发现的详细信息、代码库成熟度评估、几个可能导致安全态势减弱但不认为具有直接安全影响的代码质量问题,以及有关将我们在评估期间使用的静态分析工具的定期分析纳入 Flux 的 CI/CD 管道的建议。

Dragonfly

Dragonfly 是一种点对点文件分发和图像加速系统。Dragonfly 是一个 CNCF 托管的项目,具有下载文件的完整性检查、下载速度限制、隔离异常对等方的能力,以及旨在成为“Kubernetes 可信云原生存储库”的工件 公共注册表。Dragonfly 的一个子项目 Nydus 实现了内容可寻址文件系统,以实现云原生资源的高效分发。

2023 年 7 月,Trail of Bits 审查了 Dragonfly 代码库。我们的安全代码审查发现了19 个问题,包括 5 个高危问题。我们的发现包括多个服务器端请求伪造 (SSRF) 漏洞,这些漏洞可能使未经授权的攻击者能够访问内部服务、对等点到对等点 API 中的一个问题,该问题可能允许攻击者读取和写入对等点计算机上的任何文件,以及对等点通过获取任何 IP 地址的有效 TLS 证书来使 mTLS 身份验证方案失效的能力。

除了我们发现的详细信息外,我们的最终报告 还包括代码库成熟度评估、代码质量问题列表、有关在 Dragonfly 代码库上运行静态和动态分析工具的指南,以及我们的修复审查。

未来展望

这些项目可能已经完成,但我们将继续展示我们致力于保护互联网开源基础设施的决心。我们也在不断学习!我们通过每次评估来迭代和改进我们的方法、静态分析规则集和工具,并结合新技术和自动化测试策略以及客户反馈。预计在 2024 年初会有更多关于我们与 OSTIF 合作进行的正在进行和未来工作的内容,包括对当前正在进行的另外两项安全代码审查的讨论。我们还计划深入研究我们对 curl 的模糊测试基础设施所做的改进,以及我们在 OSTIF 组织的 OpenSSL 和 Mosquitto 项目中发现的一些更有趣的漏洞的技术细节。

同时,Trail of Bits 将继续通过对我们完成的安全代码审查和威胁模型进行修复审查(如果签订合同)来支持 OSTIF 的使命,以确保我们识别出的漏洞和设计缺陷得到缓解。我们很高兴承担 OSTIF 为我们安排的进一步工作,无论是威胁建模、安全代码审查,还是以其他方式提供安全指导。

  • 原文链接: blog.trailofbits.com/202...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Trail of Bits
Trail of Bits
https://www.trailofbits.com/