Docker Engine 19.03 发行说明

19.03.15

2021-02-01

安全性

  • CVE-2021-21285 防止无效镜像导致 docker 守护程序崩溃
  • CVE-2021-21284 锁定文件权限,防止重新映射的根用户访问 docker 状态
  • 确保在使用 BuildKit 构建时应用 AppArmor 和 SELinux 配置文件

客户端

  • 在导入上下文之前检查上下文,以降低提取文件逃逸上下文存储的风险

19.03.14

2020-12-01

安全性

构建器

  • AppArmor 的 Beta 版本现在可以正确解析,防止构建失败 moby/moby#41542

网络

运行时

无根模式

  • 锁定状态目录,防止 systemd-tmpfiles 自动清理 moby/moby#41635
  • dockerd-rootless.sh:支持新的 containerd shim socket 路径约定 moby/moby#41557

日志记录

19.03.13

2020-09-16

构建器

  • buildkit:修复缓存逻辑中的空指针解引用 moby/moby#41279
  • buildkit:在 COPY/ADD 期间将 Unix socket 视为常规文件 moby/moby#41269
  • buildkit:忽略计算中的系统和安全 xattr,以确保 COPY 缓存在 SELinux 环境下保持一致 moby/moby#41222
  • buildkit:使 --cache-from 行为更可靠 moby/moby#41222
  • buildkit:修复导出缓存时导致 CPU 占用率高的无限循环 moby/moby#41185

客户端

网络

无根模式

运行时

Windows

  • 修复使用 servercore 镜像时 Windows 容器启动时间缓慢的问题 moby/moby#41192

19.03.12

2020-06-18

客户端

  • 修复使用多个配置文件(例如使用 Docker Desktop 时的 Windows 和 WSL2)时阻止从注册表注销的回归问题 docker/cli#2592
  • 修复阻止读取上下文元数据的回归问题 docker/cli#2586
  • 将 Golang 版本提升至 1.13.12 docker/cli#2575

网络

运行时

19.03.11

2020-06-01

网络

禁用 IPv6 路由器广播以防止地址欺骗。 CVE-2020-13401

描述

在 Docker 默认配置中,容器网络接口是连接到主机的虚拟以太网链接(veth 接口)。在此配置中,能够以 root 身份在容器中运行进程的攻击者可以使用 CAP_NET_RAW 能力(默认配置中存在)向主机发送和接收任意数据包。

如果主机上没有完全禁用 IPv6(通过内核 cmdline 上的 ipv6.disable=1),它将在某些接口上未配置或已配置,但 IPv6 转发很可能被禁用,即 /proc/sys/net/ipv6/conf//forwarding == 0。此外,默认情况下,/proc/sys/net/ipv6/conf//accept_ra == 1。这两个 sysctl 的组合意味着主机接受路由器广播并使用它们配置 IPv6 栈。

通过从容器发送“恶意”路由器广播,攻击者可以重新配置主机,将主机部分或全部 IPv6 流量重定向到攻击者控制的容器。

即使之前没有 IPv6 流量,如果 DNS 返回 A (IPv4) 和 AAAA (IPv6) 记录,许多 HTTP 库将尝试首先通过 IPv6 连接,然后回退到 IPv4,这为攻击者提供了响应的机会。如果主机碰巧存在像去年 apt 中的 RCE (CVE-2019-3462) 这样的漏洞,攻击者现在可以升级到主机。

由于 Docker 容器默认不存在 CAP_NET_ADMIN,攻击者无法配置他们想要 MitM 的 IP,他们不能使用 iptables 进行 NAT 或 REDIRECT 流量,也不能使用 IP_TRANSPARENT。然而,攻击者仍然可以使用 CAP_NET_RAW 并在用户空间中实现 tcp/ip 栈。

有关相关问题,请参阅 kubernetes/kubernetes#91507

19.03.10

2020-05-29

客户端

网络

运行时

  • 通过将 Go 升级到 1.13.11 来避免 s390x 上潜在的崩溃。 moby/moby#40978

打包

19.03.9

2020-05-14

构建器

  • buildkit:修复并行构建多个镜像时并发 map 写入崩溃。 moby/moby#40780
  • buildkit:修复在 userns 启用时阻止在不同阶段之间更改非 root 拥有的文件的所有权的问题。 moby/moby#40955
  • 避免在 Windows 上创建不相关的临时文件。 moby/moby#40877

客户端

日志记录

  • 避免因关闭已关闭的日志文件而导致容器日志无法轮转的情况。 moby/moby#40921

网络

运行时

无根模式

  • 现在 rootlesskit-docker-proxy 在暴露特权端口时返回详细错误消息。 moby/moby#40863
  • 支持 /etc/subuid 和 /etc/subgid 中的数字 ID。 moby/moby#40951

安全性

Swarm

19.03.8

2020-03-10

运行时

19.03.7

