Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
gitlab-onigmo-scanner — 针对 GitLab CVE-2026-97229(以及 CVE-2026-110264)的仅检测式分诊:评估自管理 GitLab 版本及其 Ruby 版本,识别 10 月 12 日补丁陷阱和自定义 Ruby 陷阱。无载荷,无网络探测。 | Kitploit
工具/GitHubGitHub/foxcornlab/gitlab-onigmo-scanner
防御工具漏洞扫描器漏洞分析配置审计渗透测试事件响应
GitHubfoxcornlab/gitlab-onigmo-scanner

gitlab-onigmo-scanner

针对 GitLab CVE-2026-97229(以及 CVE-2026-110264)的仅检测式分诊:评估自管理 GitLab 版本及其 Ruby 版本,识别 10 月 12 日补丁陷阱和自定义 Ruby 陷阱。无载荷,无网络探测。

查看仓库
17天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

gitlab-onigmo-scanner

针对两个 CVSS 10.0 级别的 GitLab 正则漏洞 CVE-2026-97229 和 CVE-2026-110264 的版本研判工具。输入你自有的 GitLab 版本,它会告诉你该构建是否仍存在风险,并能识别出两个已经让不少人中招的陷阱。它从不访问网络,从不发送 payload,从不请求 CI lint 端点,也从不编译构造的正则。

漏洞详情

详情值
CVECVE-2026-97229,以及与之并列评级的 CVE-2026-110264
缺陷当 GitLab 编译用户提供的正则表达式时,内置于 Ruby 的正则引擎 Onigmo 中存在 整数溢出(CWE-190)
影响在特定条件下,可在自管理 GitLab 服务器上实现 未认证远程代码执行
严重性两者均为 10.0 严重级别,由 GitLab 作为 CNA 评分
利用情况CVE-2026-97229 于 2026-10-29 被加入 CISA KEV,联邦机构截止日期为 2026-11-01。截至本文撰写时,CVE-2026-110264 尚无 KEV 收录记录,且 GitLab 报告未发现其被用于攻击的迹象

CVE-2026-97229 是 CI/CD 正则漏洞:在 CI/CD 配置中使用特制的正则表达式,正则校验不足,已于 2026-10-12 修复。CVE-2026-110264 是第二个、影响范围更广的正则漏洞,于 2026-10-21 修复,波及可追溯至 7.0 的所有自管理版本。相同的引擎,相同的评分,不同的缺陷,这正是仅做一项检查不够的原因。

修复版本

CVE-2026-97229(修复于 2026-10-12)

版本线修复版本
GitLab 19.219.2.8
GitLab 19.319.3.5
GitLab 19.419.4.2
GitLab 19.5、早于 19.2 的版本未列为受此 CVE 影响

CVE-2026-110264(修复于 2026-10-21)

版本线修复版本
GitLab 19.519.5.1
GitLab 19.419.4.3
GitLab 19.319.3.6
GitLab 19.219.2.9
GitLab 19.119.1.9
GitLab 19.019.0.10
GitLab 18.1118.11.13
GitLab 18.10 及更早版本无修复版本,请升级至 18.11.13 或更高版本

Ruby,适用于源码安装和自定义镜像安装

版本线修复版本
Ruby 3.33.3.13
Ruby 3.43.4.12
Ruby 4.04.0.9
Ruby 3.2 及更早版本无修复,已停止维护,请迁移至 3.4 或 4.0

陷阱 1:10 月 12 日的补丁并不覆盖 10 月 21 日的漏洞

19.4.2、19.3.5 和 19.2.8 修复了 CVE-2026-97229。但它们每一个都低于各自分支上 CVE-2026-110264 的修复版本(19.4.3、19.3.6、19.2.9)。如果你在 10 月 12 日打了补丁就停手了,你仍然存在风险,而一个只认识第一个 CVE 的扫描器会判定你是安全的。本工具会对两者都进行研判,并在发现该陷阱时于输出中明确指出。

陷阱 2:升级 GitLab 并不能修复你自己的 Ruby

