Every CVE Search/ Get API key

CVE-2023-50730

Grackle has StackOverflowError in GraphQL query processing

7.5 HighFix available

Grackle is a GraphQL server written in functional Scala, built on the Typelevel stack. The GraphQL specification requires that GraphQL fragments must not form cycles, either directly or indirectly. Prior to Grackle version 0.18.0, that requirement wasn't checked, and queries with cyclic fragments would have been accepted for type checking and compilation. The attempted compilation of such fragments would result in a JVM StackOverflowError being thrown. Some knowledge of an applications GraphQL schema would be required to construct such a query, however no knowledge of any application-specific performance or other behavioural characteristics would be needed.

Grackle uses the cats-parse library for parsing GraphQL queries. Prior to version 0.18.0, Grackle made use of the cats-parse recursive operator. However, recursive is not currently stack safe. recursive was used in three places in the parser: nested selection sets, nested input values (lists and objects), and nested list type declarations. Consequently, queries with deeply nested selection sets, input values or list types could be constructed which exploited this, causing a JVM StackOverflowException to be thrown during parsing. Because this happens very early in query processing, no specific knowledge of an applications GraphQL schema would be required to construct such a query.

The possibility of small queries resulting in stack overflow is a potential denial of service vulnerability. This potentially affects all applications using Grackle which have untrusted users. Both stack overflow issues have been resolved in the v0.18.0 release of Grackle. As a workaround, users could interpose a sanitizing layer in between untrusted input and Grackle query processing.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
High

Exploit likelihood

0.83%Up 0.8 points since Dec 23, 2023
90%50%10%1%

What each source reports

CVE List Score used 7.5

Grackle has StackOverflowError in GraphQL query processing

Grackle is a GraphQL server written in functional Scala, built on the Typelevel stack. The GraphQL specification requires that GraphQL fragments must not form cycles, either directly or indirectly. Prior to Grackle version 0.18.0, that requirement wasn't checked, and queries with cyclic fragments would have been accepted for type checking and compilation. The attempted compilation of such fragments would result in a JVM StackOverflowError being thrown. Some knowledge of an applications GraphQL schema would be required to construct such a query, however no knowledge of any application-specific performance or other behavioural characteristics would be needed.

Grackle uses the cats-parse library for parsing GraphQL queries. Prior to version 0.18.0, Grackle made use of the cats-parse recursive operator. However, recursive is not currently stack safe. recursive was used in three places in the parser: nested selection sets, nested input values (lists and objects), and nested list type declarations. Consequently, queries with deeply nested selection sets, input values or list types could be constructed which exploited this, causing a JVM StackOverflowException to be thrown during parsing. Because this happens very early in query processing, no specific knowledge of an applications GraphQL schema would be required to construct such a query.

The possibility of small queries resulting in stack overflow is a potential denial of service vulnerability. This potentially affects all applications using Grackle which have untrusted users. Both stack overflow issues have been resolved in the v0.18.0 release of Grackle. As a workaround, users could interpose a sanitizing layer in between untrusted input and Grackle query processing.

Record
CVE-2023-50730
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400, CWE-770
Updated
2026-11-02
EUVDEUVD-2023-3206 7.5

Grackle is a GraphQL server written in functional Scala, built on the Typelevel stack. The GraphQL specification requires that GraphQL fragments must not form cycles, either directly or indirectly. Prior to Grackle version 0.18.0, that requirement wasn't checked, and queries with cyclic fragments would have been accepted for type checking and compilation. The attempted compilation of such fragments would result in a JVM StackOverflowError being thrown. Some knowledge of an applications GraphQL schema would be required to construct such a query, however no knowledge of any application-specific performance or other behavioural characteristics would be needed.

Grackle uses the cats-parse library for parsing GraphQL queries. Prior to version 0.18.0, Grackle made use of the cats-parse recursive operator. However, recursive is not currently stack safe. recursive was used in three places in the parser: nested selection sets, nested input values (lists and objects), and nested list type declarations. Consequently, queries with deeply nested selection sets, input values or list types could be constructed which exploited this, causing a JVM StackOverflowException to be thrown during parsing. Because this happens very early in query processing, no specific knowledge of an applications GraphQL schema would be required to construct such a query.

The possibility of small queries resulting in stack overflow is a potential denial of service vulnerability. This potentially affects all applications using Grackle which have untrusted users. Both stack overflow issues have been resolved in the v0.18.0 release of Grackle. As a workaround, users could interpose a sanitizing layer in between untrusted input and Grackle query processing.

