Read the docs
TI-2025-43742 Aliases GHSA-hmfr-rx46-4jx2

GraphQL Armor Max-Depth Plugin Bypass via Introspection Query Obfuscation

Priority LOW 38CWE-400Published · Updated

Key facts

Attack vector
—
Privileges required
—
User interaction
—
Attack complexity
—
Impact type
Denial of service
Confidentiality · integrity · availability
—
Fix status
Fixed

No CVSS vector from any source. Fix status from GitHub. Impact type from CWE-400.

Summary

### Summary A query depth restriction using the `max-depth` property can be bypassed if `ignoreIntrospection` is enabled (which is the default configuration) by naming your query/fragment `__schema`. ### Details At the start of the `countDepth` function, we have the following check for the `ignoreIntrospection` option: ```typescript if (this.config.ignoreIntrospection && 'name' in node && node.name?.value === '__schema') { return 0; } ``` However, the `node` can be one of: `FieldNode`, `FragmentDefinitionNode`, `InlineFragmentNode`, `OperationDefinitionNode`, `FragmentSpreadNode`. For example, consider sending the following query: ```graphql query hello { books { title } } ``` This would create an `OperationDefinitionNode` where `node.name.value == 'hello'` The proper way to handle this is to check explicitly for the `__schema` field, which corresponds to a `FieldNode`. The fix is ```typescript if ( this.config.ignoreIntrospection && 'name' in node && node.name?.value === '__schema' && node.kind === Kind.FIELD ) { return 0; } ``` This ensures that the node is explicitly a `FieldNode`. ### PoC Max depth: `6` ```graphql query { books { author { books { author { ...__schema } } } } } fragment __schema on Author { books { title } } ``` ### Impact This issue affects applications using the GraphQL Armor Depth Limit plugin with `ignoreIntrospection` enabled. ### Fix This is fixed in [PR#823](https://github.com/Escape-Technologies/graphql-armor/pull/823)

Why it matters now

Fix Fixed @escape.tech/graphql-armor-max-depth (npm): 2.4.2

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
—@escape.tech/graphql-armor-max-depth (npm)before 2.4.22.4.2Patch availableGHSA-hmfr-rx46-4jx2
  • @escape.tech/graphql-armor-max-depth (npm) Vendor— Affected before 2.4.2 Fixed in 2.4.2 Patch available GHSA-hmfr-rx46-4jx2

Remediation

  • Fix · GHSA-hmfr-rx46-4jx2 @escape.tech/graphql-armor-max-depth (npm) Fixed in 2.4.2 Advisory →

Timeline

  1. 2026-10-03 Threatist record created from GHSA-hmfr-rx46-4jx2

References

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences