OpenShift Source-To-Image 安全漏洞 - CVE-2018-1102

Public Date: April 30, 2018, 09:56
已更新 May 3, 2018, 16:55 - English(英语) French Japanese Korean
Resolved 状态
Critical Impact

Insights vulnerability analysis

View exposed systems

红帽产品安全团队对 Red Hat OpenShift Container Platform 3 中的 S2I(source-to-image)构建功能中的一个安全漏洞做成响应。一个没有相应权限的攻击者可以利用这个漏洞提升自己的权限来访问主机系统。这个安全漏洞已被记录为 CVE-2018-1102,它的严重性级别被定为 Critical


背景信息

这个问题会影响到 source-to-image 构建策略。任何具有 system:authenticated 角色的用户(在默认情况下,它包括任何可以登录到 OpenShift 的用户)都可以使用这个策略。

这个问题是由 Michael Hanselmann 直接向红帽报告的。


安全漏洞详情

通过创建一个特殊设计的 tar 归档,攻击者在镜像构建的过程中可以滥用 S2I 中的 untar 构建功能,以达到提升权限的目的,进而可能破坏运行 OpenShift 的底层主机的操作系统。


采取行动

“影响”页中包括了受影响的红帽产品的信息。“解决方案”页中包括缓解这个安全问题以及进行更新的信息。

受影响的产品

红帽产品安全团队把此安全漏洞的影响定级为 Critical。工具者可以远程利用这个漏洞获得一个 OpenShift 节点的 root 访问权限。

以下红帽产品的版本会受到影响:

  • OpenShift Container Platform 3.0-3.9
  • OpenShift Online v3.x*
  • OpenShift Dedicated v3.x*

*红帽已对受影响的服务应用了相应的补丁程序。  


诊断您的环境是否存在漏洞

当前,还没有一个统一的方法可以检查到恶意用户获得了访问系统的权限。红帽推荐用户在系统中使用完善的安全措施,并使用基于风险程度的方式对系统进行维护,记录并检测潜在的安全攻击行为。要决定一个集群是否存在安全漏洞,请检查在 master 上运行的 atomic-openshift 软件包的版本。这个服务用来控制决定所使用的 source-to-image 构建镜像的代码。对于每个 OpenShift 的次发行版本,在 master 上运行以下版本或更高版本的系统已应用了相关的补丁程序:

  • 3.9: atomic-openshift-3.9.25-1.git.0.6bc473e.el7
  • 3.8: atomic-openshift-3.8.37-1.git.0.e85a326.el7
  • 3.7: atomic-openshift-3.7.44-1.git.0.6b061d4.el7
  • 3.6: atomic-openshift-3.6.173.0.113-1.git.0.65fb9fb.el7
  • 3.5: atomic-openshift-3.5.5.31.67-1.git.0.0a8cf24.el7
  • 3.4: atomic-openshift-3.4.1.44.53-1.git.0.d7eb028.el7

对于版本 3.1 到版本 3.3,还需要额外的操作步骤。在每个 OpenShift 的节点主机上运行:

`$sudo docker images | grep ose-sti-builder`
registry.access.redhat.com/openshift3/ose-sti-builder       v3.3.46.38      cee523a4e55c   2 weeks ago     608 MB

在这个例子中,cee523a4e55c 代表了一个未应用补丁程序的镜像。因为这些镜像和最新发行的版本有相同的版本号,所以还需要检查 sha256 sum 的值。已应用补丁程序的镜像的相应 checksums 值为:

  • 3.3:  registry.access.redhat.com/openshift3/ose-sti-builder:v3.3.1.46.38 (b285a30ab8e0)
  • 3.2:  registry.access.redhat.com/openshift3/ose-sti-builder:v3.2.1.34 (b536950df3d8)
  • 3.1: registry.access.redhat.com/openshift3/ose-sti-builder:v3.1.1.11 (de9eb6fe3b01)


如果未应用补丁的镜像可以被删除,则删除它。这会在下次需要它的时候下载一个全新的(已应用了补丁程序的)镜像:

$ sudo docker rmi cee523a4e55c

请注意:checksum 的值可能会与以上列出的不同,这里使用的值是通过 `sudo docker images | grep ose-sti-builder` 获得的。

一些情况会导致这个操作失败。如果是因为 “image is in use by stopped container xyz” 错误造成的,我们可以为镜像再添加一个 arbitrary tag,这将会删除当前的版本 tag 而不会产生错误。这样,在镜像再次需要使用时就会下载一个全新的(已应用了补丁程序的)镜像。

$ BADIMAGE=cee523a4e55c
$ BADVERS=v3.3.46.38
$ sudo docker tag $BADIMAGE    registry.access.redhat.com/openshift3/ose-sti-builder:donotuse
$ sudo docker rmi registry.access.redhat.com/openshift3/ose-sti-builder:$BADVERS

  

我们强烈推荐,如果用户所使用的 OpenShift registry 中包括受影响版本的 ose-sti-builder 镜像,而且禁用 source-to-image 构建功能不是一个可行的选择时,请在新的镜像可用时,尽快更新到新的镜像。对于版本 3.4 到版本 3.9,使用常规的升级过程,确定 atomic-openshift-utils 软件包是最新的版本,并运行升级 playbook:

对于运行版本 3.1 到版本 3.3 的集群,管理员需要把已应用补丁的镜像推送到集群中的所有节点上。如果在 ‘诊断’ 步骤中显示您在使用有安全漏洞的版本时,可用通过以下方法手工更新镜像:

  1. 建立一个到每个节点主机的 SSH 连接
  2. 运行 `docker pull registry.access.redhat.com/openshift3/ose-sti-builder`
  3. 根据 ‘诊断’ 步骤中的信息,检查获取的镜像 checksum 是否匹配。

请注意:镜像可用使用与它们相同的次补丁级别内的任何版本号进行标记。例如,如果与安装的集群版本相匹配,v3.3.1.36.38 可用被标记为 v3.3.1.46.11。


补救方法

红帽推荐在补丁程序可用后,尽快对软件进行更新。

用户可用禁用 S2I(source-to-image)构建策略以防止对有安全漏洞功能的访问。如何禁用 source-to-image 构建策略的信息包括在相关的产品文档中。

我们建议用户使用基于风险程度的方法对这个问题进行补救。那些需要高安全性、高度信任的系统应该首先进行处理,并应该在可以对它们进行处理前,把它们和不被信任的系统隔离开,以减少这个安全漏洞可能造成的安全风险。


对受影响的产品进行更新

产品公告/更新
OpenShift Container Platform 3.9RHSA-2018:1227
OpenShift Container Platform 3.8RHSA-2018:1229
OpenShift Container Platform 3.7RHSA-2018:1231
OpenShift Container Platform 3.6RHSA-2018:1233
OpenShift Container Platform 3.5RHSA-2018:1235
OpenShift Container Platform 3.4RHSA-2018:1237
OpenShift Container Platform 3.3RHSA-2018:1239
OpenShift Container Platform 3.2RHSA-2018:1241
OpenShift Container Platform 3.1
RHSA-2018:1243
OpenShift Container Platform 3.0请参阅补救方法中的信息或联系技术支持人员

Comments