【CVSS9.4】GitLabGraphQL未授权代码注入漏洞(CVE-2026-19478)

admin 2026-08-21 07:01:03 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: CVE-2026-19478是GitLabCE/EE中一个CVSS9.4的未授权代码注入漏洞,影响18.2至19.2.4之前版本。攻击者无需认证即可通过构造的GraphQL查询,利用fallback字段注入调用public_send方法,远程修改或删除公开项目与用户数据。PoC已公开,存在批量利用风险。建议立即升级至18.11.11、19.0.8、19.1.6或19.2.4修复版本,并审计GraphQL端点日志。 综合评分: 88 文章分类: 漏洞分析,应急响应,红队,渗透测试


cover_image

【CVSS 9.4】GitLab GraphQL 未授权代码注入漏洞(CVE-2026-19478)

原创

chicken chicken

爱坤sec

2026年8月19日 02:30 马来西亚

在小说阅读器读本章

去阅读

CVE-2026-19478

GitLab GraphQL 未授权代码注入 可远程修改/删除项目与用户数据

SecLab 安全研究 · 2026-08-17 公开披露

⚠️ CVSS 9.4 CRITICAL

攻击向量:网络 | 攻击复杂度:低 | 所需权限:无 | 用户交互:无

漏洞描述

GitLab 是业界最流行的开源 DevOps 平台之一,提供代码托管、CI/CD、Issue 追踪等功能,全球企业部署量巨大。CVE-2026-19478 影响 GitLab CE/EE 18.2 至 19.2.4 之前的所有版本

远程未认证攻击者可利用该漏洞,通过精心构造的 GraphQL 查询,在特定条件下对公开项目与用户数据执行修改或删除操作——无需登录、无需交互、无需任何权限,CVSS 评分 9.4。

影响版本

18.x 系列:>= 18.2 且 < 18.11.11

19.0 系列:< 19.0.8

19.1 系列:< 19.1.6

19.2 系列:< 19.2.4

修复版本

✅ 修复版本:18.11.11 / 19.0.8 / 19.1.6 / 19.2.4(已发布)

⚠️ 建议立即升级对应系列的最新补丁版本

漏洞根因

漏洞位于 GitLab 的 GraphQL 层,属于 CWE-94 代码注入(fallback-field 注入):

缺陷1|fallback 字段生成可控

当 GraphQL 查询携带 @gl_introduced(未来指令)时,框架会为不存在的字段创建 fallback 字段——攻击者完全控制该字段名。

缺陷2|字段名注入 public_send

攻击者选择的字段名被拼入底层 ActiveRecord 模型的 任意 public_send 调用——字段名即方法名,可调用 touchdeactivatedestroy 等任意公开方法。

缺陷3|无鉴权校验

该注入路径未做权限校验,未认证用户即可对公开项目/用户模型发起调用。

利用链

① 版本检测:确认目标 GitLab 版本处于受影响区间(/api/v4/version/help

② 行为探测(安全):发送 benign touch payload——漏洞实例返回 "touch": true,已修复实例返回 Field 'touch' doesn't exist

③ 数据修改--user victim --mode modify → 调用 deactivate 停用公开用户

④ 数据删除--project group/public-project --mode destroy → 调用 destroy 删除公开项目(不可逆)

⑤ 定制利用--method NAME 指定任意方法名,扩展攻击面

公开 PoC

# 仓库: github.com/davkharrr/CVE-2026-19478-PoC
# 用法: python poc.py --url <URL> (--project <ns/proj> | --user <username>)
#        [--mode check|modify|destroy] [--method NAME] [--token TOKEN]

# 安全探测:
#   python3 poc.py --url https://gitlab.example.com --project group/public-project
#   (调用 Project#touch, 仅更新 updated_at, 无破坏)

# 修改用户:
#   python3 poc.py --url https://gitlab.example.com --user victim --mode modify
#   (deactivate 停用公开用户, 可逆)

# 删除项目:
#   python3 poc.py --url https://gitlab.example.com --project group/public-project --mode destroy
#   (删除公开项目, 不可逆)

FOFA 语法

app="GitLab"
body="gitlab" && header="gitlab"

修复建议

1️⃣ 立即升级 GitLab 至 18.11.11 / 19.0.8 / 19.1.6 / 19.2.4 及以上

2️⃣ 审计 GraphQL 端点(/api/graphql)访问日志中的异常查询

3️⃣ 检查公开项目与用户数据是否有未授权的变更记录

⚠️ PoC 已公开且无认证要求,存在被批量利用的风险,请尽快处置


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:爱坤sec chicken chicken《【CVSS 9.4】GitLab GraphQL 未授权代码注入漏洞(CVE-2026-19478)》

评论:0   参与:  0