影响版本

危险的配置错误。只要满足以下条件,无论 Docker 版本新旧,均存在风险

漏洞原理

Docker守护进程若暴露2375端口且无认证,攻击者可远程管理Docker。

环境搭建

在 Docker 守护进程的配置中开放 TCP 2375 端口(此端口通常用于非加密的 Docker Remote API 通信)。编辑 /etc/docker/daemon.json 文件(如果不存在则创建),添加以下内容

1
2
3
{
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}

或者修改 systemd 的 Docker 服务文件(如 /usr/lib/systemd/system/docker.service),在 ExecStart 行追加 -H tcp://0.0.0.0:2375

1
2
sudo vim /usr/lib/systemd/system/docker.service
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

image

重启docker

1
2
3
sudo systemctl daemon-reload
sudo systemctl restart docker
netstat -tuln | grep 2375

漏洞复现

直接连接就可以了

1
2
docker -H tcp://<你的服务器IP>:2375 info

image

修复建议

  • 使用 TLS:通过配置 Docker 来使用 TLS 加密 TCP 连接。这涉及到生成证书和修改 daemon.json 来启用 TLS。具体步骤可以查看 Docker 的官方文档。

  • 限制访问:仅允许特定的 IP 地址或网络访问 TCP 端口。

  • 使用 VPN 或其他安全通道:确保远程连接是通过安全的网络通道进行的。