Description
Flysystem is an open source file storage library for PHP. Prior to 3.35.3, the default WhitespacePathNormalizer in src/WhitespacePathNormalizer.php used by Filesystem across adapters calls preg_match with the u modifier and treats both false and 0 as falsy. A path containing malformed UTF-8 causes PCRE to return false, so paths that also contain control characters bypass CorruptedPathDetected::forPath() in normalizePath(). Filesystem::write() can store such names and Filesystem::listContents() can return the raw ANSI escape sequences, allowing hidden or spoofed terminal file listings when an administrator displays them. This issue is fixed in version 3.35.3.
Published: 2026-09-29
Score: 3.5 Low
EPSS: < 1% Very Low
KEV: No
Impact: Spoofed terminal file listings
Action: Apply Patch
AI Analysis

Impact

Flysystem, a PHP file storage library, uses a default WhitespacePathNormalizer that checks for control characters in file paths. A malformed UTF‑8 string causes the PCRE library to return false, allowing the normalizer to skip its CorruptedPathDetected check. As a result, files can be stored with names that contain ANSI escape sequences, and listContents() will return the raw escape codes. Administrators viewing the list may see hidden or spoofed terminal file listings, potentially confusing file management operations or leaking sensitive information. This flaw does not enable code execution or direct data exfiltration.

Affected Systems

The vulnerability impacts all versions of the PHP League’s Flysystem library released before 3.35.3. Any PHP application that uses Flysystem through any adapter without updating to the 3.35.3 release or later is affected.

Risk and Exploitability

The CVSS score of 3.5 reflects a low‑severity vulnerability. No EPSS data is available. The vulnerability is not listed in the CISA KEV catalog. Based on the CVE description, exploitation requires an attacker to have write access to the Flysystem instance and to supply a path containing malformed UTF‑8. The CVE data does not mention any network‑exposed entry points, so the flaw is not remotely reachable. Exploitation therefore leads to misleading file listings but does not directly compromise system integrity, confidentiality, or availability.

Generated by OpenCVE AI on September 30, 2026 at 01:35 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Flysystem to version 3.35.3 or later.
  • If an upgrade cannot be performed immediately, validate and reject file paths that contain malformed UTF‑8 or explicit control characters before passing them to Filesystem::write().
  • As an interim workaround, disable the default WhitespacePathNormalizer or replace it with a custom normalizer that correctly checks for control characters and malformed UTF‑8.

Generated by OpenCVE AI on September 30, 2026 at 01:35 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-cxf4-7mrp-vvpr Flysystem: WhitespacePathNormalizer's control-character (CorruptedPathDetected) check is bypassed by malformed UTF-8 in the path, affecting every adapter
History

Thu, 01 Oct 2026 07:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 29 Sep 2026 17:45:00 +0000

Type Values Removed Values Added
First Time appeared Thephpleague
Thephpleague flysystem
Vendors & Products Thephpleague
Thephpleague flysystem

Tue, 29 Sep 2026 15:45:00 +0000

Type Values Removed Values Added
Description Flysystem is an open source file storage library for PHP. Prior to 3.35.3, the default WhitespacePathNormalizer in src/WhitespacePathNormalizer.php used by Filesystem across adapters calls preg_match with the u modifier and treats both false and 0 as falsy. A path containing malformed UTF-8 causes PCRE to return false, so paths that also contain control characters bypass CorruptedPathDetected::forPath() in normalizePath(). Filesystem::write() can store such names and Filesystem::listContents() can return the raw ANSI escape sequences, allowing hidden or spoofed terminal file listings when an administrator displays them. This issue is fixed in version 3.35.3.
Title Flysystem: WhitespacePathNormalizer's control-character (CorruptedPathDetected) check is bypassed by malformed UTF-8 in the path, affecting every adapter
Weaknesses CWE-150
References
Metrics cvssV3_1

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


Subscriptions

Thephpleague Flysystem
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-29T16:02:04.360Z

Reserved: 2026-09-29T14:18:02.920Z

Link: CVE-2026-102601

cve-icon Vulnrichment

Updated: 2026-09-29T16:01:37.568Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-29T16:17:06.343

Modified: 2026-09-30T19:38:27.293

Link: CVE-2026-102601

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-30T01:45:19Z

Weaknesses
  • CWE-150

    Improper Neutralization of Escape, Meta, or Control Sequences