只要你在 Alpine Linux 系统 Docker 镜像中安装有 shadow 或 linux-pam 软件包,那么这个镜像是有安全漏洞的,需要尽快修补,要说明的是,其他 Alpine Linux 系列不受这个漏洞影响,以下是详情和解决方法。
影响级别大 Alpine Linux Docker 镜像是一个十分小巧的镜像,大小仅 5MB,远小于其他的 Linux 发行版,在 Docker Hub 的下载次数已超过千万。 同时 Alpine Linux 发行版向来以轻巧和安全而被大家熟知,但最近思科安全研究人员却发现 Alpine Linux 的 Docker 镜像存在一个已有三年之久的安全漏洞,通过该漏洞可使用空密码登录 root 帐户。 该漏洞的编号为 CVE-2019-5021,严重程度评分为 9.8 分,最早在 Alpine Linux Docker 镜像 3.2 版本中被发现,并于2015年11月进行了修复,还添加了回归测试以防止将来再发生。 但后来为了简化回归测试,Alpine Linux Docker 镜像的 GitHub 仓库合并了一个新的 commit,而正是这个 commit 导致了错误的回归,并在 3.3 之后的版本中(包括 Alpine Docker Edge)都保留了这个漏洞,即:v3.5(EOL)、v3.4(EOL)、v3.3(EOL),目前该漏洞已被修复。 注:该问题已在 edge (20190228 snapshot)、v3.9.2、v3.8.4、v3.7.3、v3.6.5 版本的 Docker镜像(2019年3月7日)中修复。
漏洞说明 官方对这个漏洞的描述为:如果在 Docker 容器中安装了 shadow 软件包并以非 root 用户身份运行服务,那么具有 shell 访问权限的用户可在容器内对账号进行提权。密码以加密形式保存,但允许以 root 身份登录而无需输入任何密码:
该漏洞仅针对 Alpine Linux 的 Docker 镜像版本,且安装了shadow 或 linux-pam 软件包才会受影响。 如果没有安装 shadow 或 linux-pam 软件包,则不会受到影响,如果你使用 Alpine linux 安装程序 setup-alpine,则不会受到影响。
专业说明 Alpine Linux 使用 busybox 作为核心工具,我们已经测试并确保只允许来自 /etc/securetty 中列为安全的 TTY 的无密码的 root 登录,这样就可以在计算机上启动 Alpine 并以 root 身份登录,而无需为 Alpine 提供任何预生成的密码,我们认为一个预生成的密码比没有密码更糟糕,像 sshd 这样的服务根本不允许使用空白密码登录,不幸的是,当用户安装 shadow 和 linux-pam,而不是使用默认工具时,安全问题出现了。
解决方法 对于使用较旧的、不受支持的版本,可以将以下命令添加到 Dockerfile 来修复漏洞: # make sure root login is disabled RUN sed -i -e 's/^root::/root:!:/' /etc/shadow 或者在 Alpine Linux 系统中卸载 shadow 或 linux-pam 软件包。当然,你没有安装 shadow 或 linux-pam 软件包,系统就不会有安全问题,这种情况下,不需要做处理。
相关主题 |