Istio 发布 2022 年安全审计结果

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

2023 年 1 月 30 日 | 作者:Craig Box - ARMO,代表 Istio 产品安全工作组

Istio 是一个平台工程师信任的项目,用于在他们的生产 Kubernetes 环境中执行安全策略。我们在代码中非常重视安全,并维护一个强大的漏洞计划。为了验证我们的工作,我们定期邀请外部审查项目,我们很高兴发布我们第二次安全审计的结果

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

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

范围和总体发现

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

再次强调,审查中没有发现严重问题。评估发现了 11 个安全问题;2 个高危、4 个中危、4 个低危和 1 个信息性问题。所有报告的问题都已修复。

除了上述观察结果外,审计员还注意到 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 图表或 WebAssembly 模块下载器)

要执行这些代码路径,攻击者需要足够的权限才能指定 Helm 图表或 WebAssembly 模块的 URL。有了这样的访问权限,他们就不需要利用漏洞:他们已经可以导致任意图表安装到集群或任意 WebAssembly 模块加载到代理服务器上的内存中。

审计员和维护人员都注意到,不建议使用 Operator 作为安装方法,因为这需要高权限控制器在集群中运行。

其他问题

发现的其他问题包括:

请参阅完整报告以获取详细信息。

审查 2020 年报告

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

模糊测试

OSS-Fuzz 项目 帮助开源项目执行免费的模糊测试。Istio 集成到 OSS-Fuzz 中,并持续运行 63 个模糊测试器:此支持是由ADA Logics 和 Istio 团队在 2021 年底构建的

评估指出“Istio 从在 OSS-Fuzz 上持续运行的大量模糊测试套件中获益良多”,并确定了安全关键代码中一些 API 可以受益于进一步模糊测试,因此贡献了 6 个新的模糊测试器;到审计结束时,新的测试已经运行了30 亿次。

SLSA

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

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

参与进来

如果您想参与 Istio 产品安全或成为维护者,我们非常欢迎您!加入我们的公开会议提出问题或了解我们为保持 Istio 安全而采取的措施。

分享此帖子