Record
EUVD-2023-3206
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-03
GitHub AdvisoriesGHSA-g56x-7j6w-g8r8 7.5

Grackle has StackOverflowError in GraphQL query processing

Impact

Prior to this fix, the GraphQL query parsing was vulnerable to StackOverflowErrors. The possibility of small queries resulting in stack overflow is a potential denial of service vulnerability.

This potentially affects all applications using Grackle which have untrusted users.

[!CAUTION]
No specific knowledge of an application's GraphQL schema would be required to construct a pathological query.

Patches

The stack overflow issues have been resolved in the v0.18.0 release of Grackle.

Workarounds

Users could interpose a sanitizing layer in between untrusted input and Grackle query processing.

Record
GHSA-g56x-7j6w-g8r8
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400
Updated
2026-11-02
NVD 7.5

Grackle is a GraphQL server written in functional Scala, built on the Typelevel stack. The GraphQL specification requires that GraphQL fragments must not form cycles, either directly or indirectly. Prior to Grackle version 0.18.0, that requirement wasn't checked, and queries with cyclic fragments would have been accepted for type checking and compilation. The attempted compilation of such fragments would result in a JVM StackOverflowError being thrown. Some knowledge of an applications GraphQL schema would be required to construct such a query, however no knowledge of any application-specific performance or other behavioural characteristics would be needed.

Grackle uses the cats-parse library for parsing GraphQL queries. Prior to version 0.18.0, Grackle made use of the cats-parse recursive operator. However, recursive is not currently stack safe. recursive was used in three places in the parser: nested selection sets, nested input values (lists and objects), and nested list type declarations. Consequently, queries with deeply nested selection sets, input values or list types could be constructed which exploited this, causing a JVM StackOverflowException to be thrown during parsing. Because this happens very early in query processing, no specific knowledge of an applications GraphQL schema would be required to construct such a query.

The possibility of small queries resulting in stack overflow is a potential denial of service vulnerability. This potentially affects all applications using Grackle which have untrusted users. Both stack overflow issues have been resolved in the v0.18.0 release of Grackle. As a workaround, users could interpose a sanitizing layer in between untrusted input and Grackle query processing.

Record
CVE-2023-50730
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400, CWE-770
Updated
2026-11-02
OSV 7.5

Grackle has StackOverflowError in GraphQL query processing

Grackle is a GraphQL server written in functional Scala, built on the Typelevel stack. The GraphQL specification requires that GraphQL fragments must not form cycles, either directly or indirectly. Prior to Grackle version 0.18.0, that requirement wasn't checked, and queries with cyclic fragments would have been accepted for type checking and compilation. The attempted compilation of such fragments would result in a JVM StackOverflowError being thrown. Some knowledge of an applications GraphQL schema would be required to construct such a query, however no knowledge of any application-specific performance or other behavioural characteristics would be needed.

Grackle uses the cats-parse library for parsing GraphQL queries. Prior to version 0.18.0, Grackle made use of the cats-parse recursive operator. However, recursive is not currently stack safe. recursive was used in three places in the parser: nested selection sets, nested input values (lists and objects), and nested list type declarations. Consequently, queries with deeply nested selection sets, input values or list types could be constructed which exploited this, causing a JVM StackOverflowException to be thrown during parsing. Because this happens very early in query processing, no specific knowledge of an applications GraphQL schema would be required to construct such a query.

The possibility of small queries resulting in stack overflow is a potential denial of service vulnerability. This potentially affects all applications using Grackle which have untrusted users. Both stack overflow issues have been resolved in the v0.18.0 release of Grackle. As a workaround, users could interpose a sanitizing layer in between untrusted input and Grackle query processing.

Record
CVE-2023-50730
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400, CWE-770
Updated
2026-11-02
OSVGHSA-g56x-7j6w-g8r8 7.5

Grackle has StackOverflowError in GraphQL query processing

Impact

Prior to this fix, the GraphQL query parsing was vulnerable to StackOverflowErrors. The possibility of small queries resulting in stack overflow is a potential denial of service vulnerability.

This potentially affects all applications using Grackle which have untrusted users.

[!CAUTION]
No specific knowledge of an application's GraphQL schema would be required to construct a pathological query.

Patches

The stack overflow issues have been resolved in the v0.18.0 release of Grackle.

Workarounds

Users could interpose a sanitizing layer in between untrusted input and Grackle query processing.

