一条GraphQL指令,删光你的代码仓
安世加
2026年8月19日 18:00
上海
在小说阅读器读本章
去阅读
新闻
News Today
GitLab在8月17日发布了一条紧急安全更新,修复了一个CVSS 9.4分的GraphQL层漏洞——编号CVE-2026-19478。任何能访问你GitLab实例/api/graphql端点的人,不需要账号、不需要密码、不需要你点任何东西,就可以向公共项目发一个恶意请求,永久删除代码、伪造合并记录、封禁维护者账号,或者干脆把整个项目抹干净。8月18日,奇安信CERT在国内成功复现,全网曝出PoC,看watchTowr的安全研究员在拿到补丁后几分钟内就反向推导出了利用代码。
一句话:这次轮到的不是某个冷门组件,是几乎所有企业研发团队都在用的代码托管平台。
漏洞本身不复杂。GitLab用GraphQL来组织API调用,每个字段都带有一个@gl\_introduced指令,标明\"这个字段是从哪个版本开始引入的\"。问题出在fallback解析逻辑上——当客户端请求一个目标版本上实际没有定义、但指令链条里允许fallback的字段时,GraphQL层在处理过程中绕过了部分权限校验。研究员hiimguardian通过HackerOne把这条问题报给了GitLab,但GitLab的修复公告没有写明具体是哪段指令逻辑出错,更没有透露复现条件。从已经公开的patch反推来看,这是一处典型的\"配置驱动的权限失效\"——指令注解本来是给版本兼容用的,结果被解析器当成了权限旁路。
受影响版本:GitLab CE/EE 从 18.2 至 18.11.11 之前、19.0 至 19.0.8 之前、19.1 至 19.1.6 之前、19.2 至 19.2.4 之前。GitLab.com 和 GitLab Dedicated 已经修好,自托管版本必须手动升级。
技术门槛极低是这个漏洞真正危险的地方。watchTowr的首席安全研究员Jake Knott对CSO杂志说,\"仅凭公告详情和补丁diff,我们在几分钟内就复现了漏洞,AI攻击者也不会落后太多。\" 8月18日,奇安信CERT在国内完成同样复现并发布风险通告,PoC随后在公开渠道流传。GitLab官方的披露策略是补丁发布30天后才公开issue详情,但patch diff本身已经足以让任何人手搓一个exploit,完整技术细节的滞后遮挡基本形同虚设。
受影响面也值得拿出来看一眼。奇安信鹰图资产测绘平台给出的数据是——全球范围内风险资产超过40万个,关联IP近5万个;国内风险资产10.8万个,关联IP 2.1万个。山东省、江苏省、湖北省是国内分布前三。把范围收窄到企业自托管场景,任何对外暴露的GitLab实例,只要存在至少一个Public可见的项目或用户,就满足利用条件。换句话说,只要你的GitLab对外开着、公网上有人知道你的地址,这件事就已经成立了。
实际危害分三个层次。最直观的是破坏:恶意请求能删除整个项目、抹掉issue、停用账号、搞乱分支历史。对一个还在持续迭代的开源项目来说,这意味着直接抹掉所有贡献记录。其次是注入:攻击者不一定删除项目,而是悄悄改代码、伪造合并记录、修改关键状态信息,然后再覆盖回去。对依赖Pull Request、CI/CD流水线发布制品的团队来说,这种\"改动过的公共项目\"就是最完美的供应链起点——下游消费者下载到的就是已经被动过手脚的代码。最阴险的是封禁:攻击者不必每次都删库,只要把维护者账号一个个停用,项目在事实上就瘫痪了;而项目维护者重新走GitLab支持流程恢复账号,需要时间和精力。
不过有个补丁空档必须拎出来讲。官方这次只给了18.11、19.0、19.1、19.2四个分支的修复版本,18.2到18.10之间所有受支持的分支都不会有补丁——GitLab没有给老分支单独再出一个补丁的意思,仍然停留在受支持范围内的用户,只能强制升级到被修复的分支。对那些因为插件、内置CI模板、定制化集成被锁死在老分支大版本上的企业来说,这次\"升级\"可能不是一次简单的版本切换,而是一笔不小的工程动作。但也没得选:停留在原版本意味着把漏洞留在那里。
留给企业的实际动作,按顺序就是这几件事——确认自托管实例当前版本是否落在受影响分支内(管理员后台可查),是的话就本周内升到18.11.11、19.0.8、19.1.6或19.2.4;升级完成之前,对/api/graphql端点做反向代理访问控制或直接限制为内网可达;立刻检查审计日志,看过去几周内有没有非认证上下文的GraphQL mutation调用,重点关注项目删除、用户停用、merge记录修改这几类事件;如果还在18.2到18.10之间的老分支,预算升级窗口就别拖了——这次升级是绕不过去的。
一个更宏观的判断是:代码托管平台的安全,正在成为开源供应链最脆弱的一环。Snyk、Sonatype、Socket这些工具盯得住包管理器里的恶意包,却管不住GitHub、GitLab平台上\"合法的代码修改\"——尤其是当修改是发生在公共项目上、攻击者根本不需要先拿到凭证的时候。这次漏洞能在不认证、不交互的前提下改你代码的事实,再一次说明:现代研发基础设施的攻击面,已经从\"网络层是否挡住\"下沉到\"应用层API是否被正确收紧\"。而每一次基础平台的紧急补丁,也都在提醒同一件事——你的代码库有多重要,托管它的那套系统的权限模型就有多重要,这笔账迟早要算。
信息来源:GitLab 官方公告
本公众号发布的文章均转载自互联网或经作者投稿授权的原创,文末已注明出处,其内容和图片版权归原网站或作者本人所有,并不代表安世加的观点,若有无意侵权或转载不当之处请联系我们处理!
安世加为出海企业提供SOC 2、ISO 体系、PCI DSS认证咨询服务(点击图片可详细查看)
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论