安全指南

GitLab CVE-2026-110264(CVSS 10.0):如何检查并更新自托管 GitLab

GitLab 于 2026 年 10 月 21 日发布的关键补丁版本修复了 CVE-2026-110264(CVSS 10.0),该漏洞可能让未经身份验证的用户在服务器上运行代码。内容包括受影响版本、修复版本、必须经过的升级节点,以及相关的 Ruby 正则表达式修复(4.0.9、3.4.12、3.3.13)。

发布于 2026-10-25 更新于 2026-10-25 最后核实 2026-10-25 5 分钟阅读
本页目录

适用对象:在自有服务器或云上运行 GitLab 的管理员(自托管),以及使用 Ruby 开发应用的开发者。本页基于 GitLab 的补丁发布公告、Ruby 官方公告、美国国家漏洞数据库(NVD)以及 CISA 的公开数据整理,不涉及攻击原理。

続報待ち:この記事は公式発表に合わせて更新します

截至 2026 年 10 月 25 日 08:00(JST)

まだ分かっていないこと

  • 可触发该漏洞的确切条件(GitLab 仅表示“在某些条件下”)
  • 利用状态的任何变化(披露时尚无利用报告)
  • NVD 自身的评估(分析中)

GitLab 于 10 月 21 日发布了补丁版本,Ruby 团队于 10 月 23 日发布了修复版本。目前尚无利用报告,该漏洞也不在 CISA 的 KEV 目录中。GitLab 表示,细节将在发布后 90 天公开。如情况有变,本页将予以更新。

今天要做什么(自托管 GitLab)

1

检查版本

在 Linux 软件包(Omnibus)安装中,在运行 GitLab Rails 的节点上执行 sudo gitlab-rake gitlab:env:info,版本信息会显示在“GitLab information”部分。以管理员身份登录后,也可以在管理区域查看。多节点部署时,请检查每个节点。

2

升级到同一分支的修复版本

如果您使用的是 19.4.x,请升级到 19.4.3;使用 19.3.x,则升级到 19.3.6,依此类推。本站认为,同一次要版本内的补丁升级通常不涉及升级节点(请使用 GitLab 的工具确认)。GitLab 表示,单节点实例在迁移完成前无法启动,应预期会有停机。多节点实例可以使用零停机升级流程。

3

如果版本较旧,先检查升级节点

GitLab 规定了不可跳过的必需升级节点。截至 2026 年 10 月,GitLab 18 的节点包括 18.2、18.5、18.8 和 18.11,GitLab 19 的节点包括 19.2、19.5、19.8 和 19.11(其中 19.2 和 19.5 已发布)。请在 GitLab 升级路径工具中输入当前版本和目标版本,以获取必须经过的版本。GitLab 表示,必须先升级到这些版本,才能升级到后续版本,并在每个必经升级版本(升级停靠点)等待后台迁移完成。

4

如果无法立即升级,限制访问范围

GitLab 的公告除升级外没有提供其他临时缓解方法。在升级之前,本站建议通过防火墙或 VPN 使 GitLab 无法从外部网络访问,并关闭新用户注册。这两项措施都无法堵住漏洞,因此仍需尽快推进升级。

5

排查入侵痕迹

GitLab 为自托管用户发布了两项威胁检测规则(公告中的“Detecting CVE-2026-110264 Exploitation Attempts”部分)。如果您有日志监控,请加载这些规则。同时检查是否存在不熟悉的进程、文件、管理员账户和外联连接。参见如何检查服务器是否已被入侵。

我是否受影响?快速对照表

您运行的版本CVE-2026-110264(严重)同一版本中的高危及其他漏洞目标版本
19.5.x,低于 19.5.1受影响受影响19.5.1
19.4.x,低于 19.4.3受影响受影响19.4.3
19.3.x,低于 19.3.6受影响受影响19.3.6
19.0.x 至 19.2.x受影响(已在 19.0.10、19.1.9、19.2.9 中修复)仅在 19.3.6 及更高版本中修复19.3.6 或更高版本
18.11.x,低于 18.11.13受影响(已在 18.11.13 中修复)仅在 19.3.6 及更高版本中修复19.3.6 或更高版本
18.10 及更早版本(自 7.0 起)受影响视具体漏洞而定通过升级节点升级到较新版本
GitLab.com已修补已修补无需操作
GitLab Dedicated自 19.3.5-internal0、19.4.2-internal0 起已修补同上无需操作(据 GitLab 称)

其他各项漏洞的受影响范围各不相同(例如,CVE-2026-15723 自 10.1 起受影响,CVE-2026-112212 自 18.3 起受影响)。具体范围请查看 GitLab 公告中的表格。

