CVE-2026-42552
Flight: Sensitive information disclosure via default error handler in flightphp/core
Flight is an extensible micro-framework for PHP. Prior to 3.18.1, the default error handler Engine::_error() writes the full exception message, exception code, and stack trace (including absolute filesystem paths) directly into the HTTP 500 response, with no debug gating. Production deployments leak internal paths, any secret interpolated into an exception message, and full module structure — giving attackers primitives for chaining other weaknesses (LFI, path traversal). This vulnerability is fixed in 3.18.1.
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
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
7.5
Flight: Sensitive information disclosure via default error handler in flightphp/core
Flight is an extensible micro-framework for PHP. Prior to 3.18.1, the default error handler Engine::_error() writes the full exception message, exception code, and stack trace (including absolute filesystem paths) directly into the HTTP 500 response, with no debug gating. Production deployments leak internal paths, any secret interpolated into an exception message, and full module structure — giving attackers primitives for chaining other weaknesses (LFI, path traversal). This vulnerability is fixed in 3.18.1.
- Record
CVE-2026-42552- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-209
- Updated
- 2026-11-02
EUVDEUVD-2026-30151
7.5
Flight is an extensible micro-framework for PHP. Prior to 3.18.1, the default error handler Engine::_error() writes the full exception message, exception code, and stack trace (including absolute filesystem paths) directly into the HTTP 500 response, with no debug gating. Production deployments leak internal paths, any secret interpolated into an exception message, and full module structure — giving attackers primitives for chaining other weaknesses (LFI, path traversal). This vulnerability is fixed in 3.18.1.
- Record
EUVD-2026-30151- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-qrch-52m5-vv85
7.5
Flight vulnerable to sensitive information disclosure via default error handler
Summary
The default error handler Engine::_error() writes the full exception message, exception code, and stack trace (including absolute filesystem paths) directly into the HTTP 500 response, with no debug gating. Production deployments leak internal paths, any secret interpolated into an exception message, and full module structure — giving attackers primitives for chaining other weaknesses (LFI, path traversal).
Affected code
flight/Engine.php (≈ lines 678-704):
public function _error(Throwable $e): void
{
...
$msg = sprintf(<<<'HTML'
<h1>500 Internal Server Error</h1>
<h3>%s (%s)</h3>
<pre>%s</pre>
HTML,
$e->getMessage(),
$e->getCode(),
$e->getTraceAsString()
);
$this->response()->cache(0)->clearBody()->status(500)->write($msg)->send();
}
No flight.debug check, no environment gating.
Proof of concept
Any uncaught exception — including those auto-raised from handleError() — returns:
HTTP/1.1 500 Internal Server Error
<h1>500 Internal Server Error</h1>
<h3>secret path /var/www/config/db.yml; token=LEAKED123 (0)</h3>
<pre>#0 [internal function]: {closure}()
#1 /home/user/app/vendor/flightphp/core/flight/core/Dispatcher.php(361)...
#2 /home/user/app/vendor/flightphp/core/flight/Engine.php(...)
...
</pre>
Reproduced against the live PoC app at /poc5/error.
Impact
- Disclosure of absolute filesystem paths (primes weaponization of LFI / path-traversal vulnerabilities in the same application).
- Disclosure of secrets (DB credentials, API tokens) when exceptions are constructed with interpolated configuration values.
- Enumeration of installed vendor packages and internal application structure.
Patch (fixed in 3.18.1, commit b8dd23a)
A new flight.debug setting (default false) gates the verbose output. In production the handler now emits only <h1>500 Internal Server Error</h1>. Developers can set flight.debug = true in local environments to restore the full trace output.
Credit
Discovered by @Rootingg.
- Record
GHSA-qrch-52m5-vv85- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-209
- Updated
- 2026-11-02
NVD
7.5
Flight is an extensible micro-framework for PHP. Prior to 3.18.1, the default error handler Engine::_error() writes the full exception message, exception code, and stack trace (including absolute filesystem paths) directly into the HTTP 500 response, with no debug gating. Production deployments leak internal paths, any secret interpolated into an exception message, and full module structure — giving attackers primitives for chaining other weaknesses (LFI, path traversal). This vulnerability is fixed in 3.18.1.
- Record
CVE-2026-42552- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-209
- Updated
- 2026-11-02
OSV
7.5
Flight: Sensitive information disclosure via default error handler in flightphp/core
Flight is an extensible micro-framework for PHP. Prior to 3.18.1, the default error handler Engine::_error() writes the full exception message, exception code, and stack trace (including absolute filesystem paths) directly into the HTTP 500 response, with no debug gating. Production deployments leak internal paths, any secret interpolated into an exception message, and full module structure — giving attackers primitives for chaining other weaknesses (LFI, path traversal). This vulnerability is fixed in 3.18.1.
- Record
CVE-2026-42552- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-209
- Updated
- 2026-11-02
OSVGHSA-qrch-52m5-vv85
7.5
Flight vulnerable to sensitive information disclosure via default error handler
Summary
The default error handler Engine::_error() writes the full exception message, exception code, and stack trace (including absolute filesystem paths) directly into the HTTP 500 response, with no debug gating. Production deployments leak internal paths, any secret interpolated into an exception message, and full module structure — giving attackers primitives for chaining other weaknesses (LFI, path traversal).
Affected code
flight/Engine.php (≈ lines 678-704):
public function _error(Throwable $e): void
{
...
$msg = sprintf(<<<'HTML'
<h1>500 Internal Server Error</h1>
<h3>%s (%s)</h3>
<pre>%s</pre>
HTML,
$e->getMessage(),
$e->getCode(),
$e->getTraceAsString()
);
$this->response()->cache(0)->clearBody()->status(500)->write($msg)->send();
}
No flight.debug check, no environment gating.
Proof of concept
Any uncaught exception — including those auto-raised from handleError() — returns:
HTTP/1.1 500 Internal Server Error
<h1>500 Internal Server Error</h1>
<h3>secret path /var/www/config/db.yml; token=LEAKED123 (0)</h3>
<pre>#0 [internal function]: {closure}()
#1 /home/user/app/vendor/flightphp/core/flight/core/Dispatcher.php(361)...
#2 /home/user/app/vendor/flightphp/core/flight/Engine.php(...)
...
</pre>
Reproduced against the live PoC app at /poc5/error.
Impact
- Disclosure of absolute filesystem paths (primes weaponization of LFI / path-traversal vulnerabilities in the same application).
- Disclosure of secrets (DB credentials, API tokens) when exceptions are constructed with interpolated configuration values.
- Enumeration of installed vendor packages and internal application structure.
Patch (fixed in 3.18.1, commit b8dd23a)
A new flight.debug setting (default false) gates the verbose output. In production the handler now emits only <h1>500 Internal Server Error</h1>. Developers can set flight.debug = true in local environments to restore the full trace output.
Credit
Discovered by @Rootingg.
- Record
GHSA-qrch-52m5-vv85- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-209
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
flightphp/corePackagist |
before 3.18.1 | 3.18.1 |
flightphp/corePackagist |
before 3.18.1, plus listed versions v1.0v1.1v1.1.10v1.1.5v1.2 Show 45 moreShow lessv1.2.13v1.2.14v1.2.15v1.2.17v1.2.18v1.2.19v1.2.20v1.2.21v1.2.22v1.3.0v1.3.1v1.3.2v1.3.3v1.3.4v1.3.5v1.3.7v1.3.8v1.3.9v2.0.0v2.0.1v3.0.0v3.0.1v3.0.2v3.1.0v3.1.1v3.10.0v3.10.1v3.11.0v3.11.1v3.12.0v3.13.0v3.13.1v3.14.0v3.15.0v3.15.1v3.15.2v3.15.3v3.16.0v3.16.1v3.17.0v3.17.1v3.17.2v3.17.3v3.17.4v3.18.0 |
3.18.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-42552 is a high vulnerability (CVSS 7.5) in Flightphp Core, published May 6, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.34%, the 27th percentile. Fixed in flightphp/core 3.18.1.
References
github.com/flightphp/core/security/advisories/GHSA-qrch-52m5-vv85
github.com/flightphp/core/commit/b8dd23aaa828cb289fa3c84e75b2a3717cab50b0
github.com/flightphp/core/releases/tag/v3.18.1
nvd.nist.gov/vuln/detail/CVE-2026-42552
github.com/advisories/GHSA-qrch-52m5-vv85
github.com/CVEProject/cvelistV5/tree/main/cves/2026/42xxx/CVE-2026-42552.json
github.com/flightphp/core
Left out here: 17 versions. The JSON record has them.