2020-03-03

构建器

运行时

客户端

19.03.6

2020-02-12

构建器

网络

运行时

19.03.5

2019-11-14

构建器

  • builder-next:在 builder config 中添加 entitlementsdocker/engine#412
  • 修复 builder-next:使用 userns-remap 时使用构建 secrets 或 ssh 转发的权限错误。 docker/engine#420
  • 修复 builder-next:在已复制的目录中复制符号链接。 docker/engine#420

打包

  • 支持 RHEL 8 软件包

运行时

19.03.4

2019-10-17

网络

  • 回滚 libnetwork 更改以修复 DOCKER-USER iptables 链问题。 docker/engine#404

已知问题

现有

  • 在某些大型集群环境下,Docker 信息在 Swarm 部分可能包含错误 code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这不表示用户出现任何故障或配置错误,无需响应。
  • 当将所有服务重新部署为新服务时,可能会发生编排器端口冲突。由于短时间内存在许多 Swarm 管理器请求,某些服务无法接收流量,并在部署后导致 404 错误。
    • 解决方法:通过 docker service update --force 重启所有任务。
  • CVE-2018-15664 目录遍历的符号链接交换攻击。在即将发布的补丁版本中提供适当的修复之前,解决方法是:在进行文件操作之前 docker pause 容器。 moby/moby#39252
  • 由于 CVE 缓解措施导致的 docker cp 回归。当 docker cp 的源设置为 / 时会产生错误。

19.03.3

2019-10-08

安全性

构建器

  • 修复 builder-next:解决第三方注册表的摘要。 docker/engine#339

  • 修复 builder-next:守护程序通过 socket 激活启动时的用户命名空间构建。 docker/engine#373

  • 修复 builder-next;session:每次连接释放转发的 ssh socket 连接。 docker/engine#373

  • 修复 build-next:llbsolver:多个缓存导入器上的错误。 docker/engine#373

客户端

  • 添加了对 Docker Template 0.1.6 的支持。

  • 缓解具有过多别名的 YAML 文件。 docker/cli#2119

运行时

  • 将 Golang 提升至 1.12.10。 docker/engine#387

  • 将 containerd 提升至 1.2.10。 docker/engine#385

  • 分发:修改拉取 v2 schema1 清单时的警告逻辑。 docker/engine#368

  • 修复提供不正确平台选项时 POST /images/create 返回 500 状态码。 docker/engine#365

  • 修复提供不正确平台选项时 POST /build 返回 500 状态码。 docker/engine#365

  • 修复由于结构体成员未对齐导致 32 位 ARMv7 上发生的崩溃。 docker/engine#363

  • 修复链接到不存在的容器时返回“invalid parameter”(无效参数)。 docker/engine#352

  • 修复 overlay2:使用内核 >= 5.2 时挂载时出现 busy 错误。 docker/engine#332

  • 修复 docker rmi 在某些配置错误的系统(例如死掉的 NFS 共享)中卡住的问题。 docker/engine#335

  • 修复 exec 进程的阻塞 I/O 处理。 docker/engine#296

  • 修复 jsonfile logger:当设置 max-sizemax-file=1 时,跟踪日志卡住。 docker/engine#378

已知问题

新增

  • DOCKER-USER iptables 链缺失: docker/for-linux#810。用户无法在此 iptables 链之上执行额外的容器网络流量过滤。如果您没有在 DOCKER-USER 之上自定义 iptable 链,则不受此问题影响。
    • 解决方法:在 docker 守护程序启动后插入 iptables 链。例如
      iptables -N DOCKER-USER
      iptables -I FORWARD -j DOCKER-USER
      iptables -A DOCKER-USER -j RETURN

现有

  • 在某些大型集群环境下,docker 信息在 Swarm 部分可能包含错误 code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这不表示用户出现任何故障或配置错误,无需响应。
  • 当将所有服务重新部署为新服务时,可能会发生编排器端口冲突。由于短时间内存在许多 swarm 管理器请求,某些服务无法接收流量,并在部署后导致 404 错误。
    • 解决方法:通过 docker service update --force 重启所有任务。
  • CVE-2018-15664 目录遍历的符号链接交换攻击。在即将发布的补丁版本中提供适当的修复之前,解决方法是:在进行文件操作之前 docker pause 容器。 moby/moby#39252
  • 由于 CVE 缓解措施导致的 docker cp 回归。当 docker cp 的源设置为 / 时会产生错误。

19.03.2

2019-09-03

构建器

客户端

  • 修复 Windows 上的非 Windows 绝对路径检测 docker/cli#1990

  • 修复 docker login --username 的 zsh 补全脚本。

  • 修复上下文:在 context create 上生成一致的输出。 docker/cli#1985

  • 修复对 HTTP 代理环境变量的支持。 docker/cli#2059

日志记录

网络

