Description
FrankenPHP is a modern application server for PHP. Prior to 1.12.5, FrankenPHP worker mode can retain PHP session state between requests when the session extension is loaded as a shared module and is unavailable through HAVE_PHP_SESSION at compile time. In this build configuration, frankenphp_reset_session_state() is compiled out, PS(id) can survive a request boundary, and a subsequent session_start() can ignore the new request's cookie because an identifier is already present. Under concurrent requests, session_id() can therefore return another client's identifier or a stale identifier from a previous request on the same worker thread, causing cross-user session exposure, possible session hijacking, and intermittent logout behavior. Builds with the session extension statically linked, including the official static binaries and Docker images, are not affected. This issue is fixed in version 1.12.5.
Published: 2026-10-13
Score: 7.7 High
EPSS: n/a
KEV: No
Impact: Session Hijacking
Action: Immediate Patch
AI Analysis

Impact

FrankenPHP, a modern PHP application server, can maintain PHP session state across request boundaries when the session extension is loaded as a shared module and the binary is built without HAVE_PHP_SESSION. Because frankenphp_reset_session_state() is omitted in this configuration, session identifiers can persist, allowing a subsequent session_start() to honor an old or another client's cookie. This behavior results in the session_id() function returning a stale or unrelated identifier under concurrent requests. The consequence is cross‑user session exposure, potential session hijacking, and unpredictable logout behavior.

Affected Systems

The vulnerability affects FrankenPHP versions prior to 1.12.5 running in worker mode with the session extension configured as a shared module. Builds that include the session extension statically, such as the official static binaries and Docker images provided by the developers, are not impacted. Users deploying older worker–mode builds should verify their configuration and consider replacing them with a binary that includes the fix.

Risk and Exploitability

With a CVSS score of 7.7 and no EPSS data, the vulnerability represents a moderate‑to‑high risk, and it is not yet listed in the CISA KEV catalog. The likely attack vector is web traffic delivered to the server, and an attacker who can generate concurrent requests to a shared worker thread could capture a valid PHP session identifier from another client. The session fixation condition arises only when the session extension is a shared module, so the exploit requires that configuration. Once a stale ID is obtained, it can be used to impersonate the victim session. There is no requirement for local access or privileged code execution, but the impact on confidentiality and availability is significant for sessions that carry authenticated state.

Generated by OpenCVE AI on October 13, 2026 at 18:25 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to FrankenPHP 1.12.5 or later to apply the session reset fix.
  • Use static binaries or Docker images that include statically linked session extensions if an upgrade cannot be applied immediately.
  • Disable or avoid the worker‑mode configuration when using shared session extensions until the patch is applied.

Generated by OpenCVE AI on October 13, 2026 at 18:25 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 13 Oct 2026 18:15:00 +0000

Type Values Removed Values Added
First Time appeared Php
Php frankenphp
Vendors & Products Php
Php frankenphp

Tue, 13 Oct 2026 16:45:00 +0000

Type Values Removed Values Added
Description FrankenPHP is a modern application server for PHP. Prior to 1.12.5, FrankenPHP worker mode can retain PHP session state between requests when the session extension is loaded as a shared module and is unavailable through HAVE_PHP_SESSION at compile time. In this build configuration, frankenphp_reset_session_state() is compiled out, PS(id) can survive a request boundary, and a subsequent session_start() can ignore the new request's cookie because an identifier is already present. Under concurrent requests, session_id() can therefore return another client's identifier or a stale identifier from a previous request on the same worker thread, causing cross-user session exposure, possible session hijacking, and intermittent logout behavior. Builds with the session extension statically linked, including the official static binaries and Docker images, are not affected. This issue is fixed in version 1.12.5.
Title FrankenPHP: Cross-request PHP session ID leak in worker mode when the session extension is a shared module
Weaknesses CWE-362
CWE-488
References
Metrics cvssV3_1

{'score': 7.7, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:L'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-13T16:20:53.439Z

Reserved: 2026-08-28T22:00:43.514Z

Link: CVE-2026-82416

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-13T17:17:47.183

Modified: 2026-10-13T17:17:47.183

Link: CVE-2026-82416

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-13T18:30:07Z

Weaknesses
  • CWE-362

    Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

  • CWE-488

    Exposure of Data Element to Wrong Session