GitLab 的修复是对其官方软件包和镜像中所捆绑 Ruby 的补丁。源码安装,或单独安装 Ruby 的自定义镜像,无法通过升级 GitLab 获得该补丁。Alpine Linux 就亲身经历了这一点:它于 2026-10-22 升级到 GitLab 19.3.6,却仍然存在风险,因为其镜像使用的是标准 Ruby。攻击者于 2026-10-20 和 21 日探测了其服务器,导致 worker 崩溃八次,其中四次已推进到漏洞利用的中途,并在 25 日和 26 日再次返回。Alpine 未找到漏洞利用成功的证据,也无法排除其可能性,于是从零重建了实例,更换了密钥并重置了所有密码。其在 2026-10-27 之后重新拉取的修复镜像,携带的是 Ruby 3.3.13。

因此:--install-type official 只评估 GitLab 版本,因为 Ruby 随它一起提供。--install-type source 或 custom 还会评估你通过 --ruby-version 提供的 Ruby,而缺少 Ruby 版本会被评为 UNKNOWN,而不是干净。Ruby 4.0.8 是一个值得了解的特殊情况:它修复了 CVE-2026-97229 漏洞,但没有修复 CVE-2026-110264,因此在这里被评为 VULNERABLE。Ruby 并未为这些修复请求自己的 CVE 标识符,这就是为什么将 CVE 记录与已安装软件包匹配的扫描器在任何地方都找不到有漏洞的 Ruby。此工具直接检查 Ruby 版本。

它检查什么

  • 单个 GitLab 版本:分别检查 CVE-2026-97229 和 CVE-2026-110264,然后给出一个总体判定
  • 多个实例的 CSV 清单:name,gitlab_version,ruby_version,install_type,hosting
  • 当你说明安装类型为 source 或 custom 时的 Ruby 陷阱
  • GitLab.com 和 Dedicated 视为已修补,无需操作

每个发现都会得到一个判定:VULNERABLE、FIXED、EOL_NO_FIX、UNKNOWN,或对于不涉及的分支上的单个 CVE 为 NOT_AFFECTED。EOL_NO_FIX 计为有漏洞:该产品线不会有补丁。

它从不做什么

不发起网络请求。不探测远程服务器。不构造正则表达式,不发送 CI lint 请求,不产生漏洞利用流量,不包含 PoC 代码。它只读取你提供的版本字符串,然后停止。这是有意为之:CVE-2026-97229 的公开 PoC 已经存在,在这里复现一个不会增加任何防御价值。

既然已有 PoC 和版本计数器,为什么还要这个

CVE-2026-97229 的公开材料大多是攻击性的:以 git 用户身份运行代码的 PoC,以及映射哪些构建可被武器化的实验环境。Censys 按版本统计暴露的主机。GitLab 发布了用于在日志中发现利用尝试的 Sigma 规则。这些都不是独立的防御性分诊工具,无法同时评估两个十月 CVSS 10.0 漏洞,并检查 source 或 custom 安装下的 Ruby。这个仓库填补的正是这一空白:一条命令,两个 CVE,两个陷阱,无载荷。请将其与 GitLab 的 Sigma 规则配合使用,而不是替代它们。如果某个实例被探测过,版本分诊不等于入侵分诊:检查 worker 崩溃日志和 Onigmo 崩溃报告,如果你无法排除尝试,请遵循 Alpine 的示例。

评级

发现严重性
GitLab 低于其分支对任一 CVE 的修复版本VULNERABLE
GitLab 为 18.10 或更旧,或 source/custom 安装上的 Ruby 3.2 或更旧EOL_NO_FIX,计为有漏洞
GitLab 达到或超过两个修复版本,且适用时 Ruby 已修复FIXED
Source/custom 安装没有 Ruby 版本,或分支比此工具的数据(2026-10-30)更新UNKNOWN,不是干净
GitLab.com / DedicatedFIXED,由 GitLab 修补

用法

# One instance, official package or image
python3 gitlab_onigmo_scanner.py --version 19.4.2

# One instance, source install with its own Ruby
python3 gitlab_onigmo_scanner.py --version 19.4.3 --ruby-version 3.4.11 --install-type source

# A whole estate, machine-readable output
python3 gitlab_onigmo_scanner.py --list inventory.csv --json

# Tests (version tables only, no network)
python3 -m unittest discover -s tests -v

inventory.csv 格式,表头行可选:

name,gitlab_version,ruby_version,install_type,hosting
prod,19.4.1,,official,self-managed
staging,19.4.3,,official,self-managed
legacy-source,19.4.3,3.4.11,source,self-managed

退出码:0 = 未发现漏洞,2 = 存在漏洞或已停止维护的发现,1 = 扫描错误。UNKNOWN 不会改变退出码,但它并不代表干净。在关闭这些项目之前,请通过其他方式确认。

来源分歧,以及本工具遵循的立场

  • 关于 19.3.4:GitLab 的公告将 19.3 列在 19.3.5 之前作为受影响版本,因此 19.3.4 在此被评为 VULNERABLE。一个漏洞利用实验室报告称其无法将 19.3.4 武器化,因为其捆绑的 libruby 从未进入易受攻击的路径。本工具保守地遵循公告:厂商声称受影响的构建,不会因某个实验室的阴性结果而被排除。
  • 关于 CVE-2026-97229 的前提条件:GitLab 将其评为 PR:N,即无需认证。Rapid7 复现的路径需要先将攻击者控制的内容推送到公共项目,只有最后的 CI lint 请求是无需认证的。本工具不裁决这一争论,因为版本分诊并不依赖它:范围内的版本无论如何都会被标记,范围外的版本两条路径都不会标记。
  • 关于 CVE-2026-110264 的利用情况:GitLab 报告没有在攻击中被利用的迹象,且它不在 CISA KEV 中。本工具不作相反声明。本 README 中的 KEV 收录、截止日期和攻击故事仅属于 CVE-2026-97229。
  • 关于范围:本工具仅评级十月两个 CVSS 10.0 漏洞。它不单独评级九月的正则 CVE(CVE-2026-89078、CVE-2026-93577,均为 9.9,需认证)。任何未通过十月检查的版本已经是严重级别,且每个十月的修复版本都高于其分支的九月修复版本,但这不是完整的 GitLab 审计。不要将这里的 FIXED 评级作为抵御所有其他 GitLab 漏洞的证明。

诚实的注意事项

  • 范围内的版本只是分诊,不是可利用性的证明。可达性取决于你的配置和暴露面,且 GitLab 尚未公布这两个漏洞的完整前提条件。
  • 干净的评级仅取决于你输入的版本字符串。镜像标签不是运行中的版本:用全新拉取重新构建,然后验证运行中的构建。
  • 带后缀的 GitLab 版本(19.4.3-ee.0)按其数字部分解析。Dedicated 使用的内部构建(-internal0)由 --hosting dedicated 标志处理,而非后缀解析。
  • 比本工具数据更新的分支评级为 UNKNOWN。在将未来版本称为干净之前,请重新检查 GitLab 的公告。
  • 此处不包含、链接或复现任何漏洞利用代码。

参考资料

  • GitLab 关键补丁版本 19.4.2 / 19.3.5 / 19.2.8(CVE-2026-97229,CVSS 10.0,2026-10-12)
  • GitLab 关键补丁版本 19.5.1(CVE-2026-110264,CVSS 10.0,2026-10-21,向后移植至 18.11.13)
  • CVE-2026-97229 的 CISA KEV 条目(添加于 2026-10-29,截止 2026-11-01)
  • Alpine Linux 事件披露(2026-10-28):攻击发生于 2026-10-20 至 26,重建并重置密码,自定义镜像的 Ruby 3.3.13 修复
  • Ruby 正则修复公告(2026-10-23):Ruby 4.0.9、3.4.12、3.3.13,以及 CVE-2026-110264 的 4.0.8 缺口
  • Rapid7 对 CVE-2026-97229 的技术分析(路径前提条件、内联注释量词绕过)
  • GitLab 自管理服务器的检测规则(Sigma 格式、Onigmo worker 崩溃和 CI lint 模式)

致谢

  • joaxcar 通过 GitLab 的 HackerOne 项目报告了这两个漏洞
  • GitLab 安全团队提供的公告、向后移植和检测规则
  • Ruby 团队提供的 Onigmo 修复和异常清晰的公告表
  • Alpine Linux 发布了使 Ruby 陷阱具体化的事件
  • Rapid7、Censys 以及所有发布 GitLab 检测研究的人

免责声明

仅为防御性分诊和授权测试而构建。仅扫描你拥有或获授权测试的系统。作者不对滥用负责。

研究由 Vineeth Kumar(foxcornlab)完成。发现 bug 或想要新功能,请提交 issue。

下载工具