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)
目前该漏洞已被修复。
官方对这个漏洞的描述为:如果在 Docker 容器中安装了 shadow 软件包并以非 root 用户身份运行服务,那么具有 shell 访问权限的用户可在容器内对账号进行提权。
▲密码以加密形式保存,但允许以 root 身份登录而无需输入任何密码
该漏洞仅针对 Alpine Linux 的 Docker 镜像版本,且安装了
1 | shadow |
或
1 | linux-pam |
软件包才会受影响。
对于使用较旧的、不受支持的版本,可以将以下命令添加到 Dockerfile 来修复漏洞:
1
2 # make sure root login is disabled
RUN sed -i -e 's/^root::/root:!:/' /etc/shadow
或者卸载
1 | shadow |
或
1 | linux-pam |
软件包。
Alpine Linux Docker 镜像是一个十分小巧的镜像,大小仅 5MB,远小于其他 Linux 发行版,在 Docker Hub 的下载次数已超过千万。