Docker安全:为什么root的发射是个坏主意

Docker已成为现代Devops和Development中必不可少的工具。它使您可以隔离包围,简化服装并快速扩展应用程序。但是,默认情况下,Docker需要一个根,这会产生一个潜在的危险区域,在早期阶段通常会被忽略。

为什么Docker从根起作用?

Docker使用Linux的功能:CGROUP,命名空间,Iptables,Mount,网络和其他系统功能。这些操作仅适用于超级用户。

这就是为什么:
* Dockerd恶魔从根开始
* Docker命令传输到此恶魔。

这简化了工作,并完全控制了系统,但与此同时,它打开了潜在的漏洞。

为什么危险:集装箱突破,CVE,RCE

容器突破

由于绝缘弱,攻击者可以使用Chroot或Pivot_root进入主机。

真实攻击的例子:

* CVE-2019-5736-Vulnerability to runc,允许重写应用程序并在主机上执行代码。
* cve-2021-3156-对sudo的视频,允许在容器内扎根并脱下。

RCE(远程代码执行)

如果容器中的应用程序脆弱并从根开始,则RCE =对主机的完全控制。

无根的码头:问题的解决方案

为了最大程度地减少这些风险,在Docker中出现了无根模式。在这种模式下,恶魔和容器都是代表通常的用户启动的,没有任何根特性。这意味着,即使攻击者得到对容器的控制,他也将无法损害主机系统。
有限制:您无法使用低于1024的端口(例如80和443), – 私人模式以及某些网络模式不可用。但是,在大多数开发方案和CI/CD无根的Docker中,它可以应付其任务,并大大提高了安全水平。

从历史上看,从根-Antipattern 发射

从一开始,最小特权的原则已在UNIX/Linux世界中应用。该过程的权利越少,危害所做的损失就越少。 Docker最初要求根源访问,但今天被认为是潜在的威胁。

来源

https://docs.docker.com/engine/security/rootless/
https://rootlesscontaine.rs/