Description
FrankenPHP is a modern application server for PHP. Prior to 1.11.2, FrankenPHP’s CGI path splitting logic improperly handles Unicode characters during case conversion. The logic computes the split index (for finding .php) on a lowercased copy of the request path but applies that byte index to the original path. Because strings.ToLower() in Go can increase the byte length of certain UTF-8 characters (e.g., Ⱥ expands when lowercased), the computed index may not align with the correct position in the original string. This results in an incorrect SCRIPT_NAME and SCRIPT_FILENAME, potentially causing FrankenPHP to execute a file other than the one intended by the URI. This vulnerability is fixed in 1.11.2.
Published: 2026-02-12
Score: 8.9 High
EPSS: < 1% Very Low
KEV: No
Impact: Arbitrary File Execution
Action: Patch Immediately
AI Analysis

Impact

FrankenPHP improperly handles Unicode characters during case conversion in its CGI path splitting logic. It calculates the index for the .php marker on a lowercased copy of the request path, but uses that byte offset against the original string. Because Go’s ToLower can increase the byte length of certain UTF‑8 characters, the computed index may be misaligned, causing an incorrect SCRIPT_NAME and SCRIPT_FILENAME. This misinterpretation allows an attacker to trigger the execution of a file other than the one referenced by the request URI, effectively enabling arbitrary code execution within the server context.

Affected Systems

The vulnerability affects the PHP FrankenPHP application server published by php:frankenphp. All releases prior to version 1.11.2 are susceptible; the issue was fixed in the 1.11.2 release. No specific sub‑versions are listed, so any installation of FrankenPHP below 1.11.2 should be considered at risk.

Risk and Exploitability

The CVSS score of 8.9 indicates high severity. The EPSS score is less than 1 percent, implying that, while exploitable, the probability of widespread exploitation is currently low. FrankenPHP is not listed in the CISA KEV catalog, but the flaw permits remote code execution over an HTTP interface, making it a high‑impact flaw if exploited. Exploitation would require the ability to send crafted HTTP requests to the server, which is typically available to any network user who can reach the application.

Generated by OpenCVE AI on April 17, 2026 at 20:01 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade FrankenPHP to version 1.11.2 or later.
  • If an immediate upgrade is not possible, limit the exposure of the CGI handler to trusted networks and enforce strict path validation or disable the CGI mode until a patch is available.
  • Implement request monitoring to detect unusual UTF‑8 characters in URI paths and alert on potential misrouting attempts.

Generated by OpenCVE AI on April 17, 2026 at 20:01 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-g966-83w7-6w38 FrankenPHP's unicode case-folding length expansion causes incorrect split_path index (SCRIPT_NAME/PATH_INFO confusion) in FrankenPHP
History

Fri, 20 Feb 2026 18:30:00 +0000

Type Values Removed Values Added
CPEs cpe:2.3:a:php:frankenphp:*:*:*:*:*:*:*:*
Metrics cvssV3_1

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


Fri, 13 Feb 2026 21:45:00 +0000

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

Thu, 12 Feb 2026 20:15:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Thu, 12 Feb 2026 19:30:00 +0000

Type Values Removed Values Added
Description FrankenPHP is a modern application server for PHP. Prior to 1.11.2, FrankenPHP’s CGI path splitting logic improperly handles Unicode characters during case conversion. The logic computes the split index (for finding .php) on a lowercased copy of the request path but applies that byte index to the original path. Because strings.ToLower() in Go can increase the byte length of certain UTF-8 characters (e.g., Ⱥ expands when lowercased), the computed index may not align with the correct position in the original string. This results in an incorrect SCRIPT_NAME and SCRIPT_FILENAME, potentially causing FrankenPHP to execute a file other than the one intended by the URI. This vulnerability is fixed in 1.11.2.
Title FrankenPHP affected by Path Confusion via Unicode casing in CGI path splitting allows execution of arbitrary files
Weaknesses CWE-180
References
Metrics cvssV4_0

{'score': 8.9, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-02-12T20:04:07.435Z

Reserved: 2026-01-27T19:35:20.529Z

Link: CVE-2026-24895

cve-icon Vulnrichment

Updated: 2026-02-12T20:03:56.900Z

cve-icon NVD

Status : Analyzed

Published: 2026-02-12T20:16:10.170

Modified: 2026-02-20T18:30:00.857

Link: CVE-2026-24895

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-04-17T20:15:26Z

Weaknesses