当前版本

修复前,严重漏洞仍然存在

18.11.13 至 19.2.9

严重漏洞已修复,高危漏洞仍然存在

19.3.6 / 19.4.3 / 19.5.1

本次发布的全部修复

18.11 至 19.2 的修复只是临时过渡,仅修复了严重漏洞。高危漏洞的修复仅从 19.3.6 开始提供。

披露内容(摘自 GitLab 公告)

GitLab 关键补丁发布(2026 年 10 月 21 日)
CVE
CVE-2026-110264(CWE-190:整数溢出)
严重程度
严重,CVSS v3.1 10.0(AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H,GitLab 的评级)
问题
在某些条件下,编译经过特殊构造的正则表达式时出现整数溢出,可能使未经身份验证的用户在 GitLab 服务器上执行任意代码
受影响版本
GitLab CE/EE 自 7.0 起,低于 18.11.13、19.0.10、19.1.9、19.2.9、19.3.6、19.4.3 和 19.5.1
已修复
GitLab.com;GitLab Dedicated 自 19.3.5-internal0 和 19.4.2-internal0 起
报告者
一位外部研究人员,通过 GitLab 在 HackerOne 上的漏洞赏金计划提交
利用情况
公告未说明;截至 2026 年 10 月 25 日不在 CISA 的 KEV 目录中
10.0
CVE-2026-110264 的 CVSS(GitLab 评级)
无需登录
所需权限(PR:N)
7 个分支
提供修复的版本分支(18.11 至 19.5)
12
同一版本修复的 CVE 数量

同一版本还修复了另外 11 个漏洞,其中两个为高危。CVE-2026-15723(CVSS 8.2)可能使已通过身份验证的用户在同时启用 OmniAuth SAML 和 LDAP 自动关联时接管现有的 LDAP 账户。CVE-2026-112212(CVSS 7.5)可能导致缓存的 OAuth/OIDC 发现文档被投毒,从而使某些流程被发送到外部服务器。其余的为 5 个中危和 4 个低危。

CISA 于 10 月 21 日发布的 SSVC 评估列出:利用情况为“none”(无),可自动化为“yes”(是),技术影响为“total”(完全)。在尚无利用报告的情况下尽快完成升级,是应对此事最省事的方式(本站观点)。

根源在于 Ruby 的正则表达式引擎:面向 Ruby 开发者

10 月 23 日,Ruby 团队发布了 Ruby 4.0.9、3.4.12 和 3.3.13,修复了 Ruby 正则表达式引擎(Onigmo)中的漏洞。这些修复涉及 GitLab 分配的四个 CVE(CVE-2026-89078、CVE-2026-93577、CVE-2026-97229 和 CVE-2026-110264)所对应的三个漏洞。除 CVE-2026-110264 外,另外三个漏洞已在 GitLab 19.4.1 和 19.4.2 中修复。

Regexp.timeout 无法提供保护

根据 Ruby 的公告,只有当应用从攻击者可控的字符串编译正则表达式时(Regexp.new、Regexp.union、Regexp.compile,或 /#{input}/ 这样的插值),这些漏洞才会被触发。仅使用开发者编写的正则表达式的应用不受影响。Regexp.timeout 无法防范这些漏洞,限制模式长度也不可靠。

Ruby 3.3 处于仅安全维护阶段,但由于 GitLab 为与这些修复相关的问题分配了 CVE,3.3.13 作为例外包含了这些修复。Ruby 3.2 已于 2026 年 4 月 1 日停止维护,且没有修复版本。

GitLab 的 Linux 软件包和云原生镜像包含 GitLab 自身的正则表达式补丁,因此 GitLab 管理员应更新 GitLab 本身,而不是服务器上的 Ruby。如果您是从源代码安装 GitLab,本站建议同时将该 Ruby 更新到修复版本。

有风险的做法

  • 将搜索框或筛选输入直接传给 Regexp.new
  • 运行用户注册的、作为服务器端正则表达式的模式
  • 认为 Regexp.timeout 或长度限制即可确保安全
  • 在 Ruby 3.2 或更早版本停止维护后继续使用

更安全的做法

  • 对于普通文本搜索,使用 Regexp.escape,使输入按字面匹配
  • 思考是否真的需要允许用户编写正则表达式
  • 如果需要,使用其他正则引擎运行,或在隔离进程中运行(本站观点)
  • 将 Ruby 升级到 4.0.9、3.4.12 或 3.3.13 或更高版本

仅通过您自己的代码无法判断您依赖的 gem 或框架是否从用户输入构建正则表达式,因此升级 Ruby 是最可靠的修复方式。关于依赖监控,参见如何使用 osv-scanner 监控依赖的 CVE。

自托管 Git 服务器常被忽略的事项

自行运行 GitLab 可以避免某些意外,例如仓库被误设为公开,但补丁管理的工作也随之落到您身上。对于一个可追溯到 7.0 的漏洞,长期未更新的服务器需要经过的升级节点最多,工作量也最大。

本站观点:平时就应保持至少落后最新必需升级节点一个节点以内。这样,紧急升级只需一两步,而不是一长串的升级链。关于自托管的利弊,参见自托管 Git 与 GitHub:哪个更安全。

仍不明确的事项

项目状态
该漏洞的确切触发条件未说明(“在某些条件下”;细节将于发布后 90 天公开)
利用情况未说明(截至 10 月 25 日不在 CISA 的 KEV 中)
公开的利用代码未说明
NVD 评估分析中(GitLab 的评级为 10.0)
Ruby 漏洞本身的 CVERuby 团队尚未申请(可能会重新评估)

来源

  • GitLab,“GitLab Critical Patch Release: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13”(2026 年 10 月 21 日)— docs.gitlab.com
  • Ruby,“Regexp compilation fixes related to GitLab's CVE-2026-89078, CVE-2026-93577, CVE-2026-97229 and CVE-2026-110264”(2026 年 10 月 23 日)— ruby-lang.org
  • Ruby,“Ruby Maintenance Branches” — ruby-lang.org
  • GitLab,“Upgrade paths” — docs.gitlab.com
  • GitLab,“Maintenance Rake tasks”(gitlab:env:info)— docs.gitlab.com
  • NIST NVD,“CVE-2026-110264” — nvd.nist.gov
  • CISA,“Known Exploited Vulnerabilities Catalog” — cisa.gov

更新日志

2026-10-25:首次发布,基于 GitLab 补丁发布公告、Ruby 官方公告、NVD 以及 CISA KEV 目录(2026 年 10 月 23 日版本)。

延伸阅读

最新快讯

FAQ

Q发生了什么?
A

2026 年 10 月 21 日,GitLab 为 CE 和 EE 发布了关键补丁版本 19.5.1、19.4.3、19.3.6、19.2.9、19.1.9、19.0.10 和 18.11.13。其中最严重的漏洞 CVE-2026-110264(CVSS 10.0)是在编译经过特殊构造的正则表达式时出现的整数溢出,在某些条件下可能使未经身份验证的用户在 GitLab 服务器上执行任意代码。

Q我的 GitLab 是否受影响?
A

如果自托管的 GitLab CE/EE 实例运行的是 7.0 或更高版本,并且低于其所在分支的修复版本(19.5.1、19.4.3、19.3.6、19.2.9、19.1.9、19.0.10 或 18.11.13),则受影响。GitLab.com 已完成修补。对于 GitLab Dedicated,运行 19.3.5-internal0、19.4.2-internal0 或更高版本的租户已包含修复。

Q升级到 18.11.13 或 19.2.9 就够了吗?
A

这可以修复 CVE-2026-110264,但根据 GitLab 的公告,同一版本中的高危漏洞(CVE-2026-15723、CVE-2026-112212)以及其他漏洞仅在 19.3.6、19.4.3 和 19.5.1 中修复。请将 18.11.13 至 19.2.9 视为关键漏洞的临时过渡版本,并计划升级到 19.3.6 或更高版本(本站观点)。

Q该漏洞是否正在被利用?
A

GitLab 的公告未提及已被利用,截至 2026 年 10 月 25 日,该漏洞也不在 CISA 的已知被利用漏洞(KEV)目录中。GitLab 已发布两项威胁检测规则,帮助自托管用户发现利用尝试。

Q我开发 Ruby 应用,这会影响我吗?
A

可能会。10 月 23 日,Ruby 发布了 4.0.9、3.4.12 和 3.3.13,以修复其正则表达式引擎(Onigmo)中的漏洞。只有从攻击者可控字符串编译正则表达式的应用(如 Regexp.new、Regexp.union、/#{input}/ 等)受影响;仅使用开发者编写的正则表达式的应用不受影响。Ruby 表示,Regexp.timeout 无法防范这些漏洞,限制模式长度也不可靠。

Q我们仍在使用 Ruby 3.2 或更早版本。
A

Ruby 3.2 已于 2026 年 4 月 1 日结束生命周期,唯一的修复版本是 4.0.9、3.4.12 和 3.3.13。请升级到 3.3.13 或更高版本。在完成升级之前,Ruby 团队建议不要从不可信的输入编译正则表达式。