2019年Gravitational安全审计结果:Teleport与Gravity漏洞深度解析

本文详细分析了Gravity和Teleport在2019年安全审计中发现的多个高危漏洞,包括不安全的压缩包处理、恶意身份连接器导致的远程代码执行、API访问控制缺失以及应用包签名验证问题,并介绍了相应的修复措施。

2019 Gravitational安全审计结果

2020年3月2日 - 作者:Luca Carettoni

本文是Gravitational公司关于其两款产品Teleport和Gravity的2019年安全审计结果的原博客文章重新发布。
您可以从我们的研究页面下载Teleport和Gravity的安全测试交付成果。
我们借此机会感谢Gravitational工程团队选择Doyensec并与我们合作确保项目成功执行。

当今时代,软件栈所有层的安全性都至关重要,仅仅开源代码库不足以确保安全漏洞被发现和解决。在Gravitational,我们认为有必要聘请专门扮演对手角色的第三方,对我们的源代码进行独立分析。

今年,我们有机会与Doyensec合作,他们对Gravity和Teleport进行了迄今为止最彻底的独立分析。Doyensec团队在发现Gravity代码库中的薄弱环节方面做得非常出色。以下是Teleport和Gravity的完整报告;您可以在此处找到我们所有的安全审计。

Gravity

Gravity拥有许多动态组件。作为Kubernetes发行版和在许多独特环境中交付Kubernetes的分布式系统,该产品的攻击面并不小。

除一个问题外,所有被评为中等或更高严重性的缺陷都在Doyensec团队报告后进行了修补和发布,我们也在正常发布过程中努力解决较次要和信息性问题。在Doyensec评为高严重性的四个漏洞中,我们成功修补了其中三个,第四个漏洞需要大量设计和工具更改的投入,我们稍后会详细说明。

应用包的不安全解压缩

Gravity的部分功能是将应用程序打包成安装程序,以便在本地和隔离环境中使用,安装完全工作的Kubernetes集群和应用程序,无需依赖。因此,我们将工件构建为tar文件——一种几乎 universally 支持的归档格式。

与此同时,我们自己的工具能够处理并接受这些tar归档,这正是问题所在。Golang的tar处理代码非常基础,这使得非常古老的tar处理问题浮出水面,允许特制的tar文件覆盖任意系统文件,并导致远程代码执行。我们的tar处理现已针对此类漏洞进行了加固,我们很快会写一篇文章深入探讨这一主题。

通过恶意身份连接器实现远程代码执行

当使用我们的CLI工具进行单点登录时,我们会为用户启动浏览器打开单点登录页面。这是通过将URL从服务器传递到客户端来告知SSO页面的位置来实现的。

拥有服务器访问权限的人能够将URL更改为非HTTP(S) URL,并在CLI主机上本地执行程序。我们已实施对服务器传递的URL的清理,强制要求HTTP(S),并更改了一些新功能的设计,以避免信任来自服务器的数据。

API中缺失的ACL

也许是这份列表中最令人尴尬的问题——负责管理API令牌的API端点缺少授权ACL。这允许任何经过身份验证的用户,即使是权限为空的用户,访问、编辑和创建其他用户的令牌。这可能导致用户冒充和权限提升。该漏洞通过实施正确的ACL迅速解决,团队正在努力确保此类漏洞不再发生。

应用包中缺失的签名验证

这是我们尚未能够解决的漏洞,因为防止此特定漏洞从未是设计目标。

Gravity为企业客户包含一个hub产品,允许存储和下载应用程序资产,用于安装或升级。本质上,hub产品的部分功能是充当文件服务器,公司可以在其中存储其应用程序,并在内部或公开连接部署的集群进行更新。

该模型的弱点,正如许多公共工件仓库所见,是这种安全模型依赖于存储这些资产的系统的完整性。

虽然本身不一定是一个漏洞,但这是一个设计弱点,不符合安全社区期望的能力。其安全性大致相当于将二进制构建发布到GitHub——任何具有正确访问权限的人都可以修改或发布恶意资产,任何信任GitHub下载该资产的人可能会获取恶意资产。相反,软件包在上传到公共下载服务器之前应以某种方式签名,并且软件应有一种方法来信任更新和安装来自可信源。

这是一个许多公司都搞错的非常困难的问题,因此Gravitational作为一个组织不愿意匆忙解决。我们正在评估几种知名模型,但尚未达到我们完全满意的解决方案阶段。

在这一领域,我们还将终止hub产品的生命周期,因为资产存储功能并未广泛使用。我们还将把客户关心的远程访问功能迁移到我们的Teleport产品中。

Teleport

正如我们在Teleport 4.2发布说明中提到的,最严重的问题集中在会话数据处理不正确上。如果攻击者能够获得Teleport节点的有效x509凭证,他们可以使用会话记录功能在认证服务器上读写任意文件,或可能破坏记录的会话数据。

这些漏洞只能使用先前经过身份验证的客户端的凭证来利用。没有已知的方法让未经身份验证的客户端在集群外利用此漏洞。

重新评估后,所有具有直接安全影响的问题都已解决。从报告中:

2020年1月,Doyensec对Teleport平台进行了重新测试,并确认了所应用缓解措施的有效性。所有具有直接安全影响的问题都已由Gravitational解决。

尽管所有直接问题都已缓解,但报告中有一个问题继续困扰我们,我们觉得可以做得更好:“#6:会话记录绕过”。这是我们已知相当长时间的问题,并且我们一直对用户和客户坦诚相待。会话记录是一个很棒的功能,但由于所解决问题的固有复杂性,绕过确实存在。

Teleport 4.2引入了一项名为增强会话记录的新功能,使用eBPF工具大幅减少可能存在的绕过间隙。我们很快会有更多关于此的分享,以另一篇博客文章的形式,深入探讨该功能的技术实现细节。

其他相关文章:

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计