Istio 发布 2022 年安全审计结果
Istio 的安全审查发现 Go 标准库中的一个 CVE。
Istio 是一个平台工程师信任的项目,用于在他们的生产 Kubernetes 环境中执行安全策略。我们在代码中非常重视安全,并维护一个强大的漏洞计划。为了验证我们的工作,我们定期邀请外部审查项目,我们很高兴发布我们第二次安全审计的结果。
审计员的评估是“Istio 是一个维护良好的项目,拥有强大且可持续的安全方法”。没有发现任何严重问题;报告的重点是发现了 Go 编程语言中的一个漏洞。
我们要感谢云原生计算基金会为这项工作提供资金,这是我们在8 月加入 CNCF后获得的一项福利。它是由OSTIF 安排的,并由ADA Logics 执行的。
范围和总体发现
Istio 于 2020 年接受了第一次安全评估,其数据平面,Envoy 代理,已于2018 年和 2021 年独立评估。因此,Istio 产品安全工作组和 ADA Logics 决定了以下范围
- 制定正式的威胁模型,以指导本次及未来的安全审计
- 对安全问题进行手动代码审计
- 审查 2020 年审计中发现的问题的修复程序
- 审查和改进 Istio 的模糊测试套件
- 执行 Istio 的 SLSA 审查
再次强调,审查中没有发现严重问题。评估发现了 11 个安全问题;2 个高危、4 个中危、4 个低危和 1 个信息性问题。所有报告的问题都已修复。
除了上述观察结果外,审计员还注意到 Istio 在处理安全方面遵循了高水平的行业标准。特别是,他们强调了以下几点:
- 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 图表可能会耗尽磁盘空间(#1)或覆盖 Operator Pod 中的其他文件(#2)
- 在发生错误的情况下,文件句柄未关闭,并且可能会耗尽(#3)
- 精心制作的文件可能会耗尽内存(#4 和 #5)
要执行这些代码路径,攻击者需要足够的权限才能指定 Helm 图表或 WebAssembly 模块的 URL。有了这样的访问权限,他们就不需要利用漏洞:他们已经可以导致任意图表安装到集群或任意 WebAssembly 模块加载到代理服务器上的内存中。
审计员和维护人员都注意到,不建议使用 Operator 作为安装方法,因为这需要高权限控制器在集群中运行。
其他问题
发现的其他问题包括:
- 在某些测试代码中,或者在控制平面组件通过本地主机连接到另一个组件时,未强制执行最低 TLS 设置(#6)
- 失败的操作可能不会返回错误代码(#7)
- 正在使用已弃用的库(#8)
- TOC/TOU 用于复制文件的库中的竞争条件(#9)
- 如果在调试模式下运行,用户可能会耗尽安全令牌服务的内存(#11)
请参阅完整报告以获取详细信息。
审查 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 安全而采取的措施。