Istio 发布版 2022 年安全审计结果

Istio 的安全审查在 Go 标准库中发现了一个 CVE。

Jan 30, 2023 | By Craig Box - ARMO,Istio 产品安全工作组

Istio 是一个被平台工程师信任的项目,可以在其 Kubernetes 生产环境中实施安全策略。我们非常注意代码的安全性, 并致力于维护一个健壮的漏洞程序集。 为了验证我们的工作,我们定期邀请项目以外的组织开展审查流程, 我们很高兴发布第二次安全审计的结果(英文)

审计员的评估结论是**“Istio 是一个维护良好的项目, 具有强大且可持续的安全应对方法”**。没有发现严重问题; 该报告的亮点是发现了 Go 编程语言中的一个漏洞。

我们要感谢云原生计算基金会资助这项工作, 作为我们 8 月份加入 CNCF 后提供给我们的福利。这项工作由 OSTIF 安排由 ADA Logics 执行

工作范围和总体调查结果

Istio 在 2020 年接受了第一次安全评估, 其数据平面和 Envoy 代理都已经过 2018 年和 2021 年的独立评估。 因此,Istio 产品安全工作组和 ADA Logics 确定了以下工作范围:

再一次,在审查中没有发现任何严重问题。在评估中总共发现了 11 个安全问题; 其中两个 High,四个 Medium,四个 Low 和一个信息级别的问题。 所有报告的问题都已被修复。

除了上述发现之外,审计员还指出 Istio 在处理安全性方面遵循高水平的行业标准。他们还特别强调了:

决议和经验

Go 语言中的请求走私漏洞

审计人员发现 Istio 可以接受使用 HTTP/2 Over Cleartext(h2c)的流量, 这是一种与 HTTP/1.1 建立未加密连接然后升级到 HTTP/2 的方法。 用于 h2c 连接的 Go 语言库将整个请求读入内存, 并指出如果您想避免这种情况,请求应该被包裹在 MaxBytesHandler 中。

在修复这个错误时,Istio TOC 成员 John Howard 注意到推荐的修复方式引入了一个请求走私漏洞。 Go 语言团队因此发布了 CVE-2022-41721 — 本次审计发现的唯一漏洞!

Istio 已更改为始终禁用 h2c 升级支持。

文件获取的改进

发现的最常见问题类别与 Istio 通过网络获取文件有关(例如, Istio Operator 安装 Helm Chart,或 WebAssembly 模块下载器):

要执行这些代码路径,攻击者需要足够的权限来为 Helm Chart 或 WebAssembly 模块指定 URL。有了这样的访问权限, 他们就不再需要某些功能:他们已经可以将任意 Chart 安装到集群或将任意 WebAssembly 模块加载到代理服务器的内存中。

审核员和维护者都注意到不建议将 Operator 作为安装方式, 因为这需要高权限控制器才能在集群中运行。

其他问题

发现的其余问题是:

详情请参考报告全文(英文)

对 2020 年报告的回顾

Istio 的第一次安全评估中报告的所有 18 个问题都已被发现并得到修复。

模糊测试

OSS-Fuzz 项目帮助开源项目执行免费的模糊测试。 Istio 已被集成到 OSS-Fuzz 中,有 63 个连续运行的模糊测试器: 这种支持是由 ADA Logics 和 Istio 团队于 2021 年底建立

评估指出,“Istio 在很大程度上受益于拥有在 OSS-Fuzz 上持续运行的大量模糊测试套件”,并确定了安全关键代码中的一些 API 将受益于进一步的模糊测试,因此这项工作的结果是贡献了六个新的模糊测试器; 到审计结束时,新测试已经运行了超过 30 亿 次。

SLSA

软件制品供应链级别(SLSA)是用于防止篡改、 提高完整性以及保护软件包和基础设施的一份标准及控制清单。 它被组织成一系列级别,提供越来越多的完整性保证。

Istio 目前不生成制品,因此并不满足任何 SLSA 级别的要求。 目前正在进行达到 SLSA 1 级的工作。 如果您想参与,请加入 Istio Slack 并联系我们的测试和发布工作组

参与进来

如果您想参与 Istio 产品安全,或成为一名维护者,我们很乐意邀请您! 加入我们的公开会议来提出问题或了解我们为确保 Istio 安全所做的工作。