5月18日,上周六,Kenna Security的Jerry Gamblin从Docker Hub上
检查了 1000个最受欢迎的映像,以获取其中使用的根密码。 在19%的情况下,他不在。

与高山背景
进行微型研究的原因是本月初发布的Talos漏洞报告(
TALOS-2019-0782 ),其作者-由于从Cisco Umbrella找到了Peter Adkins-报告称,带有流行的Alpine容器分发套件的Docker映像没有密码根:
“ Alpine Linux Docker映像的正式版本(从v3.3开始)包含root用户的NULL密码。 该漏洞是由于2015年12月引入的回归而出现的。 它的本质是,在容器中部署有问题的Alpine Linux版本的系统,并使用Linux PAM或将影子系统文件用作身份验证数据库的其他机制,可以为根用户接受NULL密码。”
经过测试的高山版本Docker映像被称为3.3–3.9(含)和最新版本的edge。
作者向受此问题影响的用户提出以下建议:
“必须在基于有问题的Alpine版本构建的Docker映像中显式禁用root帐户。 漏洞的利用可能取决于环境,因为要成功使用此漏洞,需要使用Linux PAM或其他类似机制将服务或应用程序转发到外部。”
此问题已在Alpine版本3.6.5、3.7.3、3.8.4、3.9.2和Edge(20190228快照)中得到解决,并且受其影响的图像的所有者被提供注释掉了
/etc/shadow
root的行,或确保缺少
linux-pam
软件包。
linux-pam
。
继续使用Docker Hub
杰里·甘布林(Jerry Gamblin)决定询问:“事实证明,在容器中使用空密码的做法有多广泛。” 为此,他编写了一个小的
Bash脚本 ,其本质非常简单:
- 通过对Docker Hub中的API的curl请求,请求托管在其中的Docker映像列表;
- 通过jq将其按
popularity
字段排序,并获得结果的前一千个残差; - 对它们中的每一个都执行
docker pull
; - 对于从Docker Hub收到的每个映像,通过从
/etc/shadow
文件读取第一行来执行docker run
; - 如果字符串值原来是
root:::0:::::
,则图像名称保存在单独的文件中。
怎么了
该文件包含194行,其名称是Linux系统中流行的Docker映像的名称,该用户的root用户没有密码:
“在此列表中,最著名的名字是govuk / governpaas,hashicorp,microsoft,monsanto和mesosphere。 kylemanna / openvpn是列表中最受欢迎的容器,其统计数据总计超过1000万次拉动。”
但是,值得回顾的是,这种现象本身并不意味着使用它们的系统的安全性上存在直接漏洞:这完全取决于它们的使用方式
(请参见上面Alpine案例的评论) 。 但是,我们已经多次看到“这个寓言的寓意”:表面上的简单性通常有一个缺点,必须始终牢记这一缺点,并且在技术场景中应考虑其后果。
聚苯乙烯
另请参阅我们的博客: