适用对象:在自有服务器或云上运行 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)
检查版本
在 Linux 软件包(Omnibus)安装中,在运行 GitLab Rails 的节点上执行 sudo gitlab-rake gitlab:env:info,版本信息会显示在“GitLab information”部分。以管理员身份登录后,也可以在管理区域查看。多节点部署时,请检查每个节点。
升级到同一分支的修复版本
如果您使用的是 19.4.x,请升级到 19.4.3;使用 19.3.x,则升级到 19.3.6,依此类推。本站认为,同一次要版本内的补丁升级通常不涉及升级节点(请使用 GitLab 的工具确认)。GitLab 表示,单节点实例在迁移完成前无法启动,应预期会有停机。多节点实例可以使用零停机升级流程。
如果版本较旧,先检查升级节点
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 表示,必须先升级到这些版本,才能升级到后续版本,并在每个必经升级版本(升级停靠点)等待后台迁移完成。
如果无法立即升级,限制访问范围
GitLab 的公告除升级外没有提供其他临时缓解方法。在升级之前,本站建议通过防火墙或 VPN 使 GitLab 无法从外部网络访问,并关闭新用户注册。这两项措施都无法堵住漏洞,因此仍需尽快推进升级。
排查入侵痕迹
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
本次发布的全部修复
披露内容(摘自 GitLab 公告)
- 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 目录中
同一版本还修复了另外 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 漏洞本身的 CVE | Ruby 团队尚未申请(可能会重新评估) |
来源
- 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 日版本)。
延伸阅读
- 自托管的利弊:自托管 Git 与 GitHub:哪个更安全
- 确定优先级:如何决定先修复哪些 CVE(CVSS、EPSS、KEV)
- 检查入侵:如何检查服务器是否已被入侵
- 同一周的另一项运行时修复:PHP 漏洞 CVE-2026-109618 和 CVE-2026-109619
- 术语:什么是 RCE(远程代码执行) / 什么是 CVSS