运行时

  • 将 Golang 提升至 1.12.8。

  • 修复使用 XFS 磁盘配额时容器可能发生的引擎崩溃。 moby/moby#39644

Swarm

已知问题

  • 在某些大型集群环境下,docker 信息在 Swarm 部分可能包含错误 code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这不表示用户出现任何故障或配置错误,无需响应。

  • 当将所有服务重新部署为新服务时,可能会发生编排器端口冲突。由于短时间内存在许多 swarm 管理器请求,某些服务无法接收流量,并在部署后导致 404 错误。

    • 解决方法:通过 docker service update --force 重启所有任务。
  • 由于 FORWARD 链中缺少 Iptables 规则,流量无法离开主机。缺少的规则是

    /sbin/iptables --wait -C FORWARD -o docker_gwbridge -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    /sbin/iptables --wait -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    • 解决方法:使用脚本和 cron 定义将这些规则添加回去。该脚本必须包含用于检查规则是否存在的“-C”命令和用于添加规则的“-A”命令。以固定的时间间隔(例如,每分钟)运行该脚本。
    • 受影响版本:18.09.1, 19.03.0
  • CVE-2018-15664 目录遍历的符号链接交换攻击。在即将发布的补丁版本中提供适当的修复之前,解决方法是:在进行文件操作之前 docker pause 容器。 moby/moby#39252

  • 由于 CVE 缓解措施导致的 docker cp 回归。当 docker cp 的源设置为 / 时会产生错误。

19.03.1

2019-07-25

安全性

  • 修复 Glibc 下 chroot 中基于 nsswitch 配置的加载问题。 CVE-2019-14271

已知问题

  • 在某些大型集群环境下,docker 信息在 Swarm 部分可能包含错误 code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这不表示用户出现任何故障或配置错误,无需响应。

  • 当将所有服务重新部署为新服务时,可能会发生编排器端口冲突。由于短时间内存在许多 swarm 管理器请求,某些服务无法接收流量,并在部署后导致 404 错误。

    • 解决方法:通过 docker service update --force 重启所有任务。
  • 由于 FORWARD 链中缺少 Iptables 规则,流量无法离开主机。缺少的规则是

    /sbin/iptables --wait -C FORWARD -o docker_gwbridge -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    /sbin/iptables --wait -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    • 解决方法:使用脚本和 cron 定义将这些规则添加回去。该脚本必须包含用于检查规则是否存在的“-C”命令和用于添加规则的“-A”命令。以固定的时间间隔(例如,每分钟)运行该脚本。
    • 受影响版本:18.09.1, 19.03.0
  • CVE-2018-15664 目录遍历的符号链接交换攻击。在即将发布的补丁版本中提供适当的修复之前,解决方法是:在进行文件操作之前 docker pause 容器。 moby/moby#39252

  • 由于 CVE 缓解措施导致的 docker cp 回归。当 docker cp 的源设置为 / 时会产生错误。

19.03.0

2019-07-22

构建器

客户端

API

实验性

安全性

运行时

网络

Swarm

日志记录

弃用

  • 弃用镜像清单 v2 schema1,转而支持 v2 schema2。Docker 的未来版本将完全移除对 v2 schema1 的支持。 moby/moby#39365
  • 移除了 v1.10 迁移器。 moby/moby#38265
  • 现在在自动选择中跳过已弃用的存储驱动程序。 moby/moby#38019
  • 弃用了 aufs 存储驱动程序并添加了警告。 moby/moby#38090
  • 移除了对 17.09 的支持。

有关已弃用标志和 API 的更多信息,请参阅目标移除日期的 弃用信息

已知问题

  • 在某些大型集群环境下,docker 信息在 Swarm 部分可能包含错误 code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这不表示用户出现任何故障或配置错误,无需响应。

  • 当将所有服务重新部署为新服务时,可能会发生编排器端口冲突。由于短时间内存在许多 swarm 管理器请求,某些服务无法接收流量,并在部署后导致 404 错误。

    • 解决方法:通过 docker service update --force 重启所有任务。
  • 由于 FORWARD 链中缺少 Iptables 规则,流量无法离开主机。缺少的规则是

    /sbin/iptables --wait -C FORWARD -o docker_gwbridge -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    /sbin/iptables --wait -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    • 解决方法:使用脚本和 cron 定义将这些规则添加回去。该脚本必须包含用于检查规则是否存在的“-C”命令和用于添加规则的“-A”命令。以固定的时间间隔(例如,每分钟)运行该脚本。
    • 受影响版本:18.09.1, 19.03.0
  • CVE-2018-15664 目录遍历的符号链接交换攻击。在即将发布的补丁版本中提供适当的修复之前,解决方法是:在进行文件操作之前 docker pause 容器。 moby/moby#39252

  • 由于 CVE 缓解措施导致的 docker cp 回归。当 docker cp 的源设置为 / 时会产生错误。

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.