Findings

Vulnerability · CVE-2026-82416

FrankenPHP: Cross-request PHP session ID leak in worker mode when the session extension is a shared module

Published Oct 15, 2026 · corrected/updated Oct 15, 2026 · evidence confidence high

## Summary In worker mode under concurrency, FrankenPHP can hand a PHP session id from one request to another when PHP's extension is loaded as a shared module instead of being statically linked into the FrankenPHP binary. A request presenting can have resolve to (a different concurrent client's id) or to a stale id from a previous request served by the same worker thread. ## Impact - **Security:** cross-user session exposure / session hijacking in worker mode. Same impact class as CVE-2026-24894. - **Functional:** users are intermittently logged out; their cookie's session is ignored and they receive a foreign or empty session. ## Affected / not affected Exposure is determined by how the extension is linked in the PHP build FrankenPHP is compiled against, **not** by the FrankenPHP release: - **Affected:** any build where the extension is not visible to FrankenPHP at compile time, i.e. loaded as a shared / out-of-tree module ( in an ini). This includes the RPM and Debian packages and other packaged distributions that ship as a shared extension under . - **Not affected:** builds where is statically compiled into the PHP that FrankenPHP links against, such as the official static binaries and Docker images. There, the reset code below is compiled in and clears the id every request. The C session-reset code is unchanged across 1.11.x-1.12.x, so this is not a code regression between releases. A "1.12.2 works / 1.12.3 leaks" observation on the same host reflects two differently-built packages, not a source change. The persistent-zval helpers (#2366) are compiled only under and are unrelated. ## Root cause FrankenPHP resets per-request session state in , which releases so the next re-reads the request cookie. That whole function is guarded by , a macro defined only when the session extension headers are present at FrankenPHP compile time (session statically enabled in the PHP build). When is a shared module, is undefined, the reset is compiled out, and survives the request

Grounded briefings

Catalog interpretations for three audiences. Each brief cites ingested metadata and the original advisories below. They are not independent research and they do not invent exploit steps.

Executive

CVE-2026-82416 is a high public vulnerability record for this product. It is not currently listed in the CISA Known Exploited catalog. Check the linked vendor or CERT advisories for patch status. This summary is a catalog interpretation of the ingested metadata and cites the original advisories below.

System administrator

Identify whether this product is in your estate, then compare installed versions with the affected ranges. Affected packages or ranges on record: github.com/dunglas/frankenphp (<= 1.12.4); github.com. Check the linked vendor or CERT advisories for patch status. Prefer the vendor or distribution advisory linked in Sources before changing production systems. This is a catalog interpretation, not a runbook.

Security analyst

Signals on file: CVSS 7.7, EPSS 0.2%. It is not currently listed in the CISA Known Exploited catalog. Weakness classes: CWE-362, CWE-488. Sources contributing to this record: cve_org, epss, github, gitlab. Public exploit references, when present, are outbound links only and are not proof of active exploitation. This is a catalog interpretation of stored metadata.

Exploitation and remediation

  • Exploitation evidence

    Not listed as known exploited in CISA KEV. Not in CISA KEV or VulnCheck KEV.

  • Patch and remediation

    No required-action text is stored yet. Use the vendor or CERT links in Sources for patch availability.

  • Safe detection guidance

    Compare installed versions with the affected ranges below and verify the advisory from the original publisher. This site stores metadata and outbound links only; it does not ship exploit code or proof-of-concept payloads.

Code

The project this record applies to. Exploit listings stay in References.

Timeline

Detection, updates, and resolution for this record.

  1. Oct 15, 2026 · GitLab Advisory Database

    Detected

    In worker mode under concurrency, FrankenPHP can hand a PHP session id from one request to another when PHP's session extension is loaded as a shared module instead of being statically linked into the FrankenPHP binary. A request presenting Cookie: session=A can have session_id() resolve to B (a different concurrent client's id) or to a stale id from a previous request served by the same worker th

  2. Oct 15, 2026 · GitHub Advisory Database

    Updated

    ## Summary In worker mode under concurrency, FrankenPHP can hand a PHP session id from one request to another when PHP's extension is loaded as a shared module instead of being statically linked into the FrankenPHP binary. A request presenting can have resolve to (a different concurrent client's id) or to a stale id from a previous request served by the same worker thread. ## Impact - **Security:*

Affected

  • go github.com/dunglas/frankenphp<= 1.12.4
  • golang github.comversion unspecified

Sources

  • CVE.orgVulnerability recordCVE-2026-82416

    Official CVE identifier

    cve.org
  • FIRST EPSSExploitation probabilityCVE-2026-82416

    30-day exploitation probability 0.2%

    first.org
  • GitHub Advisory DatabasePackage advisoryGHSA-v3ph-cgqh-r8p5

    FrankenPHP: Cross-request PHP session ID leak in worker mode when the session extension is a shared module

    github.com
  • GitLab Advisory DatabasePackage advisoryCVE-2026-82416

    In worker mode under concurrency, FrankenPHP can hand a PHP session id from one request to another when PHP's session extension is loaded as a shared module instead of being statically linked into the FrankenPHP binary. A request presenting Cookie: session=A can have session_id() resolve to B (a different concurrent client's id) or to a stale id from a previous request served by the same worker th

    advisories.gitlab.com

References