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月1日

安全

Builder

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

网络

运行时

无根

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

日志记录

19.03.13

2020年9月16日

构建器

  • buildkit: 修复缓存逻辑中的空指针解引用 moby/moby#41279
  • buildkit: 在COPY/ADD操作中将Unix套接字视为常规文件 moby/moby#41269
  • buildkit: 在计算中忽略系统和安全扩展属性,以确保无论SELinux环境如何,COPY缓存保持一致 moby/moby#41222
  • buildkit: 使 --cache-from 行为更加可靠 moby/moby#41222
  • buildkit: 修复导出缓存时导致CPU无限循环占用的问题 moby/moby#41185

客户端

网络

无根

运行时

Windows

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

19.03.12

2020年6月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在主机上没有被完全禁用(通过内核命令行中的ipv6.disable=1),它可能会在某些接口上未配置或配置,但很可能IPv6转发是禁用的,即/proc/sys/net/ipv6/conf//forwarding == 0。此外,默认情况下,/proc/sys/net/ipv6/conf//accept_ra == 1。这两个sysctls的组合意味着主机接受路由器广告并使用它们配置IPv6堆栈。

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

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

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

查看 kubernetes/kubernetes#91507 以了解相关问题。

19.03.10

2020年5月29日

客户端

网络

运行时

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

包装

19.03.9

2020年5月14日

Builder

  • buildkit: 修复在并行构建多个镜像时并发映射写入导致的恐慌。 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年3月10日

运行时

19.03.7

2020-03-03

构建器

运行时

客户端

19.03.6

2020年2月12日

构建器

网络

运行时

19.03.5

2019年11月14日

构建器

  • builder-next: 在构建器配置中添加了 entitlementsdocker/engine#412
  • 修复 builder-next:在使用构建密钥或 SSH 转发与 userns-remap 时出现权限错误。 docker/engine#420
  • 修复 builder-next:在已复制的目录内复制符号链接。 docker/engine#420

包装

  • 支持RHEL 8软件包

运行时

19.03.4

2019年10月17日

网络

已知问题

Existing

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

19.03.3

2019年10月8日

安全

构建器

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

  • 修复 builder-next:当守护进程通过套接字激活启动时,用户命名空间构建的问题。 docker/engine#373

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

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

客户端

  • 增加了对Docker模板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上的panic。 docker/engine#363

  • 修复了在链接到不存在的容器时返回“无效参数”的问题。 docker/engine#352

  • 修复 overlay2:当使用内核版本 >= 5.2 时,挂载时出现繁忙错误。 docker/engine#332

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

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

  • 修复jsonfile日志记录器:当设置了max-size并且max-file=1时,日志卡住的问题。 docker/engine#378

已知问题

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

Existing

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

19.03.2

2019年9月3日

构建器

  • 修复 COPY --from 在 Windows 上指向不存在的目录的问题。 moby/moby#39695

  • 修复 builder-next:元数据命令在历史记录中没有创建时间。 moby/moby#39456

  • 修复 builder-next:在图层导出错误时关闭进度。 moby/moby#39782

  • 将buildkit更新至588c73e1e4。 moby/moby#39781

客户端

  • 修复非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

已知问题

  • 在某些大型集群的情况下,作为Swarm部分的一部分,docker信息可能包含错误code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这并不表示用户有任何失败或配置错误,也不需要任何响应。

  • 在重新部署所有服务时,可能会出现Orchestrator端口冲突。由于短时间内大量的swarm manager请求,一些服务无法接收流量,并在部署后导致404错误。

    • Workaround: restart all tasks via 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
    • Workaround: Add these rules back using a script and cron definitions. The script must contain '-C' commands to check for the presence of a rule and '-A' commands to add rules back. Run the script on a cron in regular intervals, for example, every minutes.
    • Affected versions: 18.09.1, 19.03.0
  • CVE-2018-15664 符号链接交换攻击与目录遍历。在即将发布的补丁中提供适当修复之前的解决方法:docker pause 容器在进行文件操作之前。 moby/moby#39252

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

19.03.1

2019年7月25日

安全

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

已知问题

  • 在某些情况下,在大型集群中,作为Swarm部分的一部分,docker信息可能包含错误code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这并不表示用户有任何故障或配置错误,也不需要任何响应。

  • 在重新部署所有服务时,可能会出现Orchestrator端口冲突。由于短时间内大量的swarm manager请求,一些服务无法接收流量,并在部署后导致404错误。

    • Workaround: restart all tasks via 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
    • Workaround: Add these rules back using a script and cron definitions. The script must contain '-C' commands to check for the presence of a rule and '-A' commands to add rules back. Run the script on a cron in regular intervals, for example, every minutes.
    • Affected versions: 18.09.1, 19.03.0
  • CVE-2018-15664 符号链接交换攻击与目录遍历。在即将发布的补丁中提供适当修复之前的临时解决方案:docker pause 容器在进行文件操作之前。 moby/moby#39252

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

19.03.0

2019年7月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的更多信息,请参阅 弃用信息以获取目标移除日期。

已知问题

  • 在某些大型集群的情况下,作为Swarm部分的一部分,docker信息可能包含错误code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)。这并不表示用户有任何失败或配置错误,也不需要任何响应。

  • 在重新部署所有服务时,可能会出现Orchestrator端口冲突。由于短时间内大量的swarm manager请求,一些服务无法接收流量,并在部署后导致404错误。

    • Workaround: restart all tasks via 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
    • Workaround: Add these rules back using a script and cron definitions. The script must contain '-C' commands to check for the presence of a rule and '-A' commands to add rules back. Run the script on a cron in regular intervals, for example, every minutes.
    • Affected versions: 18.09.1, 19.03.0
  • CVE-2018-15664 符号链接交换攻击与目录遍历。在即将发布的补丁中提供适当修复之前的解决方法:docker pause 容器在进行文件操作之前。 moby/moby#39252

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