Record
GHSA-g56x-7j6w-g8r8
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
org.typelevel:grackle-core_2.13
Maven
before 0.18.0
0.18.0
org.typelevel:grackle-core_3
Maven
before 0.18.0
0.18.0
org.typelevel:grackle-core_sjs1_2.13
Maven
before 0.18.0
0.18.0
org.typelevel:grackle-core_sjs1_3
Maven
before 0.18.0
0.18.0
org.typelevel:grackle-core_native0.4_2.13
Maven
before 0.18.0
0.18.0
org.typelevel:grackle-core_native0.4_3
Maven
before 0.18.0
0.18.0
edu.gemini:gsp-graphql-core_2.13
Maven
through 0.14.0 None known
edu.gemini:gsp-graphql-core_3
Maven
through 0.14.0 None known
edu.gemini:gsp-graphql-core_sjs1_2.13
Maven
through 0.14.0 None known
edu.gemini:gsp-graphql-core_sjs1_3
Maven
through 0.14.0 None known
Show 14 moreShow less
Affected packages
PackageAffectedFixed
edu.gemini:gsp-graphql-core_native0.4_2.13
Maven
through 0.14.0 None known
edu.gemini:gsp-graphql-core_native0.4_3
Maven
through 0.14.0 None known
org.typelevel:grackle-core_2.13
Maven
before 0.18.0, plus listed versions
0.15.00.16.00.16.10.17.00.17.10.17.2
0.18.0
org.typelevel:grackle-core_3
Maven
before 0.18.0, plus listed versions
0.15.00.16.00.16.10.17.00.17.10.17.2
0.18.0
org.typelevel:grackle-core_sjs1_2.13
Maven
before 0.18.0, plus listed versions
0.15.00.16.00.16.10.17.00.17.10.17.2
0.18.0
org.typelevel:grackle-core_sjs1_3
Maven
before 0.18.0, plus listed versions
0.15.00.16.00.16.10.17.00.17.10.17.2
0.18.0
org.typelevel:grackle-core_native0.4_2.13
Maven
before 0.18.0, plus listed versions
0.15.00.16.00.16.10.17.00.17.10.17.2
0.18.0
org.typelevel:grackle-core_native0.4_3
Maven
before 0.18.0, plus listed versions
0.15.00.16.00.16.10.17.00.17.10.17.2
0.18.0
edu.gemini:gsp-graphql-core_2.13
Maven
through 0.14.0, plus listed versions
0.0.10.0.100.0.110.0.120.0.13
Show 45 moreShow less
0.0.140.0.150.0.160.0.170.0.180.0.190.0.20.0.210.0.220.0.230.0.240.0.250.0.260.0.270.0.280.0.290.0.30.0.300.0.310.0.320.0.330.0.340.0.350.0.360.0.370.0.380.0.390.0.40.0.400.0.410.0.420.0.430.0.440.0.450.0.470.0.480.0.490.0.50.0.500.0.60.0.70.0.80.0.90.1.00.1.1
None known
edu.gemini:gsp-graphql-core_3
Maven
through 0.14.0, plus listed versions
0.0.470.0.480.0.490.0.500.1.0
Show 39 moreShow less
0.1.10.1.100.1.110.1.120.1.130.1.140.1.150.1.160.1.20.1.30.1.40.1.50.1.60.1.70.1.80.1.90.10.00.10.10.10.20.10.30.11.00.12.00.13.00.2.00.2.10.3.00.3.10.3.20.4.00.5.00.5.10.5.20.6.00.7.00.8.00.8.10.8.20.9.00.9.1
None known
edu.gemini:gsp-graphql-core_sjs1_2.13
Maven
through 0.14.0, plus listed versions
0.13.0
None known
edu.gemini:gsp-graphql-core_sjs1_3
Maven
through 0.14.0, plus listed versions
0.13.0
None known
edu.gemini:gsp-graphql-core_native0.4_2.13
Maven
through 0.14.0, plus listed versions
0.13.0
None known
edu.gemini:gsp-graphql-core_native0.4_3
Maven
through 0.14.0, plus listed versions
0.13.0
None known

History

History
RecordedChangedSources
aliasesEUVD
first indexedCVE List, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2023-50730 is a high vulnerability (CVSS 7.5) in Typelevel Grackle, published December 18, 2023. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.83%, the 57th percentile. Fixed in org.typelevel:grackle-core_2.13 0.18.0.

References

This page doesn't list everything

Left out here: 38 versions. The JSON record has them.

MoveEnter Open