docker2375漏洞复现_访问权限


容器的出现使开发团队可以创建沙盒环境,以在其中运行和测试应用程序,容器主要由从 docker hub 或其他公共镜像存储库提取的开源镜像组成。

但是这些开源镜像有时可能包含一些漏洞,这些漏洞可能会危害容器的安全,进而危害其主机/服务器。

由于这些容器在主机上运行,因此如果容器不受保护,就可以劫持生产中的容器。

此类攻击的一个很好的例子是特斯拉对未受保护的 Kubernetes 集群的加密劫持攻击。在此攻击中,攻击者能够使用特斯拉的 K8s(Kubernetes)集群提供的 GPU 下载并运行恶意脚本来挖掘加密货币。通过将 CPU 使用率保持在最低水平,并且还可以在特定的时间间隔运行脚本,导致监控很难发现这个问题。

下面我们将研究常见的容器漏洞以及修复它们的可能方法。

容器漏洞

加密劫持

加密劫持是一种攻击,其中恶意脚本被用来窃取设备的计算资源以挖掘加密货币。

最近,在 Docker 上发现了 CVE-2018-15664 的漏洞。 此漏洞使攻击者有可能获得对主机计算机的 root 访问权限。

攻击者除了能够使用主机计算机的 CPU 和 GPU 资源来挖掘加密货币之外,还可以窃取敏感凭据,进行 DoS 攻击,发起网络钓鱼活动等等。

如果容器包含恶意镜像,这些容器会给攻击者提供对整个容器的根访问权限,则它们可能容易受到密码劫持的攻击。 如果 Docker API 暴露在公网上,例如 Tesla,它们很容易受到攻击。

恶意开源镜像

该漏洞可以覆盖主机的 runc 二进制文件,从而使攻击者可以通过 root 用户访问权限来执行命令。 v18.09.2 之前的Docker 引擎使带有攻击者控制镜像的容器容易受到 CVE-2019-5736 漏洞的影响。

建议工程师尽可能利用 docker 提供的官方 Docker 镜像。 毕竟,甚至还有一个由 Docker 赞助的团队,该团队与软件维护者/发布者和安全专家紧密合作,以确保官方 Docker 镜像的安全性。

静态 Dockerfile

容器的镜像是不可变的。 这意味着在构建镜像时,其内容不可更改。 由于镜像中包含的过时程序包/库/镜像也会导致漏洞

因此,将漏洞扫描程序合并到 CI/CD 流程中是一个好主意,以便识别易受攻击的容器镜像。 由于镜像是不可变的,因此建议经常更新程序包、库、镜像

如何查找容器漏洞

前面我们说了利用漏洞如何攻击容器的可能方式。

下面研究下如何找出容器中可能包含的漏洞

使用 Docker Bench for Security

Docker Bench for Security 是一个脚本,用于测试主机/服务器上的所有 Docker 容器,检查关于在生产环境中部署Docker 容器的几十个常见最佳实践,这些测试基于 CIS docker 基准。

如何运行

docker run -it --net host --pid host --userns host --cap-add audit_control     -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST     -v /etc:/etc:ro     -v /usr/bin/docker-containerd:/usr/bin/docker-containerd:ro     -v /usr/bin/docker-runc:/usr/bin/docker-runc:ro     -v /usr/lib/systemd:/usr/lib/systemd:ro     -v /var/lib:/var/lib:ro     -v /var/run/docker.sock:/var/run/docker.sock:ro     --label docker_bench_security     docker/docker-bench-security


docker2375漏洞复现_Docker_02


该脚本运行各种测试,并为每个测试提供 INFO , NOTE , PASS 或 WARN 结果。