一个开源项目的配置清单里少写了一行,结果让全球几千台数据库服务器变成了公共厕所——谁都能进,想删就删,想看就看。
这不是什么供应链攻击,也不是高级持续性威胁(APT)。安全公司Doyensec的研究员Matthew McNeely和Koda Reef在Dgraph的GraphQL管理接口里发现了一个"restoreTenant"命令,它被意外地排除在权限验证中间件之外。CVSS评分10.0,满分漏洞,无需认证,远程利用。
换句话说,攻击者连密码都不用猜,直接给服务器发一条"帮我恢复这个备份"的指令,就能把整个数据库换成自己的恶意版本。顺带还能翻翻服务器的文件系统,密码哈希、Kubernetes令牌、配置文件——打包带走。
权限中间件:一个被漏掉的"租户"
Dgraph的代码里有一套叫"Guardian of the Galaxy"的认证体系,名字挺中二,功能很实在:验证身份、限制IP、记录审计日志。所有管理命令都要过这一关。
但restoreTenant这个命令在配置映射里消失了。不是被故意禁用,就是纯粹的遗漏——像装修新房时忘了给某个房间装门锁。
当系统收到restoreTenant请求时,查询权限规则返回空值。空值在代码逻辑里通常意味着"无需限制",于是请求直接放行。攻击者提交的备份URL可以是任意远程地址,Dgraph服务器会乖乖下载并恢复,覆盖现有全部数据。
这个漏洞(CVE-2026-34976)影响25.3.0及更早版本。Doyensec在披露时特别提到:官方补丁尚未发布,但修复方案极其简单——把restoreTenant加回中间件配置列表即可。
攻击链:从"恢复备份"到服务器沦陷
利用过程不需要社工、不需要钓鱼、不需要漏洞组合。单点突破,全程自动化。
第一步,定位暴露在互联网的Dgraph管理端口(默认8080)。Shodan、Censys这类搜索引擎能批量筛选目标。
第二步,构造restoreTenant请求,指定攻击者控制的备份文件URL。Dgraph服务器主动发起连接,下载并执行恢复操作——这一步自带服务器端请求伪造(SSRF)效果,因为服务器会向外部地址发起HTTP请求。
第三步,通过备份文件中的恶意配置或利用恢复过程中的文件解析逻辑,进一步读取服务器本地文件。研究人员确认可以获取密码哈希和Kubernetes服务账户令牌。
数据完整性、机密性、可用性——CIA三要素全灭。这不是部分数据泄露,是整库被替换、服务器被穿透的彻底失控。
防御窗口:隔离比补丁先来
漏洞披露时,Dgraph官方尚未发布修复版本。这意味着所有受影响实例都处于"裸奔"状态,且短期内没有官方解药。
网络层的紧急隔离成为唯一可靠方案:将8080端口从公网撤下,限制为内网可信IP访问。对于必须远程管理的场景,VPN或跳板机是底线要求。
GitHub仓库的更新动态需要被纳入监控清单。这个漏洞的修复成本极低(一行配置),但响应速度决定了几千个数据库的命运。
Dgraph作为开源图数据库,被用于知识图谱、社交网络分析、推荐系统等场景。这些企业往往数据规模大、业务耦合深,一旦核心数据库被篡改,恢复成本远超技术层面——用户信任、合规审计、业务连续性都会连锁崩塌。
研究人员选择公开披露而非私下协调,可能是因为漏洞的利用门槛过低、暴露面过广,沉默成本高于公开风险。这种判断本身也说明问题的紧迫性。
一个命令的遗漏,让"银河护卫队"变成了敞开大门的仓库。现在的问题是:你的Dgraph管理端口,还在公网上挂着吗?
热门跟贴