Docker 镜像漏洞 (CVE-2019-5021)
问题是什么?
如果你的 Docker 容器中安装了 shadow
软件包,并且以非 root 用户身份运行你的服务,那么攻击者(通过一个不相关的安全漏洞入侵了你的系统,或者一个拥有 shell 访问权限的用户)可能将其权限提升至容器内的 root 权限。
谁会受到影响?
此问题仅影响 Docker 镜像。如果你使用了 Alpine Linux 安装程序 setup-alpine
,则不受影响。
除非你安装了 shadow
或 linux-pam
软件包,否则你不会受到影响。
此问题已在以下 修复,并在以下 Docker 镜像版本 中发布 (2019 年 3 月 7 日)
- edge (20190228 snapshot)
- v3.9.2
- v3.8.4
- v3.7.3
- v3.6.5
以下版本已停止维护 (EOL) 且仍然存在漏洞
- v3.5
- v3.4
- v3.3
如何修复?
请确保你使用受支持的发行版本并更新你的镜像。
如果你使用任何较旧的、不受支持的发行版本,则可以通过在你的 Dockerfile 中添加以下行来修复它
# make sure root login is disabled RUN sed -i -e 's/^root::/root:!:/' /etc/shadow
或者,你可以确保你没有安装 linux-pam
。
这是如何发生的?
Alpine 使用 busybox
作为核心工具。我们已经测试并确保只有在 /etc/securetty
中列为安全的 TTY 才能允许无密码 root 登录。这使得在机器上启动 Alpine 并以 root 身份登录成为可能,而无需发布任何预先生成的、众所周知的 Alpine 密码。我们认为预先生成的、众所周知的密码比根本没有密码更糟糕。
像 sshd
这样的服务完全不允许使用空白密码登录。
不幸的是,我们忽略了用户安装 shadow
和 linux-pam
而不是使用默认工具的情况。
编辑:已添加修复版本的发布日期