了解有关 GitLab Runner 的关键安全版本的更多信息:14.5.2、14.4.2 和 14.3.4。
昨天,GitLab 团队发布了 GitLab Runner 的 14.5.2、14.4.2 和 14.3.4 版本。
这些版本包含重要的安全修复程序,GitLab 团队强烈建议将 GitLab.com 和自我管理实例的所有 GitLab Runner 安装立即升级到其中之一。此关键安全版本针对两个安全漏洞,这些漏洞已被分配为中等严重性的 CVSS,但对 GitLab.com 用户具有严重影响。
GitLab.com Shared Runners 已经在运行补丁版本。
GitLab 团队预估,由于利用此漏洞所需的非常具体的设置组合,容易受到这些攻击的自我管理的 GitLab Runner 安装数量很少。即便如此,GitLab 团队再次强烈建议所有 GitLab Runner 安装立即升级到这些版本之一。
再次致力于确保 GitLab 向客户公开或托管客户数据的所有方面都符合最高安全标准。作为保持良好安全卫生的一部分,强烈建议所有客户升级到其受支持版本的最新安全版本。
建议操作
再次强烈建议所有运行受下述问题影响的版本的安装尽快升级到最新版本。
修复表
标题 | 严重性 |
---|---|
特制的 docker 镜像会耗尽管理人员的资源 | 中等的 |
Golang 漏洞 CVE-2021-44717:在 ForkExec 错误时不要关闭 fd 0 | 中等的 |
特制的 docker 镜像会耗尽管理人员的资源
GitLab Runner 中一个不受控制的资源消耗漏洞,影响从 13.7 到 14.3.4 之前的所有版本、从 14.4 开始到 14.4.2 之前的所有版本、从 14.5 开始到 14.5.2 之前的所有版本,允许攻击者使用特制的 docker 触发作业用于耗尽跑步者管理器资源的图像。这是一个中等严重性的问题 ( CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
, 6.5)。它现在在最新版本中得到缓解,并被分配了CVE-2021-39939。
该漏洞是由 GitLab 团队内部发现的。
临时解决方法
在 GitLab Runner 无法立即更新的情况下,临时解决方法是禁用FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR
Runnerconfig.toml
配置文件中的功能标志。这将关闭易受攻击的功能,并使用户无法从作业级别打开它。
-
打开
config.toml
要更新的 Runner 文件。 -
在每个
[[runners]]
部分添加:[runners.feature_flags] FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR = false
-
保存文件并退出。
之后,运行程序的进程应检测到更改并在一分钟内开始应用配置。对于此配置更改,不需要重新启动 GitLab Runner 进程。
Golang 漏洞 CVE-2021-44717:在 ForkExec 错误时不要关闭 fd 0
所有以前版本的 GitLab Runner 都容易受到Golang 安全问题 CVE-2021-44717 的影响:不要在 ForkExec 错误上关闭 fd 0,这可能导致 I/O 错误定向,例如将用于一个连接的网络流量写入另一个连接,或用于一个文件的内容到另一个文件。这是一个中等严重性的问题 ( CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
, 5.3)。它现在在最新版本中得到缓解,并被分配了CVE-2021-39947。
该漏洞是由 GitLab 团队内部发现的。
临时解决方法
在 GitLab Runner 无法立即更新的情况下,临时解决方法是增加为 runner 进程设置的文件描述符限制。但是,这取决于它的具体配置和部署方式。
请记住,更新文件描述符限制需要重新启动运行程序进程。要在不中断任何正在运行的作业的情况下做到这一点,应该向SIGQUIT
runner 进程发送一个信号。这将启动正常关闭,在此期间 runner 不会接受任何新作业,但会在退出之前完成所有已启动的作业。
确定文件描述符限制的最佳值的能力将根据运行程序处理的负载及其特定配置而有所不同。将每个可以在 runner 管理器上并发运行的潜在作业的限制设置为 50 是一个很好的起点。但是为了找到最佳值,GitLab 团队强烈建议监控运行程序进程及其使用的文件描述符数量,并根据特定需求进行调整。