冲击波: Fedora Docker 存储库已更新

这如何影响 Fedora 码头集装箱? 这是一篇关于了解 Shellshock 工作原理的精彩文章。 至于它如何影响 Fedora Docker 容器,有两组镜像我们需要注意。 第一个是 Fedora 基础图像。 这 Fedora 基础镜像自带 bash 因为它在镜像构建过程中引入了@core 包组。 我们可以通过下拉 Fedora 基本图像并查看内部。

$ sudo docker run -it fedora:20 /bin/bash

# rpm -qa | grep -i bash
bash-4.2.48-2.fc20.x86_64

既然我们在这里,为什么不检查漏洞呢? 根据上面链接的文章,我们可以发出以下命令来确定我们是否容易受到攻击。

[root@daea845b93d1 /]# env x='() { :;}; echo OOPS' bash -c :
[root@daea845b93d1 /]# 

我们可以看到,通过无声的出口,我们并不脆弱。 其次,我们需要了解 Fedora Docker 集线器上的分层图像。 那么,这是否意味着所有 Fedora Docker 上托管的图像 集线器打补丁了吗? 这里有一个重要的操作顺序需要注意。 这 Fedora 图像是基于基础图像构建的。 所以,有几个场景我们需要注意:

  1. 基础镜像已经更新,我们构建了一个新的分层镜像 Fedora 在 Docker 集线器上托管的基础映像。 在这种情况下,一切都是最新的。
  2. 基础镜像已更新,但 Docker hub 上的镜像已经存在,并且是基于存在漏洞的基础镜像构建的。

对于第二种情况,也有一个简单的解决方法。 所需要做的就是进入 Docker 中心仪表板并触发构建。 现在,这行得通,因为 Fedora Docker hub 帐户链接到 Fedora Dockerfiles github 回购。 repo 上每个 Dockerfile 中的第一个命令是:

RUN yum -y update && yum clean all

所以,当构建被触发时,它会解析 Dockerfile,更新镜像并且我们会被打补丁,因为 yum 更新会拉取最新的 Bash 包。 我们努力保持 Fedora 更新了基础镜像以及 Docker 集线器上的分层镜像。 要确认已应用修复程序,请从 码头工人中心 并给它一个测试。

$ sudo docker run -it fedora/apache bash
Unable to find image 'fedora/apache' locally
Pulling repository fedora/apache
2e11d8fd18b3: Download complete
<snip>
f0b140ef8cdd: Download complete
b05601b61180: Download complete
[root@bf33bf0606c5 /]# env x='() { :;}; echo OOPS' bash -c :
[root@bf33bf0606c5 /]#

我们在这里有一个无声的出口。 实际上发现了2个漏洞。 一个是任意代码执行,另一个是文件创建。 两者都已在最新的 Docker 基础映像和分层映像中进行了修补。