GIVE YOUR AGENT THE EVIDENCE

Set up in your agent.

One prompt to get started. Paste it into your coding agent to connect cve.new through MCP and bring vulnerability context into your workflow.

Your agent needs remote MCP support and access to https://cve.new/mcp.

Read the setup guide

GIVE YOUR AGENT THE EVIDENCE

Investigate in your agent.

Turn this advisory into a focused investigation. Ask your agent to check your project’s versions, explain the evidence, and suggest a compatible fix.

Your agent needs remote MCP support and access to https://cve.new/mcp.

Read the setup guide

GHSA-qrch-52m5-vv85high7.5

Flight vulnerable to sensitive information disclosure via default error handler

Check your stack

The advisory, in context

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.

Affected packages

Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.

Ecosystem versions

Earlier releases before 3.18.1

Fixed in 3.18.1

67 explicitly affected versions

v1.0, v1.1, v1.1.10, v1.1.5, v1.2, v1.2.13, v1.2.14, v1.2.15, v1.2.17, v1.2.18, v1.2.19, v1.2.20, v1.2.21, v1.2.22, v1.3.0, v1.3.1, v1.3.2, v1.3.3, v1.3.4, v1.3.5, v1.3.7, v1.3.8, v1.3.9, v2.0.0, v2.0.1, v3.0.0, v3.0.1, v3.0.2, v3.1.0, v3.1.1, v3.10.0, v3.10.1, v3.11.0, v3.11.1, v3.12.0, v3.13.0, v3.13.1, v3.14.0, v3.15.0, v3.15.1, v3.15.2, v3.15.3, v3.16.0, v3.16.1, v3.17.0, v3.17.1, v3.17.2, v3.17.3, v3.17.4, v3.18.0, v3.2.0, v3.3.0, v3.4.0, v3.4.1, v3.4.2, v3.5.0, v3.5.2, v3.5.3, v3.6.0, v3.6.1, v3.6.2, v3.7.0, v3.7.1, v3.7.2, v3.8.0, v3.8.1, v3.9.0

View affected-version evidence
{
  "ranges": [
    {
      "events": [
        {
          "introduced": "0"
        },
        {
          "fixed": "3.18.1"
        }
      ],
      "type": "ECOSYSTEM"
    }
  ],
  "versions": [
    "v1.0",
    "v1.1",
    "v1.1.10",
    "v1.1.5",
    "v1.2",
    "v1.2.13",
    "v1.2.14",
    "v1.2.15",
    "v1.2.17",
    "v1.2.18",
    "v1.2.19",
    "v1.2.20",
    "v1.2.21",
    "v1.2.22",
    "v1.3.0",
    "v1.3.1",
    "v1.3.2",
    "v1.3.3",
    "v1.3.4",
    "v1.3.5",
    "v1.3.7",
    "v1.3.8",
    "v1.3.9",
    "v2.0.0",
    "v2.0.1",
    "v3.0.0",
    "v3.0.1",
    "v3.0.2",
    "v3.1.0",
    "v3.1.1",
    "v3.10.0",
    "v3.10.1",
    "v3.11.0",
    "v3.11.1",
    "v3.12.0",
    "v3.13.0",
    "v3.13.1",
    "v3.14.0",
    "v3.15.0",
    "v3.15.1",
    "v3.15.2",
    "v3.15.3",
    "v3.16.0",
    "v3.16.1",
    "v3.17.0",
    "v3.17.1",
    "v3.17.2",
    "v3.17.3",
    "v3.17.4",
    "v3.18.0",
    "v3.2.0",
    "v3.3.0",
    "v3.4.0",
    "v3.4.1",
    "v3.4.2",
    "v3.5.0",
    "v3.5.2",
    "v3.5.3",
    "v3.6.0",
    "v3.6.1",
    "v3.6.2",
    "v3.7.0",
    "v3.7.1",
    "v3.7.2",
    "v3.8.0",
    "v3.8.1",
    "v3.9.0"
  ]
}

References