CVE-2026-19478:GitLab GraphQL 代码注入漏洞遭在野利用,未授权攻击者可改写公开项目数据

GitLab 紧急发布带外(out-of-band)安全更新,修复一个被追踪为 CVE-2026-19478 的 GraphQL 代码注入漏洞。该漏洞 CVSS 评分 9.4,影响自托管的 GitLab Community Edition 与 Enterprise Edition。未经身份验证的远程攻击者可通过 GraphQL 端点执行任意代码注入,修改、删除公开项目数据,甚至改写项目元信息。watchTowr 研究团队确认漏洞披露后数日内即观察到针对互联网暴露 GitLab 实例的在野利用尝试,DevOps 团队需立即采取行动。

事件概述

CVE-2026-19478 属于 GraphQL API 的指令注入缺陷,攻击向量完全在网络层,无需用户交互或预先获取任何凭据。该漏洞利用 GraphQL 指令处理流程中缺乏严格校验的环节,使攻击者可在公开项目上下文中执行任意数据修改操作。由于 GraphQL 端点是 GitLab 默认对外开放的核心 API,且大量自托管实例默认配置了公开项目访问权限,该漏洞的影响面覆盖所有未及时升级的自托管 GitLab 部署。

技术细节

GitLab 的 GraphQL API 允许用户通过指令(directive)描述查询与变更的附加行为,例如字段格式化、缓存策略等。CVE-2026-19478 的根本原因是 GitLab 在处理部分 GraphQL 指令时未对指令参数进行充分的过滤与转义,导致攻击者可以构造特殊指令载荷,将任意输入解析为可执行语句。

利用路径大致如下:

  1. 攻击者定位目标自托管 GitLab 实例的 /api/graphql 端点
  2. 通过匿名请求发送携带恶意指令的 GraphQL 查询
  3. 服务器在解析指令时执行攻击者控制的参数
  4. 最终在公开项目上下文中完成任意数据修改或删除操作

值得强调的是,即使项目本身设置为私有,仍可通过公开项目获取初始立足点,进而在权限模型允许的范围内改写其他数据。watchTowr 在研究博客中指出,攻击者可在数小时内完成大规模自动化扫描与利用。

影响评估

CVSS 评分:9.4(严重)。攻击向量:网络。攻击复杂度:低。所需权限:无(未认证)。是否需要用户交互:否。PoC 公开状态:技术细节与利用路径已被多家研究团队公开。在野利用:是,watchTowr 已确认漏洞披露后数日内即出现自动化扫描与利用尝试。影响面:所有未升级至修复版本的自托管 GitLab 社区版与企业版实例,尤其是暴露在公网且配置了公开项目的实例。

影响范围与版本

  • GitLab Community Edition 与 Enterprise Edition 自托管实例
  • 影响版本:18.11 之前至 19.2.4(含 19.0.x、19.1.x、19.2.0–19.2.3 等分支)
  • 官方修复版本:19.2.4、19.1.6、19.0.8、18.11.11
  • 托管版本(GitLab.com 与 Dedicated)不受影响,GitLab 已在平台侧自动应用修复

修复建议

  • 立即将自托管 GitLab 升级到对应分支的修复版本(19.2.4 / 19.1.6 / 19.0.8 / 18.11.11)
  • 升级前可通过 NGINX 反向代理或 WAF 规则限制匿名访问 /api/graphql 端点,对未授权的 GraphQL 请求直接拒绝
  • 暂时将所有公开项目设置为私有,避免利用路径暴露,等待补丁落地后再开放
  • 对升级前的实例进行仓库内容审计,检查 commit 历史、分支保护、merge request 状态、成员权限与 Webhook 配置是否被篡改
  • 轮换所有与 GitLab 集成的 token,包括 CI/CD runner token、第三方 OAuth 应用 secret、Webhook 凭据
  • 监控 GitLab audit log(/admin/audit_events)中异常的 GraphQL 调用记录,特别是包含 directive 参数的复杂查询
  • 建立 GitLab 实例的互联网暴露清单,关闭不必要的公网访问,仅在受信网络内开放管理端口

检测规则参考

  • WAF/IPS 规则:对 /api/graphql 路径中包含异常 directive 关键字与超长参数的请求进行拦截
  • GitLab audit log:监控未认证访问者触发的 mutation 操作,特别是 projectUpdate、repositoryFileUpdate、branchDelete 等敏感指令
  • 仓库内容比对:通过 git reflog 与远端仓库历史快照对比,识别未经授权的 commit、tag 推送与分支删除事件
  • EDR 行为告警:GitLab 工作进程(puma、sidekiq)派生异常子进程、执行异常 shell 命令
  • 流量监控:在网络出口监测 GitLab 实例对外部域名/IP 的异常出站连接,识别潜在的凭据外泄

GitLab 是 DevOps 团队代码协作与 CI/CD 流水线的核心枢纽,CVE-2026-19478 的危害不止于单个项目的篡改,更在于攻击者可以借此破坏软件供应链的完整性——例如改写发布 tag、污染 CI 配置、修改构建脚本。建议所有团队在升级后重新审视 GitLab 的网络暴露策略、GraphQL 访问控制以及与 GitLab 集成的下游系统凭据,避免补丁落地后攻击者通过旧凭据维持访问。

参考来源