When GRAPHQL_INTROSPECTION=false is configured, Directus correctly blocks standard GraphQL introspection queries (__schema, __type). However, the server_specs_graphql resolver on the /graphql/system endpoint returns an equivalent SDL representation of the schema and was not subject to the same restriction. This allowed the introspection control to be bypassed, exposing schema structure (collection names, field names, types, and relationships) to unauthenticated users at the public permission level, and to authenticated users at their permitted permission level.
Administrators who set GRAPHQL_INTROSPECTION=false to hide schema structure from clients would have had a false sense of security, as equivalent schema information remained accessible via the SDL endpoint without authentication.
This vulnerability was discovered and reported by bugbunny.ai.
{
"github_reviewed": true,
"github_reviewed_at": "2026-04-04T06:10:27Z",
"severity": "MODERATE",
"nvd_published_at": null,
"cwe_ids": [
"CWE-200"
]
}