webonyx/graphql-php
PHP implementation of the GraphQL specification based on the reference implementation in JavaScript
Activity
- Latest release
- 1mo ago
- Total releases
- 201
- Cadence
- ~4 days
- Last 12 months
- 36
Reach
- Stars
- 4.7k
Details
- License
- MIT
- First release
- Aug 10, 2015
| Version | Released | |
|---|---|---|
v15.37.2
patch
| ||
v15.37.1
patch
| ||
v15.37.0
minor
| ||
v15.36.1
patch
| ||
v15.36.0
minor
| ||
v15.35.0
minor
| ||
v15.34.1
patch
| ||
v15.34.0
minor
| ||
v15.33.1
patch
| ||
v15.33.0
minor
| ||
v15.32.3
patch
| ||
v15.32.2
patch
1 CVE
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.32.1
patch
2 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.32.0
minor
2 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.31.5
patch
2 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.31.4
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.31.3
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.31.2
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.31.1
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.31.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.30.2
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.30.1
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.30.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.29.4
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.29.3
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.29.2
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.29.1
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.29.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.28.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.27.2
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.27.1
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.27.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.26.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.25.2
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.25.1
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.25.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.24.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.23.1
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.23.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.22.4
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.22.3
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.22.2
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.22.1
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.22.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.21.3
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.21.2
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.21.1
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.21.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.20.1
patch
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
| ||
v15.20.0
minor
3 CVEs
GHSA-r7cg-qjjm-xhqq
May 05, 2026
webonyx/graphql-php has unbounded recursion in parser that causes stack overflow on crafted nested input
8.2
/ 10
High
Network
Low
None
None
Unchanged
None
Low
High
Summary
Affected Component
SeverityHIGH (8.2) -- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H Integrity is Low because the entire PHP process (FPM worker, CLI process, Swoole worker, RoadRunner worker, etc.) is terminated by SIGSEGV. Every concurrent request handled by the same process is dropped along with the attacker's request, with no error message, no log entry, and no recovery path beyond restart. The 74 KB minimum crashing payload sits well below any common HTTP body size limit, and the failure mode is the worst possible: not catchable, not observable, no diagnostics. Description
There is no When the C stack is exhausted by graphql-php's recursive parser, PHP segfaults. The PHP 8.3 runtime ships with This finding has been tested against the latest stable release Root Cause
There is no field tracking recursion depth. Every recursive parse method calls itself without bound. PHP function call frames are small (~256 bytes each), but the cumulative depth needed by recursive descent for a GraphQL value literal exhausts an 8 MB stack at approximately 26,000-37,000 levels of input nesting (depending on the call chain depth per AST level). Proof of Concept
Crash thresholds measured on
|